Skip to content

Commit 151b1d9

Browse files
feat: fix existing query values bug (#1737)
Co-authored-by: Chris Pulman <[email protected]>
1 parent 9605c24 commit 151b1d9

File tree

2 files changed

+21
-12
lines changed

2 files changed

+21
-12
lines changed

Refit.Tests/RequestBuilder.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2531,7 +2531,7 @@ public void ParametersShouldBePutAsExplicitQueryString()
25312531

25322532
var uri = new Uri(new Uri("http://api"), output.RequestUri);
25332533

2534-
Assert.Equal("/query?q2=value2&q1=value1", uri.PathAndQuery);
2534+
Assert.Equal("/query?q1=value1&q2=value2", uri.PathAndQuery);
25352535
}
25362536

25372537
[Fact]

Refit/RequestBuilderImplementation.cs

Lines changed: 20 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -980,17 +980,7 @@ param as IDictionary<string, string>
980980
// UriBuilder business so that we preserve any hardcoded query
981981
// parameters as well as add the parameterized ones.
982982
var uri = new UriBuilder(new Uri(new Uri("http://api"), urlTarget));
983-
var query = HttpUtility.ParseQueryString(uri.Query ?? "");
984-
foreach (var key in query.AllKeys)
985-
{
986-
if (!string.IsNullOrWhiteSpace(key))
987-
{
988-
queryParamsToAdd.Insert(
989-
0,
990-
new KeyValuePair<string, string?>(key, query[key])
991-
);
992-
}
993-
}
983+
ParseExistingQueryString(uri, queryParamsToAdd);
994984

995985
if (queryParamsToAdd.Count != 0)
996986
{
@@ -1100,6 +1090,25 @@ var value in ParseEnumerableQueryParameterValue(
11001090
}
11011091
}
11021092

1093+
static void ParseExistingQueryString(UriBuilder uri, List<KeyValuePair<string, string?>> queryParamsToAdd)
1094+
{
1095+
if (string.IsNullOrEmpty(uri.Query))
1096+
return;
1097+
1098+
var query = HttpUtility.ParseQueryString(uri.Query);
1099+
var index = 0;
1100+
foreach (var key in query.AllKeys)
1101+
{
1102+
if (!string.IsNullOrWhiteSpace(key))
1103+
{
1104+
queryParamsToAdd.Insert(
1105+
index++,
1106+
new KeyValuePair<string, string?>(key, query[key])
1107+
);
1108+
}
1109+
}
1110+
}
1111+
11031112
static string CreateQueryString(List<KeyValuePair<string, string?>> queryParamsToAdd)
11041113
{
11051114
// Suppress warning as ValueStringBuilder.ToString calls Dispose()

0 commit comments

Comments
 (0)