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 68 | 44x 44x 23x 44x 28x 44x 12x 44x 44x 44x 73x 73x 33x 11x 44x 44x | import {
getScriptDownloadPath,
getGetResultPath,
IntegrationEnv,
getStatusPagePath,
isScriptDownloadPathSet,
isGetResultPathSet,
} from './env'
import { handleDownloadScript, handleIngressAPI, handleStatusPage } from './handlers'
import { handleApiRequest } from './handlers/handleApiRequest'
import { createRoute } from './utils'
export type Route = {
pathPattern: RegExp
handler: (
request: Request,
env: IntegrationEnv,
routeMatchArray: RegExpMatchArray | undefined
) => Response | Promise<Response>
}
function createRoutes(env: IntegrationEnv): Route[] {
const routes: Route[] = []
if (isScriptDownloadPathSet(env)) {
routes.push({
pathPattern: createRoute(getScriptDownloadPath(env)),
handler: handleDownloadScript,
})
}
if (isGetResultPathSet(env)) {
routes.push({
pathPattern: createRoute(getGetResultPath(env)),
handler: handleIngressAPI,
})
}
routes.push({
pathPattern: createRoute(getStatusPagePath()),
handler: (request, env) => handleStatusPage(request, env),
})
return routes
}
export function handleRequestWithRoutes(
request: Request,
env: IntegrationEnv,
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 handleApiRequest(request, env, url.pathname)
}
export async function handleReq(request: Request, env: IntegrationEnv): Promise<Response> {
const routes = createRoutes(env)
return handleRequestWithRoutes(request, env, routes)
}
|