Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import { NextFunction, Request, Response } from "express";
- export function customDomainAdaptorMiddleware(req: Request, res: Response, next: NextFunction) {
- const apigatewayHeader = req.headers["x-apigateway-event"] as string|undefined;
- if (apigatewayHeader === undefined) {
- next();
- return;
- }
- const event = JSON.parse(decodeURIComponent(apigatewayHeader));
- const params = event.pathParameters || {};
- const interprolatedResource = Object.keys(params)
- .reduce((acc, k) => acc.replace("{" + k + "}", params[k]), event.resource);
- if (shouldInterprolateUrl(apigatewayHeader)) {
- req.url = req.originalUrl = interprolatedResource;
- }
- next();
- }
- function shouldInterprolateUrl(apigatewayHeader: string): boolean {
- const event = JSON.parse(decodeURIComponent(apigatewayHeader));
- const params = event.pathParameters || {};
- const interprolatedResource = Object.keys(params)
- .reduce((acc, k) => acc.replace("{" + k + "}", params[k]), event.resource);
- if (!event.path) {
- return false;
- }
- if (!interprolatedResource) {
- return false;
- }
- if (event.path === interprolatedResource) {
- return false;
- }
- return true;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement