Something went wrong. Try again.
Monorepo for Aesthetic.Computer aesthetic.computer
Something went wrong. Try again.
JavaScript
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253// keep-status.mjs — Lightweight polling endpoint for keep job progress.//// GET /api/keep-status?jobId=xxx// GET /api/keep-status?piece=xxx&wallet=tz1xxx//// Returns current job state from MongoDB. ~100ms response time.// Client polls every 2-3s to track preparation progress.
import { getJobById, getJob, formatJobForClient } from "../../backend/keep-job.mjs";
const CORS_HEADERS = { "Access-Control-Allow-Origin": "*", "Access-Control-Allow-Headers": "Content-Type, Authorization", "Content-Type": "application/json", "Cache-Control": "no-cache",};
function jsonResponse(statusCode, body) { return { statusCode, headers: CORS_HEADERS, body: JSON.stringify(body) };}
export const handler = async (event) => { if (event.httpMethod === "OPTIONS") { return { statusCode: 200, headers: CORS_HEADERS, body: "" }; }
if (event.httpMethod !== "GET") { return jsonResponse(405, { error: "Method not allowed" }); }
const params = event.queryStringParameters || {}; let job;
if (params.jobId) { try { job = await getJobById(params.jobId); } catch { return jsonResponse(400, { error: "Invalid jobId" }); } } else if (params.piece && params.wallet) { const piece = params.piece.replace(/^\$/, "").trim(); job = await getJob(piece, params.wallet); } else { return jsonResponse(400, { error: "Provide jobId or piece+wallet" }); }
if (!job) { return jsonResponse(404, { error: "Job not found" }); }
return jsonResponse(200, formatJobForClient(job));};