Skip to content

Commit 7a1447b

Browse files
committed
refactor: simplify query parameter parsing in RequestFactory by using QueryHelpers
1 parent c892481 commit 7a1447b

File tree

2 files changed

+12
-12
lines changed

2 files changed

+12
-12
lines changed

src/Honeybadger.DotNetCore/NoticeHelpers/RequestFactory.cs

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
using Microsoft.AspNetCore.Http;
44
using Microsoft.AspNetCore.Http.Extensions;
55
using Microsoft.AspNetCore.Routing;
6+
using Microsoft.AspNetCore.WebUtilities;
67
using Microsoft.Net.Http.Headers;
78

89
namespace Honeybadger.DotNetCore.NoticeHelpers;
@@ -71,17 +72,15 @@ public static Request Get(
7172
try
7273
{
7374
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>();
8584

8685
var filteredQuery = filteredParams.Count > 0 ? "?" + string.Join("&", filteredParams) : "";
8786
return $"{uri.Scheme}://{uri.Authority}{uri.AbsolutePath}{filteredQuery}";
@@ -174,6 +173,7 @@ private static string FilterValue(string key, object value, string[] filterKeys)
174173

175174
private static Dictionary<string, object>? GetParams(HttpContext? httpContext, string[]? filterKeys = null)
176175
{
176+
// https://github.com/getsentry/sentry-dotnet/blob/6785f8e79d31b072a157a56ce1445ceb0244b628/src/Sentry/Extensibility/IRequestPayloadExtractor.cs#L6
177177
return null;
178178
}
179179

tests/Honeybadger.DotNetCore.Tests/RequestDataTests.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -104,7 +104,7 @@ public async Task ControllerRoute_CapturesActionAndComponent()
104104
Assert.Equal("GET", notice.Request.CgiData?.RequestMethod);
105105
Assert.Equal("Test", notice.Request.Component);
106106
// We did not name this endpoint, so we get the default DisplayName
107-
Assert.Equal("Honeybadger.DotNetCore.Tests.Fixture.TestController.Debug (Honeybadger.DotNetCore.Tests)", notice.Request.Action);
107+
Assert.Contains("TestController.Debug", notice.Request.Action);
108108
Assert.Equal("http://localhost/Test/Debug", notice.Request.Url);
109109
}
110110

0 commit comments

Comments
 (0)