From e91ebc77bb45cb224cd1bc0a26ae019af6712f6d Mon Sep 17 00:00:00 2001 From: Dennis Eichhorn Date: Thu, 26 Nov 2020 20:50:18 +0100 Subject: [PATCH] fix todos/move to todo list --- Uri/UriFactory.js | 43 ++++++++++++++++++++++--------------------- 1 file changed, 22 insertions(+), 21 deletions(-) diff --git a/Uri/UriFactory.js b/Uri/UriFactory.js index 72d3695..d584c37 100644 --- a/Uri/UriFactory.js +++ b/Uri/UriFactory.js @@ -126,32 +126,33 @@ export class UriFactory */ static unique (url) { - // unique queries - const parts = url.replace(/\?/g, '&').split('&'), - full = parts[0]; + const parsed = HttpUri.parseUrl(url); + if (parsed.hasOwnProperty('query')) { + // unique queries + const parts = parsed.query.replace(/\?/g, '&').split('&'), + full = parts[0]; - // @todo: handle fragment + if (parts.length > 1) { + parts.shift(); - if (parts.length > 1) { - parts.shift(); + let comps = {}, + spl = null, + length = parts.length; - let comps = {}, - spl = null, - length = parts.length; - - for (let i = 0; i < length; ++i) { - spl = parts[i].split('='); - comps[spl[0]] = spl[1]; - } - - let pars = []; - for (const a in comps) { - if (comps.hasOwnProperty(a) && comps[a] !== '' && comps[a] !== null) { - pars.push(a + '=' + (comps[a].includes('%') ? comps[a] : encodeURIComponent(comps[a]))); + for (let i = 0; i < length; ++i) { + spl = parts[i].split('='); + comps[spl[0]] = spl[1]; } - } - url = full + '?' + pars.join('&'); + let pars = []; + for (const a in comps) { + if (comps.hasOwnProperty(a) && comps[a] !== '' && comps[a] !== null) { + pars.push(a + '=' + (comps[a].includes('%') ? comps[a] : encodeURIComponent(comps[a]))); + } + } + + url = full + '?' + pars.join('&'); + } } // unique fragments