|
3 | 3 | using Microsoft.AspNetCore.Http;
|
4 | 4 | using Microsoft.AspNetCore.Http.Extensions;
|
5 | 5 | using Microsoft.AspNetCore.Routing;
|
| 6 | +using Microsoft.AspNetCore.WebUtilities; |
6 | 7 | using Microsoft.Net.Http.Headers;
|
7 | 8 |
|
8 | 9 | namespace Honeybadger.DotNetCore.NoticeHelpers;
|
@@ -71,17 +72,15 @@ public static Request Get(
|
71 | 72 | try
|
72 | 73 | {
|
73 | 74 | var uri = new Uri(url);
|
74 |
| - var queryParams = System.Web.HttpUtility.ParseQueryString(uri.Query); |
75 |
| - var filteredParams = new List<string>(); |
76 |
| - |
77 |
| - foreach (var key in queryParams.AllKeys) |
78 |
| - { |
79 |
| - if (key == null) continue; |
80 |
| - |
81 |
| - var paramValue = queryParams[key] ?? ""; |
82 |
| - var value = FilterValue(key, paramValue, filterKeys); |
83 |
| - filteredParams.Add($"{key}={Uri.EscapeDataString(value)}"); |
84 |
| - } |
| 75 | + var queryParams = QueryHelpers.ParseNullableQuery(uri.Query); |
| 76 | + var filteredParams = queryParams? |
| 77 | + .Select(kvp => |
| 78 | + { |
| 79 | + var key = kvp.Key; |
| 80 | + var value = FilterValue(key, kvp.Value, filterKeys); |
| 81 | + return $"{kvp.Key}={Uri.EscapeDataString(value)}"; |
| 82 | + }) |
| 83 | + .ToList() ?? new List<string>(); |
85 | 84 |
|
86 | 85 | var filteredQuery = filteredParams.Count > 0 ? "?" + string.Join("&", filteredParams) : "";
|
87 | 86 | return $"{uri.Scheme}://{uri.Authority}{uri.AbsolutePath}{filteredQuery}";
|
@@ -174,6 +173,7 @@ private static string FilterValue(string key, object value, string[] filterKeys)
|
174 | 173 |
|
175 | 174 | private static Dictionary<string, object>? GetParams(HttpContext? httpContext, string[]? filterKeys = null)
|
176 | 175 | {
|
| 176 | + // https://github.com/getsentry/sentry-dotnet/blob/6785f8e79d31b072a157a56ce1445ceb0244b628/src/Sentry/Extensibility/IRequestPayloadExtractor.cs#L6 |
177 | 177 | return null;
|
178 | 178 | }
|
179 | 179 |
|
|
0 commit comments