blob: 3a584fbbdd19036137c7eea0f2e09176c800fb36 (
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
|
import { Redis } from "@upstash/redis";
export const runtime = "edge";
const redis = new Redis({
url: process.env.KV_REST_API_URL!,
token: process.env.KV_REST_API_TOKEN!,
});
// /api/fcm?topic=<topic>&token=<fcm_token>&action=subscribe|unsubscribe
export async function GET(req: Request) {
const { searchParams } = new URL(req.url);
const topic = searchParams.get("topic");
const token = searchParams.get("token");
const action = searchParams.get("action"); // "subscribe" | "unsubscribe"
if (!topic || !token || !action) {
return new Response(JSON.stringify({ error: "Missing params" }), { status: 400 });
}
const key = `fcm-${topic}`;
if (action === "subscribe") {
await redis.sadd(key, token);
} else if (action === "unsubscribe") {
await redis.srem(key, token);
} else {
return new Response(JSON.stringify({ error: "Invalid action" }), { status: 400 });
}
return new Response(JSON.stringify({ success: true }), { status: 200 });
}
|