File size: 1,024 Bytes
89682f8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
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,
  });
}