From bd51fc05e320b07eb8dc6e69a4c4700d8ac114ed Mon Sep 17 00:00:00 2001 From: TheSavageTeddy <51810476+TheSavageTeddy@users.noreply.github.com> Date: Sun, 27 Nov 2022 12:46:02 +0800 Subject: [PATCH] did encodeAllSpecialChars programmatically --- src/core/operations/URLEncode.mjs | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/src/core/operations/URLEncode.mjs b/src/core/operations/URLEncode.mjs index 43426f01..f326d85f 100644 --- a/src/core/operations/URLEncode.mjs +++ b/src/core/operations/URLEncode.mjs @@ -65,18 +65,16 @@ class URLEncode extends Operation { * @returns {string} */ encodeAllSpecialChars (str) { - // TODO Do this programmatically - return encodeURIComponent(str) - .replace(/!/g, "%21") - .replace(/#/g, "%23") - .replace(/'/g, "%27") - .replace(/\(/g, "%28") - .replace(/\)/g, "%29") - .replace(/\*/g, "%2A") - .replace(/-/g, "%2D") - .replace(/\./g, "%2E") - .replace(/_/g, "%5F") - .replace(/~/g, "%7E"); + const specialChars = "!#'()*-._~"; + let encoded = ""; + for (var char of str) { + if (encodeURIComponent(char) === char && specialChars.includes(char)){ + encoded += "%" + this.frontPad(char.charCodeAt(0).toString(16).toUpperCase(), 2, "0"); + } else { + encoded += encodeURIComponent(char); + } + } + return encoded; } /**