From 5c4a3da290eb8821f71da1a64b6d61540866fe8b Mon Sep 17 00:00:00 2001 From: Evgeni Pandurski Date: Fri, 10 Mar 2023 01:30:58 +0200 Subject: [PATCH] Implement addVersionParam() --- server.js | 17 +++++++++++++++-- 1 file changed, 15 insertions(+), 2 deletions(-) diff --git a/server.js b/server.js index 3b9cca5..30bdb0e 100644 --- a/server.js +++ b/server.js @@ -330,6 +330,19 @@ function parseEnumerateResponse(statusCode, contentType, body) { } +// Return a new path, which has `v=${version}` correctly added to `path`. +function addVersionParam(path, version) { + const param = `v=${version}` + if (path.includes('?')) { + if (path.endsWith('?')) { + return `${path}${param}` + } + return `${path}&${param}` + } + return `${path}?${param}` +} + + // Loads the servers configuration for the proxy server form a file. Returns // `undefined` if the configuration file can not be read, or it contains an // invalid configuration. @@ -460,10 +473,10 @@ proxy.on('proxyRes', (proxyRes, req, res) => { const queryString = path.split('?', 2)[1] ?? '' const query = querystring.parse(queryString, {maxKeys: 1}) const v = query['v'] ?? configVersion - data.uri += `?v=${v}` + data.uri = addVersionParam(data.uri, v) if (v === configVersion && configVersion === serversConfig?.version) { if (typeof data.next === 'string') { - data.next += `?v=${v}` + data.next = addVersionParam(data.next, v) } else { const url = serversConfig.serversSuccessors.get(res[FORWARD_URL]) const minId = serversConfig.serversMinIds.get(url)