import {HTTPKernel} from "../HTTPKernel"; import {Request} from "../../lifecycle/Request"; import {ActivatedRoute} from "../../routing/ActivatedRoute"; import {ResponseObject} from "../../routing/Route"; import {http} from "../../response/HTTPErrorResponseFactory"; import {HTTPStatus} from "@extollo/util"; import {AbstractResolvedRouteHandlerHTTPModule} from "./AbstractResolvedRouteHandlerHTTPModule"; export class ExecuteResolvedRouteHandlerHTTPModule extends AbstractResolvedRouteHandlerHTTPModule { public static register(kernel: HTTPKernel) { kernel.register(this).core() } public async apply(request: Request) { if ( request.hasInstance(ActivatedRoute) ) { const route = request.make(ActivatedRoute) let object: ResponseObject = await route.handler(request) await this.applyResponseObject(object, request) } else { await http(HTTPStatus.NOT_FOUND).write(request) request.response.blockingWriteback(true) } return request } }