export async function onRequestGet(context: RequestContext) { const attachment = (context.params.id as string[]).join("/"); const unsignedURL = `https://mediaproxy.carcrushers.cc/${attachment}?Expires=${( Math.round(Date.now() / 1000) + 1800 ).toString()}&KeyName=portal-media-linkgen`; 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.fromCharCode(...new Uint8Array(signature)), ) .replaceAll("+", "-") .replaceAll("/", "_") .replaceAll("=", "")}`, ); }