From d910f8f5a46ab1f79489dcad75a14b1d360db0eb Mon Sep 17 00:00:00 2001 From: Merlin Beutlberger Date: Tue, 14 Apr 2020 14:06:29 +0200 Subject: [PATCH] proxyRewrite: Use new middlewareUtil module --- lib/middleware/MiddlewareManager.js | 3 ++- lib/middleware/proxyRewrite.js | 13 +++++++------ lib/proxyConfiguration.js | 1 + 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/lib/middleware/MiddlewareManager.js b/lib/middleware/MiddlewareManager.js index 3df04e99..e3486d6d 100644 --- a/lib/middleware/MiddlewareManager.js +++ b/lib/middleware/MiddlewareManager.js @@ -138,9 +138,10 @@ class MiddlewareManager { if (useProxy) { await this.addMiddleware("proxyRewrite", { wrapperCallback: ({middleware: proxyRewriteModule}) => { - return ({resources}) => { + return ({resources, middlewareUtil}) => { return proxyRewriteModule({ resources, + middlewareUtil, configuration: proxyConfig, cdnUrl: this.options.cdnUrl }); diff --git a/lib/middleware/proxyRewrite.js b/lib/middleware/proxyRewrite.js index 94397207..f159c824 100644 --- a/lib/middleware/proxyRewrite.js +++ b/lib/middleware/proxyRewrite.js @@ -1,14 +1,15 @@ const log = require("@ui5/logger").getLogger("server:middleware:proxyRewrite"); -function createMiddleware({resources, configuration, cdnUrl}) { +function createMiddleware({resources, middlewareUtil, configuration, cdnUrl}) { const rewriteRootPaths = configuration.rewriteRootPaths; const cacheBusterRegex = /~.*~[A-Z0-9]?\/?/; const preloadRegex = /^.*(?:Component-preload\.js|library-preload\.js|library-preload\.json)$/i; return function proxyRewrite(req, res, next) { + const pathname = middlewareUtil.getPathname(req); const rewriteApplicable = Object.keys(rewriteRootPaths).some((resourceRootPath) => { - return req.path.indexOf(resourceRootPath) !== -1; + return pathname.indexOf(resourceRootPath) !== -1; }); if (!rewriteApplicable) { @@ -17,15 +18,15 @@ function createMiddleware({resources, configuration, cdnUrl}) { return; } - log.verbose(`Normalizing ${req.path}...`); + log.verbose(`Normalizing ${pathname}...`); // Normalize URL - normalizeRequestPath(req.path) + normalizeRequestPath(pathname) .catch((err) => { - log.error(`Failed to normalize ${req.path}. Error ${err.message}`); + log.error(`Failed to normalize ${pathname}. Error ${err.message}`); return ""; }) .then((normalizedUrl) => { - req.url = req.url.replace(req.path, normalizedUrl); + req.url = req.url.replace(pathname, normalizedUrl); log.verbose(`Normalized ${req.originalUrl}`); log.verbose(` to ${req.url}`); // will be used for internal resolution handleSpecialRequests(req, res, next); diff --git a/lib/proxyConfiguration.js b/lib/proxyConfiguration.js index a7560e4a..f6c63bd1 100644 --- a/lib/proxyConfiguration.js +++ b/lib/proxyConfiguration.js @@ -44,6 +44,7 @@ async function getConfigurationForProject(tree) { if (project.specVersion !== "2.2a") { log.warn(`Project ${project.metadata.name} defines specification version ${project.specVersion}. ` + `Some proxy configuration features require projects to define specification version 2.2a`); + return; } log.verbose(`Using ABAP URI ${project.metadata.abapUri} from metadata of project ${project.metadata.name}`); let prefix = "";