From 4516c98c09ff775892707c3f2b61c857dd82707d Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 14 Jul 2023 12:27:39 -0300 Subject: handle special characters in URLs more carefully --- src/util/urls.js | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) (limited to 'src/util/urls.js') diff --git a/src/util/urls.js b/src/util/urls.js index c2119b8d..ad912908 100644 --- a/src/util/urls.js +++ b/src/util/urls.js @@ -79,16 +79,23 @@ export function generateURLs(urlSpec) { ); const toHelper = - (delimiterMode) => + ({device}) => (key, ...args) => { const { - value: {[delimiterMode]: template}, + value: { + [device ? 'device' : 'posix']: template, + }, } = getValueForFullKey(relative, key); let missing = 0; let result = template.replaceAll(/<([0-9]+)>/g, (match, n) => { if (n < args.length) { - return args[n]; + const value = args[n]; + if (device) { + return value; + } else { + return encodeURIComponent(value); + } } else { missing++; } @@ -106,8 +113,8 @@ export function generateURLs(urlSpec) { }; return { - to: toHelper('posix'), - toDevice: toHelper('device'), + to: toHelper({device: false}), + toDevice: toHelper({device: true}), }; }; -- cgit 1.3.0-6-gf8a5 From d3315efaf0cfb481fa32a8ea1739431f32aa1a98 Mon Sep 17 00:00:00 2001 From: "(quasar) nebula" Date: Fri, 14 Jul 2023 12:37:17 -0300 Subject: never encode slashes in URLs --- src/util/urls.js | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/util/urls.js') diff --git a/src/util/urls.js b/src/util/urls.js index ad912908..4d099acd 100644 --- a/src/util/urls.js +++ b/src/util/urls.js @@ -94,7 +94,9 @@ export function generateURLs(urlSpec) { if (device) { return value; } else { - return encodeURIComponent(value); + let encoded = encodeURIComponent(value); + encoded = encoded.replaceAll('%2F', '/'); + return encoded; } } else { missing++; -- cgit 1.3.0-6-gf8a5