Skip to content

Commit 1343dc7

Browse files
refactor: move complete URL parsing logic into ParseUrlParams method
1 parent b3407d6 commit 1343dc7

1 file changed

Lines changed: 22 additions & 17 deletions

File tree

src/Sitecore.AspNetCore.SDK.RenderingEngine/Extensions/SitecoreFieldExtensions.cs

Lines changed: 22 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -154,14 +154,7 @@ private static string GetSitecoreMediaUriWithPreservation(string urlStr, object?
154154

155155
// Parse existing query parameters and build merged parameters dictionary
156156
Dictionary<string, object?> mergedParams = new Dictionary<string, object?>(StringComparer.OrdinalIgnoreCase);
157-
if (url.Contains('?'))
158-
{
159-
string[] parts = url.Split('?', 2);
160-
url = parts[0];
161-
string queryString = parts[1];
162-
163-
ParseUrlParams(queryString, mergedParams);
164-
}
157+
url = ParseUrlParams(url, mergedParams);
165158

166159
// Add new parameters (these will override existing ones)
167160
AddParametersToResult(mergedParams, parameters, skipNullValues: true);
@@ -181,21 +174,33 @@ private static string GetSitecoreMediaUriWithPreservation(string urlStr, object?
181174
/// <summary>
182175
/// Parses URL query string parameters and adds them to the provided dictionary.
183176
/// </summary>
184-
/// <param name="queryString">The query string to parse.</param>
177+
/// <param name="url">The full URL with potential query parameters.</param>
185178
/// <param name="parameters">The dictionary to add parsed parameters to.</param>
186-
private static void ParseUrlParams(string queryString, Dictionary<string, object?> parameters)
179+
/// <returns>The URL without query parameters.</returns>
180+
private static string ParseUrlParams(string url, Dictionary<string, object?> parameters)
187181
{
188-
string[] paramPairs = queryString.Split('&');
189-
foreach (string paramPair in paramPairs)
182+
if (url.Contains('?'))
190183
{
191-
string[] keyValue = paramPair.Split('=', 2);
192-
if (keyValue.Length == 2)
184+
string[] parts = url.Split('?', 2);
185+
string cleanUrl = parts[0];
186+
string queryString = parts[1];
187+
188+
string[] paramPairs = queryString.Split('&');
189+
foreach (string paramPair in paramPairs)
193190
{
194-
string key = HttpUtility.UrlDecode(keyValue[0]);
195-
string value = HttpUtility.UrlDecode(keyValue[1]);
196-
parameters[key] = value;
191+
string[] keyValue = paramPair.Split('=', 2);
192+
if (keyValue.Length == 2)
193+
{
194+
string key = HttpUtility.UrlDecode(keyValue[0]);
195+
string value = HttpUtility.UrlDecode(keyValue[1]);
196+
parameters[key] = value;
197+
}
197198
}
199+
200+
return cleanUrl;
198201
}
202+
203+
return url;
199204
}
200205

201206
/// <summary>

0 commit comments

Comments
 (0)