blob: c35e9b48abfa74409f5d5bfa7d34a08c316a65ac (
plain) (
blame)
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
|
import { NextRequest, NextResponse } from "next/server";
import { Redis } from "@upstash/redis";
import { generateId } from "pkg/id";
type Request = {
encrypted: string;
ttl?: number;
reads: number;
iv: string;
};
const redis = Redis.fromEnv();
export default async function handler(req: NextRequest) {
const { encrypted, ttl, reads, iv } = (await req.json()) as Request;
const id = generateId();
const key = ["envshare", id].join(":");
const tx = redis.multi();
tx.hset(key, {
remainingReads: reads > 0 ? reads : null,
encrypted,
iv,
});
if (ttl) {
tx.expire(key, ttl);
}
tx.incr("envshare:metrics:writes");
await tx.exec();
return NextResponse.json({ id });
}
export const config = {
runtime: "edge",
};
|