Skip to content

Commit 758c722

Browse files
authored
fix URL encoding (#105)
1 parent c48ea9a commit 758c722

File tree

13 files changed

+24
-32
lines changed

13 files changed

+24
-32
lines changed

src/GitLabApiClient/GitLabApiClient.csproj

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,6 @@
2525

2626
<ItemGroup Condition="'$(TargetFramework)' == 'net48'">
2727
<Reference Include="System.Net.Http" />
28-
<Reference Include="System.Web" />
2928
</ItemGroup>
3029

3130
</Project>

src/GitLabApiClient/Internal/Queries/QueryBuilder.cs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@
22
using System.Collections.Generic;
33
using System.Collections.Specialized;
44
using System.Linq;
5-
using System.Web;
65
using GitLabApiClient.Internal.Utilities;
76
using GitLabApiClient.Models;
87

@@ -86,9 +85,9 @@ private static string ToQueryString(NameValueCollection nvc)
8685
var array =
8786
from key in nvc.AllKeys
8887
from value in nvc.GetValues(key)
89-
select string.Format("{0}={1}", HttpUtility.UrlEncode(key), HttpUtility.UrlEncode(value));
88+
select $"{key.UrlEncode()}={value.UrlEncode()}";
9089

91-
return "?" + string.Join("&", array);
90+
return $"?{string.Join("&", array)}";
9291
}
9392
}
9493
}

src/GitLabApiClient/Internal/Utilities/Extensions.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
using System.Web;
2-
31
namespace GitLabApiClient.Internal.Utilities
42
{
53
internal static class Extensions
@@ -19,6 +17,6 @@ public static string ToLowerCaseString(this object obj) =>
1917
/// <param name="value">URL path</param>
2018
/// <returns>Encoded URL path</returns>
2119
public static string UrlEncode(this string value) =>
22-
value.Contains("%") ? value : HttpUtility.UrlEncode(value);
20+
value.Contains("%") ? value : System.Uri.EscapeDataString(value);
2321
}
2422
}

src/GitLabApiClient/Models/Webhooks/Requests/CreateWebhookRequest.cs

Lines changed: 1 addition & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,4 @@
1-
using System;
2-
using System.Collections.Generic;
3-
using System.Text;
4-
using System.Web;
5-
using GitLabApiClient.Internal.Utilities;
1+
using GitLabApiClient.Internal.Utilities;
62
using Newtonsoft.Json;
73

84
namespace GitLabApiClient.Models.Webhooks.Requests

test/GitLabApiClient.Test/Internal/GroupIdConversionTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class GroupIdConversionTest
2020
[Fact]
2121
public void GroupId_String_Conversion()
2222
{
23-
string expected = "groups/group%2fmy_awe-some.subgroup%2fsubgroup";
23+
string expected = "groups/group%2Fmy_awe-some.subgroup%2Fsubgroup";
2424
GroupId sut = "group/my_awe-some.subgroup/subgroup";
2525
string result = $"groups/{sut}";
2626
result.Should().Be(expected);
@@ -38,7 +38,7 @@ public void GroupId_Int_Conversion()
3838
[Fact]
3939
public void GroupId_Group_Path_Conversion()
4040
{
41-
string expected = "groups/group%2fmy_awe-some.subgroup%2fsubgroup";
41+
string expected = "groups/group%2Fmy_awe-some.subgroup%2Fsubgroup";
4242
GroupId sut = new Group { FullPath = "group/my_awe-some.subgroup/subgroup" };
4343
string result = $"groups/{sut}";
4444
result.Should().Be(expected);

test/GitLabApiClient.Test/Internal/ProjectIdConversionTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ public class ProjectIdConversionTest
2020
[Fact]
2121
public void ProjectId_String_Conversion()
2222
{
23-
string expected = "projects/group%2fmy_awe-some.project";
23+
string expected = "projects/group%2Fmy_awe-some.project";
2424
ProjectId sut = "group/my_awe-some.project";
2525
string result = $"projects/{sut}";
2626
result.Should().Be(expected);
@@ -38,7 +38,7 @@ public void ProjectId_Int_Conversion()
3838
[Fact]
3939
public void ProjectId_Project_Path_Conversion()
4040
{
41-
string expected = "projects/group%2fmy_awe-some.project";
41+
string expected = "projects/group%2Fmy_awe-some.project";
4242
ProjectId sut = new Project { PathWithNamespace = "group/my_awe-some.project" };
4343
string result = $"projects/{sut}";
4444
result.Should().Be(expected);

test/GitLabApiClient.Test/Internal/Queries/GroupsQueryBuilderTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@ public void NonDefaultQueryBuilt()
2626
});
2727

2828
query.Should().Be("https://gitlab.com/api/v4/groups?" +
29-
"skip_groups%5b%5d=1&skip_groups%5b%5d=2&" +
29+
"skip_groups%5B%5D=1&skip_groups%5B%5D=2&" +
3030
"all_available=true&" +
3131
"search=filter&" +
3232
"order_by=path&" +

test/GitLabApiClient.Test/Internal/Queries/IssuesQueryBuilderTest.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,12 +32,12 @@ public void NonDefaultQueryBuilt()
3232

3333
query.Should().Be("https://gitlab.com/api/v4/issues?" +
3434
"state=opened&" +
35-
"labels=label1%2clabel2&" +
35+
"labels=label1%2Clabel2&" +
3636
"milestone=milestone1&" +
3737
"scope=all&" +
3838
"author_id=1&" +
3939
"assignee_id=2&" +
40-
"iids%5b%5d=3&iids%5b%5d=4&" +
40+
"iids%5B%5D=3&iids%5B%5D=4&" +
4141
"order_by=updated_at&" +
4242
"sort=asc&" +
4343
"search=filter");

test/GitLabApiClient.Test/Internal/Queries/MergeRequestsQueryBuilderTest.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,9 +37,9 @@ public void NonDefaultQueryBuilt()
3737
"sort=asc&" +
3838
"milestone=milestone1&" +
3939
"view=simple&" +
40-
"labels=label1%2clabel2&" +
41-
"created_after=1991-11-11T01%3a01%3a01.0000000&" +
42-
"created_before=1991-12-12T02%3a02%3a02.0000000&" +
40+
"labels=label1%2Clabel2&" +
41+
"created_after=1991-11-11T01%3A01%3A01.0000000&" +
42+
"created_before=1991-12-12T02%3A02%3A02.0000000&" +
4343
"scope=all&" +
4444
"author_id=1&" +
4545
"assignee_id=2");

test/GitLabApiClient.Test/Internal/Queries/MilestonesQueryBuilderTest.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@ public void NonDefaultQueryBuilt()
2323
});
2424

2525
query.Should().Be("https://gitlab.com/api/v4/projects/projectId/milestones?" +
26-
"iids%5b%5d=3&iids%5b%5d=4&" +
26+
"iids%5B%5D=3&iids%5B%5D=4&" +
2727
"state=active&" +
2828
"search=filter");
2929
}

0 commit comments

Comments
 (0)