somod-http-extension
Version:
SOMOD middleware to intercept and validate Lambda event for AWS APIGateway
31 lines (30 loc) • 1.03 kB
JavaScript
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);
}
};
}
}