Skip to content

Commit 0cd360a

Browse files
committed
Added a request configurator
1 parent 21992a4 commit 0cd360a

File tree

4 files changed

+16
-9
lines changed

4 files changed

+16
-9
lines changed

RestSharp/Http.Sync.cs

+3-1
Original file line numberDiff line numberDiff line change
@@ -202,7 +202,7 @@ protected virtual HttpWebRequest ConfigureWebRequest(string method, Uri url)
202202
webRequest.Pipelined = Pipelined;
203203
webRequest.UnsafeAuthenticatedConnectionSharing = UnsafeAuthenticatedConnectionSharing;
204204
webRequest.ServicePoint.Expect100Continue = false;
205-
205+
206206
AppendHeaders(webRequest);
207207
AppendCookies(webRequest);
208208

@@ -251,6 +251,8 @@ protected virtual HttpWebRequest ConfigureWebRequest(string method, Uri url)
251251

252252
webRequest.ConnectionGroupName = ConnectionGroupName;
253253

254+
WebRequestConfigurator?.Invoke(webRequest);
255+
254256
return webRequest;
255257
}
256258
}

RestSharp/Http.cs

+4-7
Original file line numberDiff line numberDiff line change
@@ -235,11 +235,10 @@ public Http()
235235
/// <returns></returns>
236236
public static IHttp Create() => new Http();
237237

238-
protected virtual HttpWebRequest CreateWebRequest(Uri url)
239-
{
240-
return (HttpWebRequest) WebRequest.Create(url);
241-
}
238+
protected virtual HttpWebRequest CreateWebRequest(Uri url) => (HttpWebRequest) WebRequest.Create(url);
242239

240+
public Action<HttpWebRequest> WebRequestConfigurator { get; set; }
241+
243242
partial void AddSyncHeaderActions();
244243

245244
private void AddSharedHeaderActions()
@@ -248,9 +247,7 @@ private void AddSharedHeaderActions()
248247
restrictedHeaderActions.Add("Content-Type", (r, v) => r.ContentType = v);
249248
restrictedHeaderActions.Add("Date", (r, v) =>
250249
{
251-
DateTime parsed;
252-
253-
if (DateTime.TryParse(v, out parsed))
250+
if (DateTime.TryParse(v, out var parsed))
254251
r.Date = parsed;
255252
});
256253

RestSharp/IHttp.cs

+2
Original file line numberDiff line numberDiff line change
@@ -138,5 +138,7 @@ public interface IHttp
138138
IWebProxy Proxy { get; set; }
139139

140140
RemoteCertificateValidationCallback RemoteCertificateValidationCallback { get; set; }
141+
142+
Action<HttpWebRequest> WebRequestConfigurator { get; set; }
141143
}
142144
}

RestSharp/RestClient.cs

+7-1
Original file line numberDiff line numberDiff line change
@@ -95,6 +95,8 @@ public RestClient(string baseUrl) : this()
9595
private IDictionary<string, IDeserializer> ContentHandlers { get; }
9696

9797
private IList<string> AcceptTypes { get; }
98+
99+
private Action<HttpWebRequest> WebRequestConfigurator { get; set; }
98100

99101
/// <summary>
100102
/// Enable or disable automatic gzip/deflate decompression
@@ -252,6 +254,9 @@ public IRestResponse<T> Deserialize<T>(IRestResponse response)
252254
return Deserialize<T>(response.Request, response);
253255
}
254256

257+
public void ConfigureWebRequest(Action<HttpWebRequest> configurator) =>
258+
WebRequestConfigurator = configurator;
259+
255260
/// <summary>
256261
/// Assembles URL to call based on parameters, method and resource
257262
/// </summary>
@@ -419,7 +424,7 @@ private static string EncodeParameter(Parameter parameter, Encoding encoding) =>
419424
private static readonly ParameterType[] MultiParameterTypes =
420425
{ParameterType.QueryString, ParameterType.GetOrPost};
421426

422-
private IHttp ConfigureHttp(IRestRequest request)
427+
internal IHttp ConfigureHttp(IRestRequest request)
423428
{
424429
var http = Http.Create();
425430

@@ -429,6 +434,7 @@ private IHttp ConfigureHttp(IRestRequest request)
429434
http.ResponseWriter = request.ResponseWriter;
430435
http.CookieContainer = CookieContainer;
431436
http.AutomaticDecompression = AutomaticDecompression;
437+
http.WebRequestConfigurator = WebRequestConfigurator;
432438

433439
// move RestClient.DefaultParameters into Request.Parameters
434440
foreach (var p in DefaultParameters)

0 commit comments

Comments
 (0)