Skip to content

Commit d5e437a

Browse files
committed
Merge pull request restsharp#532 from adbre/master
BuildUri: Tell which UrlSegment parameter value is null
2 parents 70be25d + b62827d commit d5e437a

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

RestSharp.Tests/UrlBuilderTests.cs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -125,6 +125,17 @@ public void GET_with_resource_containing_tokens()
125125
Assert.Equal(expected, output);
126126
}
127127

128+
[Fact]
129+
public void GET_with_resource_containing_null_token()
130+
{
131+
var request = new RestRequest("/resource/{foo}", Method.GET);
132+
request.AddUrlSegment("foo", null);
133+
var client = new RestClient("http://example.com/api/1.0");
134+
135+
var exception = Assert.Throws<ArgumentException>(() => client.BuildUri(request));
136+
Assert.Contains("foo", exception.Message);
137+
}
138+
128139
[Fact]
129140
public void POST_with_resource_containing_tokens()
130141
{

RestSharp/RestClient.cs

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,11 @@ public Uri BuildUri(IRestRequest request)
248248
var urlParms = request.Parameters.Where(p => p.Type == ParameterType.UrlSegment);
249249
foreach (var p in urlParms)
250250
{
251+
if (p.Value == null)
252+
{
253+
throw new ArgumentException(string.Format("Cannot build uri when url segment parameter '{0}' value is null.", p.Name), "request");
254+
}
255+
251256
assembled = assembled.Replace("{" + p.Name + "}", p.Value.ToString().UrlEncode());
252257
}
253258

0 commit comments

Comments
 (0)