import type { APIRoute } from "astro"; import { createCap } from "@lib/CapAdapter"; export const prerender = false; export const POST: APIRoute = async (context) => { if (!context.session) { return new Response( JSON.stringify({ success: false, error: "Session unavailable." }), { status: 500 }, ); } let body: { token?: unknown; solutions?: unknown }; try { body = await context.request.json(); } catch { return new Response(JSON.stringify({ success: false }), { status: 400 }); } const { token, solutions } = body ?? {}; if ( typeof token !== "string" || token.length > 256 || !Array.isArray(solutions) || solutions.length > 128 || !solutions.every((s) => typeof s === "number") ) { return new Response(JSON.stringify({ success: false }), { status: 400 }); } const cap = createCap(context.session); return new Response( JSON.stringify(await cap.redeemChallenge({ token, solutions })), { status: 200 }, ); };