import { handleBadge } from "./badge"; import { handleCacheApi } from "./cache-api"; import { jobTokenAccess } from "./job-token"; import { handleOidcRoutes } from "./oidc"; import { serveActionArchive } from "./actions/serve"; import { serveActionImage } from "./actions/serve-image"; /** Worker-level Actions endpoints: job cache, action archives and images, OIDC token issuance and discovery, and status badges. */ export async function handleActionsRoutes(request: Request, url: URL): Promise { if (url.pathname === "/api/actions/cache") { const access = await jobTokenAccess(request); if (!access) return Response.json({ error: "invalid job token" }, { status: 401 }); return handleCacheApi(request, url, access); } if (url.pathname === "/api/actions/archive") { const access = await jobTokenAccess(request); if (!access) return Response.json({ error: "invalid job token" }, { status: 401 }); return serveActionArchive(access.jobId, url.searchParams.get("key") ?? ""); } if (url.pathname === "/api/actions/image") { const access = await jobTokenAccess(request); if (!access) return Response.json({ error: "invalid job token" }, { status: 401 }); return serveActionImage(access.jobId, url.searchParams.get("digest") ?? ""); } const oidc = await handleOidcRoutes(request, url); if (oidc) return oidc; return handleBadge(request, url); }