diff options
Diffstat (limited to 'packages/integrations/image/src/endpoint.ts')
-rw-r--r-- | packages/integrations/image/src/endpoint.ts | 55 |
1 files changed, 0 insertions, 55 deletions
diff --git a/packages/integrations/image/src/endpoint.ts b/packages/integrations/image/src/endpoint.ts deleted file mode 100644 index 5a8ca554b..000000000 --- a/packages/integrations/image/src/endpoint.ts +++ /dev/null @@ -1,55 +0,0 @@ -import type { APIRoute } from 'astro'; -import mime from 'mime'; -// @ts-expect-error -import loader from 'virtual:image-loader'; -import { etag } from './utils/etag.js'; -import { isRemoteImage } from './utils/paths.js'; - -async function loadRemoteImage(src: URL) { - try { - const res = await fetch(src); - - if (!res.ok) { - return undefined; - } - - return Buffer.from(await res.arrayBuffer()); - } catch (err: unknown) { - console.error(err); - return undefined; - } -} - -export const get: APIRoute = async ({ request }) => { - try { - const url = new URL(request.url); - const transform = loader.parseTransform(url.searchParams); - - let inputBuffer: Buffer | undefined = undefined; - - // TODO: handle config subpaths? - const sourceUrl = isRemoteImage(transform.src) - ? new URL(transform.src) - : new URL(transform.src, url.origin); - inputBuffer = await loadRemoteImage(sourceUrl); - - if (!inputBuffer) { - return new Response('Not Found', { status: 404 }); - } - - const { data, format } = await loader.transform(inputBuffer, transform); - - return new Response(data, { - status: 200, - headers: { - 'Content-Type': mime.getType(format) || '', - 'Cache-Control': 'public, max-age=31536000', - ETag: etag(data.toString()), - Date: new Date().toUTCString(), - }, - }); - } catch (err: unknown) { - console.error(err); - return new Response(`Server Error: ${err}`, { status: 500 }); - } -}; |