1import { createFileRoute } from "@tanstack/react-router";
2import { env } from "../env.ts";
3
4const readKey = (request: Request) =>
5 new URL(request.url).searchParams.get("key");
6
7export const Route = createFileRoute("/api/r2")({
8 server: {
9 handlers: {
10 GET: async ({ request }) => {
11 const key = readKey(request);
12 if (!key) {
13 return Response.json(
14 { error: "missing key", marker: env.DEV_MARKER, value: null },
15 { status: 400 },
16 );
17 }
18
19 const object = await env.BUCKET.get(key);
20 return Response.json({
21 marker: env.DEV_MARKER,
22 value: object ? await object.text() : null,
23 });
24 },
25 PUT: async ({ request }) => {
26 const key = readKey(request);
27 if (!key) {
28 return Response.json(
29 { error: "missing key", marker: env.DEV_MARKER },
30 { status: 400 },
31 );
32 }
33
34 await env.BUCKET.put(key, await request.text(), {
35 httpMetadata: {
36 contentType: request.headers.get("content-type") ?? "text/plain",
37 },
38 });
39 return Response.json({ marker: env.DEV_MARKER, ok: true });
40 },
41 },
42 },
43});