From 3a9bf0b80c6824ee41f22280743e50d640fdc32d Mon Sep 17 00:00:00 2001 From: leMicin Date: Tue, 4 Nov 2025 18:21:49 -0500 Subject: [PATCH] Fixed issues with some specific characters inside the Url. Custom scripts will need to update the previous xurl_ logic. --- .../Extensions/StringExtensions.cs | 55 ++++--------------- 1 file changed, 12 insertions(+), 43 deletions(-) diff --git a/src/Sidekick.Common/Extensions/StringExtensions.cs b/src/Sidekick.Common/Extensions/StringExtensions.cs index b7c079f4..89883694 100644 --- a/src/Sidekick.Common/Extensions/StringExtensions.cs +++ b/src/Sidekick.Common/Extensions/StringExtensions.cs @@ -34,32 +34,6 @@ public static string DecodeBase64(this string input) return Encoding.UTF8.GetString(Convert.FromBase64String(input)); } - /// - /// Encode a string for URL transfer - /// - public static string EncodeUrl(this string input) - { - if (string.IsNullOrEmpty(input)) - { - return input; - } - - return HttpUtility.UrlEncode(input); - } - - /// - /// Decodes a Url Encodeded String - /// - public static string DecodeUrl(this string input) - { - if (string.IsNullOrEmpty(input)) - { - return input; - } - - return HttpUtility.UrlDecode(input); - } - /// /// Encode a string in Base64 for URL transfer /// @@ -70,12 +44,11 @@ public static string DecodeUrl(this string input) return null; } - if (input.HasInvalidUrlCharacters()) - { - return $"xurl_{input.EncodeBase64().EncodeUrl()}"; - } - - return input; + var url = input.EncodeBase64(); + url = url.Replace('+', '-') + .Replace('/', '_') + .Replace('=', '.'); + return $"base64_{url}"; } /// @@ -88,21 +61,17 @@ public static string DecodeUrl(this string input) return null; } - if (!input.StartsWith("xurl_")) + if (!input.StartsWith("base64_")) { return input; } - var substr = input.Substring(5); - return DecodeUrl(substr).DecodeBase64(); - } - - /// - /// Indicates if the string has invalid characters - /// - public static bool HasInvalidUrlCharacters(this string input) - { - return input.EncodeUrl() != input; + var url = input.Substring(7) + .Replace('-', '+') + .Replace('_', '/') + .Replace('.', '='); + url = url.DecodeBase64(); + return url; } public static int GetDeterministicHashCode(this string str)