#!/usr/bin/env -S deno run --allow-env --allow-net --allow-run import { getRequiredEnv, getStdout, validateIdentifier } from "@liz-ci/utils"; const getRequestLogger = (req: Request) => { const id = crypto.randomUUID(); const url = new URL(req.url); const method = req.method; const getPrefix = () => `[${new Date().toISOString()}] Request [${id}] @ [${url}] -X [${method}] |`; return { log: (...args: unknown[]) => console.log(getPrefix(), ...args), error: (...args: unknown[]) => console.error(getPrefix(), ...args), }; }; const addr = { port: 9000, hostname: "0.0.0.0" }; Deno.serve(addr, async (req) => { const logger = getRequestLogger(req); logger.log("Request initiated"); try { const { pathname } = new URL(req.url); if (pathname === "/health") { try { getRequiredEnv("LAMINAR_HOST"); await getStdout(["laminarc", "show-jobs"]); return new Response("think im healthy!! lets get to work.\n", { status: 200, }); } catch (e) { logger.error(e); return new Response("i need to eat more vegetables -.-\n", { status: 500, }); } } if (req.method !== "POST") { return new Response("invalid method", { status: 405, }); } if (pathname === "/checkout_ci") { const { remote, rev, refname } = await req.json(); if (![remote, rev, refname].every(validateIdentifier)) { logger.log("invalid reqwest\n"); return new Response("invalid reqwest >:D\n", { status: 400, }); } const laminar = await getStdout([ "laminarc", "queue", "checkout_ci", `remote="${remote}"`, `rev="${rev}"`, `refname="${refname}"`, ]); logger.log(`successful queue :D\n` + laminar); return new Response(laminar, { status: 200, }); } return new Response("idk what that is bro :((\n", { status: 404 }); } catch (e) { logger.error("Uncaught exception", e); return new Response("womp womp D:\n", { status: 500 }); } finally { logger.log("Request finished."); } });