@@ -257,25 +257,32 @@ public Uri BuildUri(IRestRequest request)
257
257
}
258
258
}
259
259
260
- if ( request . Method != Method . POST
261
- && request . Method != Method . PUT
262
- && request . Method != Method . PATCH )
260
+ IEnumerable < Parameter > parameters = null ;
261
+
262
+ if ( request . Method != Method . POST && request . Method != Method . PUT && request . Method != Method . PATCH )
263
263
{
264
264
// build and attach querystring if this is a get-style request
265
- if ( request . Parameters . Any ( p => p . Type == ParameterType . GetOrPost ) )
266
- {
267
- var data = EncodeParameters ( request ) ;
268
- assembled = string . Format ( "{0}?{1}" , assembled , data ) ;
269
- }
265
+ parameters = request . Parameters . Where ( p => p . Type == ParameterType . GetOrPost || p . Type == ParameterType . QueryString ) ;
266
+ }
267
+ else
268
+ {
269
+ parameters = request . Parameters . Where ( p => p . Type == ParameterType . QueryString ) ;
270
+ }
271
+
272
+ // build and attach querystring
273
+ if ( parameters != null && parameters . Any ( ) )
274
+ {
275
+ var data = EncodeParameters ( request , parameters ) ;
276
+ assembled = string . Format ( "{0}?{1}" , assembled , data ) ;
270
277
}
271
278
272
279
return new Uri ( assembled ) ;
273
280
}
274
281
275
- private string EncodeParameters ( IRestRequest request )
282
+ private string EncodeParameters ( IRestRequest request , IEnumerable < Parameter > parameters )
276
283
{
277
284
var querystring = new StringBuilder ( ) ;
278
- foreach ( var p in request . Parameters . Where ( p => p . Type == ParameterType . GetOrPost ) )
285
+ foreach ( var p in parameters )
279
286
{
280
287
if ( querystring . Length > 1 )
281
288
querystring . Append ( "&" ) ;
@@ -285,17 +292,18 @@ private string EncodeParameters(IRestRequest request)
285
292
return querystring . ToString ( ) ;
286
293
}
287
294
288
- private void ConfigureHttp ( IRestRequest request , IHttp http ) {
295
+ private void ConfigureHttp ( IRestRequest request , IHttp http )
296
+ {
289
297
http . AlwaysMultipartFormData = request . AlwaysMultipartFormData ;
290
298
291
299
http . CookieContainer = CookieContainer ;
292
300
293
301
http . ResponseWriter = request . ResponseWriter ;
294
302
295
303
// move RestClient.DefaultParameters into Request.Parameters
296
- foreach ( var p in DefaultParameters )
304
+ foreach ( var p in DefaultParameters )
297
305
{
298
- if ( request . Parameters . Any ( p2 => p2 . Name == p . Name && p2 . Type == p . Type ) )
306
+ if ( request . Parameters . Any ( p2 => p2 . Name == p . Name && p2 . Type == p . Type ) )
299
307
{
300
308
continue ;
301
309
}
@@ -333,7 +341,7 @@ private void ConfigureHttp(IRestRequest request, IHttp http) {
333
341
http . MaxRedirects = MaxRedirects ;
334
342
#endif
335
343
336
- if ( request . Credentials != null )
344
+ if ( request . Credentials != null )
337
345
{
338
346
http . Credentials = request . Credentials ;
339
347
}
@@ -346,7 +354,7 @@ private void ConfigureHttp(IRestRequest request, IHttp http) {
346
354
Value = p . Value . ToString ( )
347
355
} ;
348
356
349
- foreach ( var header in headers )
357
+ foreach ( var header in headers )
350
358
{
351
359
http . Headers . Add ( header ) ;
352
360
}
@@ -359,7 +367,7 @@ private void ConfigureHttp(IRestRequest request, IHttp http) {
359
367
Value = p . Value . ToString ( )
360
368
} ;
361
369
362
- foreach ( var cookie in cookies )
370
+ foreach ( var cookie in cookies )
363
371
{
364
372
http . Cookies . Add ( cookie ) ;
365
373
}
@@ -373,12 +381,12 @@ private void ConfigureHttp(IRestRequest request, IHttp http) {
373
381
Value = p . Value . ToString ( )
374
382
} ;
375
383
376
- foreach ( var parameter in @params )
384
+ foreach ( var parameter in @params )
377
385
{
378
386
http . Parameters . Add ( parameter ) ;
379
387
}
380
388
381
- foreach ( var file in request . Files )
389
+ foreach ( var file in request . Files )
382
390
{
383
391
http . Files . Add ( new HttpFile { Name = file . Name , ContentType = file . ContentType , Writer = file . Writer , FileName = file . FileName , ContentLength = file . ContentLength } ) ;
384
392
}
@@ -387,7 +395,7 @@ private void ConfigureHttp(IRestRequest request, IHttp http) {
387
395
where p . Type == ParameterType . RequestBody
388
396
select p ) . FirstOrDefault ( ) ;
389
397
390
- if ( body != null )
398
+ if ( body != null )
391
399
{
392
400
object val = body . Value ;
393
401
if ( val is byte [ ] )
@@ -435,7 +443,8 @@ private RestResponse ConvertToRestResponse(IRestRequest request, HttpResponse ht
435
443
436
444
foreach ( var cookie in httpResponse . Cookies )
437
445
{
438
- restResponse . Cookies . Add ( new RestResponseCookie {
446
+ restResponse . Cookies . Add ( new RestResponseCookie
447
+ {
439
448
Comment = cookie . Comment ,
440
449
CommentUri = cookie . CommentUri ,
441
450
Discard = cookie . Discard ,
@@ -467,8 +476,8 @@ private IRestResponse<T> Deserialize<T>(IRestRequest request, IRestResponse raw)
467
476
response . Request = request ;
468
477
469
478
// Only attempt to deserialize if the request has a chance of containing a valid entry
470
- if ( response . StatusCode == HttpStatusCode . OK
471
- || response . StatusCode == HttpStatusCode . Created
479
+ if ( response . StatusCode == HttpStatusCode . OK
480
+ || response . StatusCode == HttpStatusCode . Created
472
481
|| response . StatusCode == HttpStatusCode . NonAuthoritativeInformation )
473
482
{
474
483
IDeserializer handler = GetHandler ( raw . ContentType ) ;
0 commit comments