Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 | 4x 4x 4x 67x 67x 67x 67x 7x 67x 67x 67x 67x 4x 4x 4x 87x 87x 141x 141x 83x 4x 4x 67x 67x | import { getScriptDownloadPath, getGetResultPath, WorkerEnv, getStatusPagePath } from './env' import { handleDownloadScript, handleIngressAPI, handleStatusPage } from './handlers' import { createRoute } from './utils' export type Route = { pathPattern: RegExp handler: ( request: Request, env: WorkerEnv, routeMatchArray: RegExpMatchArray | undefined ) => Response | Promise<Response> } function createRoutes(env: WorkerEnv): Route[] { const routes: Route[] = [] const downloadScriptRoute: Route = { pathPattern: createRoute(getScriptDownloadPath(env)), handler: handleDownloadScript, } const ingressAPIRoute: Route = { pathPattern: createRoute(getGetResultPath(env)), handler: handleIngressAPI, } const statusRoute: Route = { pathPattern: createRoute(getStatusPagePath()), handler: (request, env) => handleStatusPage(request, env), } routes.push(downloadScriptRoute) routes.push(ingressAPIRoute) routes.push(statusRoute) return routes } function handleNoMatch(urlPathname: string): Response { const responseHeaders = new Headers({ 'content-type': 'application/json', }) return new Response(JSON.stringify({ error: `unmatched path ${urlPathname}` }), { status: 404, headers: responseHeaders, }) } export function handleRequestWithRoutes( request: Request, env: WorkerEnv, routes: Route[] ): Promise<Response> | Response { const url = new URL(request.url) for (const route of routes) { const matches = url.pathname.match(route.pathPattern) if (matches) { return route.handler(request, env, matches) } } return handleNoMatch(url.pathname) } export async function handleRequest(request: Request, env: WorkerEnv): Promise<Response> { const routes = createRoutes(env) return handleRequestWithRoutes(request, env, routes) } |