Files
buzz-sheet/app/api/presence/visitors/route.ts
T
gunshiz b5e6588958
CI / Verify (push) Successful in 1m28s
CI / Build immutable images and deploy (push) Successful in 2m2s
fix : reaible vistor count
2026-09-22 21:34:18 +07:00

29 lines
1009 B
TypeScript

import { errorResponse, readJson, requireSameOrigin } from "@/lib/security/http";
import { limitRequest, trustedClientAddress } from "@/lib/security/rate-limit";
import { connection } from "next/server";
import * as z from "zod";
import { updateVisitorPresence } from "@/lib/presence";
const inputSchema = z.strictObject({
tabId: z.string().uuid(),
browserId: z.string().uuid(),
guideId: z.string().uuid().nullable(),
active: z.boolean().default(true),
});
export async function POST(request: Request) {
await connection();
try {
requireSameOrigin(request);
await limitRequest("presence", trustedClientAddress(request.headers), 600);
const parsed = inputSchema.safeParse(await readJson(request, 1024));
if (!parsed.success) return Response.json({ error: "invalid-presence" }, { status: 400 });
return Response.json(await updateVisitorPresence(parsed.data), {
headers: { "Cache-Control": "no-store" },
});
} catch (cause) {
return errorResponse(cause);
}
}