diff options
| author | Fuwn <[email protected]> | 2023-10-17 17:26:16 -0700 |
|---|---|---|
| committer | Fuwn <[email protected]> | 2023-10-17 17:26:16 -0700 |
| commit | 77b9264395eb543e604d19bc3068f40f22f61696 (patch) | |
| tree | e92a1aa3bf75e468a62ca76e627e59ada54f2672 /src/worker.ts | |
| download | shinobu-77b9264395eb543e604d19bc3068f40f22f61696.tar.xz shinobu-77b9264395eb543e604d19bc3068f40f22f61696.zip | |
feat: initial release
Diffstat (limited to 'src/worker.ts')
| -rw-r--r-- | src/worker.ts | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/src/worker.ts b/src/worker.ts new file mode 100644 index 0000000..d470b5f --- /dev/null +++ b/src/worker.ts @@ -0,0 +1,46 @@ +import { Router, error } from "itty-router"; + +const router = Router(); +// const cache: { [key: string]: { blob: Blob; ts: number } } = {}; + +const shinobu = async (): Promise<Blob> => { + // if (cache["shinobu"] && Date.now() - cache["shinobu"].ts < 1000) { + // return cache["shinobu"].blob; + // } + + const url = ( + (await (await fetch(`https://api.waifu.pics/sfw/shinobu`)).json()) as { + url: string; + } + ).url; + + const response = await fetch(url); + const blob = await response.blob(); + + // cache["shinobu"] = { + // blob, + // ts: Date.now(), + // }; + + return blob; +}; + +router + .get( + "/", + () => + new Response(`/\n + shinobu`) + ) + .get("/shinobu", async (_request) => { + let response = new Response(await shinobu()); + + response.headers.set("Cache-Control", "public, max-age=5, s-maxage=5"); + + return response; + }) + .all("*", () => error(404)); + +export default { + fetch: (request: Request) => router.handle(request).catch(error), +}; |