UNPKG

somod-http-extension

Version:

SOMOD middleware to intercept and validate Lambda event for AWS APIGateway

31 lines (30 loc) 1.03 kB
import { MIDDLEWARE_CONTEXT_KEY } from "./constants"; export class RouteBuilder { routes = {}; add(route, method, routeHandler) { if (this.routes[route] === undefined) { this.routes[route] = {}; } this.routes[route][method] = routeHandler; return this; } getHandler() { // eslint-disable-next-line @typescript-eslint/no-this-alias const that = this; return async (event) => { const request = event.somodMiddlewareContext.get(MIDDLEWARE_CONTEXT_KEY); const handler = that.routes[request.route]?.[request.method]; if (handler === undefined) { return { statusCode: 404, body: JSON.stringify({ message: `No route handler defined for ${request.method} ${request.route}` }) }; } else { return await handler(request, event); } }; } }