|
import { NextRequest } from "next/server"; |
|
import { createClient } from "@vercel/kv"; |
|
|
|
const kv = |
|
process.env?.KV_REST_API_URL && process.env?.KV_REST_API_TOKEN |
|
? createClient({ |
|
url: process.env.KV_REST_API_URL, |
|
token: process.env.KV_REST_API_TOKEN, |
|
}) |
|
: null; |
|
|
|
export async function POST(req: NextRequest) { |
|
const { key, image } = await req.json(); |
|
|
|
if (!kv || !key || !image) { |
|
return new Response("", { |
|
status: 200, |
|
}); |
|
} |
|
|
|
const slug = key.replace(/[^a-zA-Z0-9]/g, "_"); |
|
|
|
await kv.set(slug, image); |
|
|
|
return new Response("", { |
|
status: 200, |
|
}); |
|
} |
|
|
|
export async function GET(req: NextRequest) { |
|
const key = req.nextUrl.searchParams.get("share"); |
|
|
|
if (!kv || !key) { |
|
return new Response("", { |
|
status: 200, |
|
}); |
|
} |
|
const slug = key.replace(/[^a-zA-Z0-9]/g, "_"); |
|
const image = await kv.get<string>(slug); |
|
|
|
if (!image) { |
|
return new Response("", { |
|
status: 200, |
|
}); |
|
} |
|
|
|
return new Response(image, { |
|
status: 200, |
|
}); |
|
} |
|
|