feat: imageProxy

This commit is contained in:
TrèsAbhi committed 2026-01-11 11:51:02 -06:00
1 parent 6f47f5cc99
commit 1598de9f5f
5 files changed
+29 -16

No files matched your search

@@ -0,0 +1,23 @@
import sharp from "sharp";
export async function imageProxy(url: string) {
if (import.meta.env.DEV) {
return Response.redirect(url);
}
let response: Response;
try {
response = await fetch(url);
} catch (error) {
console.warn(`Failed to fetch image proxy ${url}:`, error);
return new Response(null, { status: 404 });
}
const buffer = await response.arrayBuffer();
const image = sharp(buffer);
const webp = await image.webp().toBuffer();
const array = new Uint8Array(webp);
return new Response(array);
}
@@ -1,5 +1,6 @@
import type { APIContext, GetStaticPaths } from "astro";
import { api } from "../../../core/api/dynamic";
import { imageProxy } from "../../../core/api/imageProxy";
export const getStaticPaths = (async () => {
const avatars = await api.avatars();
@@ -16,12 +17,5 @@ export async function GET({ params }: APIContext<never, { id: string }>) {
const avatar = await api.avatar(params.id);
const profileAvatar = avatar.ProfileAvatar();
if (import.meta.env.DEV) {
return Response.redirect(profileAvatar.avatar);
}
const response = await fetch(profileAvatar.avatar);
const buffer = await response.arrayBuffer();
return new Response(buffer);
return await imageProxy(profileAvatar.avatar);
}
@@ -1,5 +1,6 @@
import type { APIContext, GetStaticPaths } from "astro";
import { api } from "../../../core/api/dynamic";
import { imageProxy } from "../../../core/api/imageProxy";
export const getStaticPaths = (async () => {
const backgrounds = await api.backgrounds();
@@ -16,12 +17,5 @@ export async function GET({ params }: APIContext<never, { id: string }>) {
const avatar = await api.background(params.id);
const profileBackground = avatar.ProfileBackground();
if (import.meta.env.DEV) {
return Response.redirect(profileBackground.background);
}
const response = await fetch(profileBackground.background);
const buffer = await response.arrayBuffer();
return new Response(buffer);
return await imageProxy(profileBackground.background);
}