From f6321fc3249d83a0059ef47978ed101d3c75375f Mon Sep 17 00:00:00 2001 From: Travis Fischer Date: Wed, 2 Jun 2021 13:59:27 -0400 Subject: feat: import from notion2site repo --- src/resolve-request.js | 40 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 40 insertions(+) create mode 100644 src/resolve-request.js (limited to 'src/resolve-request.js') diff --git a/src/resolve-request.js b/src/resolve-request.js new file mode 100644 index 0000000..75f1f11 --- /dev/null +++ b/src/resolve-request.js @@ -0,0 +1,40 @@ +const notionImagePrefix = 'https://www.notion.so/image/' + +/** + * @param {*} event + * @param {*} request + */ +export async function resolveRequest(event, request) { + const requestUrl = new URL(request.url) + let originUri = decodeURIComponent(requestUrl.pathname.slice(1)) + + // special-case optimization for notion images coming from unsplash + if (originUri.startsWith(notionImagePrefix)) { + const imageUri = decodeURIComponent( + originUri.slice(notionImagePrefix.length) + ) + const imageUrl = new URL(imageUri) + + // adjust unsplash defaults to have a max width and intelligent format conversion + if (imageUrl.hostname === 'images.unsplash.com') { + const { searchParams } = imageUrl + + if (!searchParams.has('w') && !searchParams.has('fit')) { + imageUrl.searchParams.set('w', 1920) + imageUrl.searchParams.set('fit', 'max') + } + + if (!searchParams.has('auto')) { + imageUrl.searchParams.set('auto', 'format') + } + + originUri = `${notionImagePrefix}${encodeURIComponent( + imageUrl.toString() + )}` + } + } + + const originReq = new Request(originUri, request) + + return { originReq } +} -- cgit v1.2.3