| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273 |
- 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 = () =>
- `https://api.cloudflare.com/client/v4/accounts/${serverConfig.cloudflareAccountId}/storage/kv/namespaces/${serverConfig.cloudflareKVNamespaceId}`;
- const storeHeaders = () => ({
- Authorization: `Bearer ${serverConfig.cloudflareKVApiKey}`,
- });
- if (req.method === "POST") {
- const clonedBody = await req.text();
- const hashedCode = md5.hash(clonedBody).trim();
- const body: {
- key: string;
- value: string;
- expiration_ttl?: number;
- } = {
- key: hashedCode,
- value: clonedBody,
- };
- try {
- const ttl = parseInt(serverConfig.cloudflareKVTTL as string);
- if (ttl > 60) {
- body["expiration_ttl"] = ttl;
- }
- } catch (e) {
- console.error(e);
- }
- const res = await fetch(`${storeUrl()}/bulk`, {
- headers: {
- ...storeHeaders(),
- "Content-Type": "application/json",
- },
- method: "PUT",
- body: JSON.stringify([body]),
- });
- 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()}/values/${id}`, {
- 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";
|