aboutsummaryrefslogtreecommitdiff
path: root/src/worker.ts
diff options
context:
space:
mode:
authorFuwn <[email protected]>2023-10-17 17:26:16 -0700
committerFuwn <[email protected]>2023-10-17 17:26:16 -0700
commit77b9264395eb543e604d19bc3068f40f22f61696 (patch)
treee92a1aa3bf75e468a62ca76e627e59ada54f2672 /src/worker.ts
downloadshinobu-77b9264395eb543e604d19bc3068f40f22f61696.tar.xz
shinobu-77b9264395eb543e604d19bc3068f40f22f61696.zip
feat: initial release
Diffstat (limited to 'src/worker.ts')
-rw-r--r--src/worker.ts46
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),
+};