| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354 |
- import md5 from "spark-md5";
- import { NextRequest, NextResponse } from "next/server";
- import { getServerSideConfig } from "@/app/config/server";
- async function handle(req: NextRequest, res: NextResponse) {
- const serverConfig = getServerSideConfig();
- const storeUrl = (key: string) =>
- `https://api.cloudflare.com/client/v4/accounts/${serverConfig.cloudflareAccountId}/storage/kv/namespaces/${serverConfig.cloudflareKVNamespaceId}/values/${key}`;
- const storeHeaders = () => ({
- Authorization: `Bearer ${serverConfig.cloudflareKVApiKey}`,
- });
- if (req.method === "POST") {
- const clonedBody = await req.text();
- const hashedCode = md5.hash(clonedBody).trim();
- const res = await fetch(storeUrl(hashedCode), {
- headers: storeHeaders(),
- method: "PUT",
- body: clonedBody,
- });
- const result = await res.json();
- console.log("save data", result);
- if (result?.success) {
- return NextResponse.json(
- { code: 0, id: hashedCode, result },
- { status: res.status },
- );
- }
- return NextResponse.json(
- { error: true, msg: "Save data error" },
- { status: 400 },
- );
- }
- if (req.method === "GET") {
- const id = req?.nextUrl?.searchParams?.get("id");
- const res = await fetch(storeUrl(id as string), {
- headers: storeHeaders(),
- method: "GET",
- });
- return new Response(res.body, {
- status: res.status,
- statusText: res.statusText,
- headers: res.headers,
- });
- }
- return NextResponse.json(
- { error: true, msg: "Invalid request" },
- { status: 400 },
- );
- }
- export const POST = handle;
- export const GET = handle;
- export const runtime = "edge";
|