Advertisement
Guest User

Untitled

a guest
Jul 17th, 2019
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.21 KB | None | 0 0
  1. import { NextFunction, Request, Response } from "express";
  2.  
  3. export function customDomainAdaptorMiddleware(req: Request, res: Response, next: NextFunction) {
  4. const apigatewayHeader = req.headers["x-apigateway-event"] as string|undefined;
  5.  
  6. if (apigatewayHeader === undefined) {
  7. next();
  8. return;
  9. }
  10.  
  11. const event = JSON.parse(decodeURIComponent(apigatewayHeader));
  12. const params = event.pathParameters || {};
  13. const interprolatedResource = Object.keys(params)
  14. .reduce((acc, k) => acc.replace("{" + k + "}", params[k]), event.resource);
  15.  
  16. if (shouldInterprolateUrl(apigatewayHeader)) {
  17. req.url = req.originalUrl = interprolatedResource;
  18. }
  19.  
  20. next();
  21. }
  22.  
  23. function shouldInterprolateUrl(apigatewayHeader: string): boolean {
  24. const event = JSON.parse(decodeURIComponent(apigatewayHeader));
  25. const params = event.pathParameters || {};
  26. const interprolatedResource = Object.keys(params)
  27. .reduce((acc, k) => acc.replace("{" + k + "}", params[k]), event.resource);
  28.  
  29. if (!event.path) {
  30. return false;
  31. }
  32. if (!interprolatedResource) {
  33. return false;
  34. }
  35. if (event.path === interprolatedResource) {
  36. return false;
  37. }
  38. return true;
  39. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement