export async function onRequestGet(context: RequestContext) { const attachment = context.params.id as string; const unsignedURL = `https://mediaproxy.carcrushers.cc/${attachment}?Expires=${( Math.round(Date.now() / 1000) + 1800 ).toString()}`; const signingKey = await crypto.subtle.importKey( "raw", Uint8Array.from(atob(context.env.URL_SIGNING_KEY), (c) => c.charCodeAt(0)), { hash: "SHA-1", name: "HMAC" }, false, ["sign"], ); const signature = await crypto.subtle.sign( "HMAC", signingKey, new TextEncoder().encode(unsignedURL), ); return Response.redirect( `${unsignedURL}&Signature=${btoa( String.fromCodePoint(...new Uint8Array(signature)), ) .replaceAll("+", "-") .replaceAll("/", "_") .replaceAll("=", "")}`, ); }