Skip to content

Commit 42f086a

Browse files
committed
Proper functions
1 parent 9d90e58 commit 42f086a

File tree

6 files changed

+70
-85
lines changed

6 files changed

+70
-85
lines changed

RestSharp/Http.Async.cs

+3-4
Original file line numberDiff line numberDiff line change
@@ -275,21 +275,20 @@ private static void GetRawResponseAsync(IAsyncResult result, Action<HttpWebRespo
275275

276276
private void ResponseCallback(IAsyncResult result, Action<HttpResponse> callback)
277277
{
278-
var response = new HttpResponse {ResponseStatus = ResponseStatus.None};
279-
280278
try
281279
{
282280
if (timeoutState.TimedOut)
283281
{
284-
response.ResponseStatus = ResponseStatus.TimedOut;
282+
var response = new HttpResponse { ResponseStatus = ResponseStatus.TimedOut };
285283
ExecuteCallback(response, callback);
286284

287285
return;
288286
}
289287

290288
GetRawResponseAsync(result, webResponse =>
291289
{
292-
ExtractResponseData(response, webResponse);
290+
var response = ExtractResponseData(webResponse);
291+
webResponse.Dispose();
293292
ExecuteCallback(response, callback);
294293
});
295294
}

RestSharp/Http.Sync.cs

+16-19
Original file line numberDiff line numberDiff line change
@@ -111,7 +111,8 @@ partial void AddSyncHeaderActions()
111111
restrictedHeaderActions.Add("Connection", (r, v) => { r.KeepAlive = v.ToLower().Contains("keep-alive"); });
112112
restrictedHeaderActions.Add("Content-Length", (r, v) => r.ContentLength = Convert.ToInt64(v));
113113
restrictedHeaderActions.Add("Expect", (r, v) => r.Expect = v);
114-
restrictedHeaderActions.Add("If-Modified-Since", (r, v) => r.IfModifiedSince = Convert.ToDateTime(v, CultureInfo.InvariantCulture));
114+
restrictedHeaderActions.Add("If-Modified-Since",
115+
(r, v) => r.IfModifiedSince = Convert.ToDateTime(v, CultureInfo.InvariantCulture));
115116
restrictedHeaderActions.Add("Referer", (r, v) => r.Referer = v);
116117
restrictedHeaderActions.Add("Transfer-Encoding", (r, v) =>
117118
{
@@ -121,38 +122,34 @@ partial void AddSyncHeaderActions()
121122
restrictedHeaderActions.Add("User-Agent", (r, v) => r.UserAgent = v);
122123
}
123124

124-
private static void ExtractErrorResponse(IHttpResponse httpResponse, Exception ex)
125+
private static HttpResponse ExtractErrorResponse(Exception ex)
125126
{
127+
var response = new HttpResponse {ErrorMessage = ex.Message};
126128
if (ex is WebException webException && webException.Status == WebExceptionStatus.Timeout)
127129
{
128-
httpResponse.ResponseStatus = ResponseStatus.TimedOut;
129-
httpResponse.ErrorMessage = ex.Message;
130-
httpResponse.ErrorException = webException;
130+
response.ResponseStatus = ResponseStatus.TimedOut;
131+
response.ErrorException = webException;
131132
}
132133
else
133134
{
134-
httpResponse.ErrorMessage = ex.Message;
135-
httpResponse.ErrorException = ex;
136-
httpResponse.ResponseStatus = ResponseStatus.Error;
135+
response.ErrorException = ex;
136+
response.ResponseStatus = ResponseStatus.Error;
137137
}
138+
139+
return response;
138140
}
139141

140142
private HttpResponse GetResponse(HttpWebRequest request)
141143
{
142-
var response = new HttpResponse {ResponseStatus = ResponseStatus.None};
143-
144144
try
145145
{
146-
var webResponse = GetRawResponse(request);
147-
148-
ExtractResponseData(response, webResponse);
146+
using (var webResponse = GetRawResponse(request))
147+
return ExtractResponseData(webResponse);
149148
}
150149
catch (Exception ex)
151150
{
152-
ExtractErrorResponse(response, ex);
151+
return ExtractErrorResponse(ex);
153152
}
154-
155-
return response;
156153
}
157154

158155
private static HttpWebResponse GetRawResponse(HttpWebRequest request)
@@ -213,7 +210,7 @@ protected virtual HttpWebRequest ConfigureWebRequest(string method, Uri url)
213210
{
214211
// Avoid to crash in UWP apps
215212
}
216-
213+
217214
AppendHeaders(webRequest);
218215
AppendCookies(webRequest);
219216

@@ -233,8 +230,8 @@ protected virtual HttpWebRequest ConfigureWebRequest(string method, Uri url)
233230

234231
if (ClientCertificates != null)
235232
webRequest.ClientCertificates.AddRange(ClientCertificates);
236-
237-
AllowedDecompressionMethods.ForEach(x => { webRequest.AutomaticDecompression |= x; });
233+
234+
AllowedDecompressionMethods.ForEach(x => { webRequest.AutomaticDecompression |= x; });
238235

239236
if (AutomaticDecompression)
240237
{

RestSharp/Http.cs

+44-44
Original file line numberDiff line numberDiff line change
@@ -363,57 +363,57 @@ private void WriteMultipartFormData(Stream requestStream)
363363
WriteStringTo(requestStream, GetMultipartFooter());
364364
}
365365

366-
private void ExtractResponseData(HttpResponse response, HttpWebResponse webResponse)
366+
private HttpResponse ExtractResponseData(HttpWebResponse webResponse)
367367
{
368-
using (webResponse)
368+
var response = new HttpResponse
369369
{
370-
response.ContentEncoding = webResponse.ContentEncoding;
371-
response.Server = webResponse.Server;
372-
response.ProtocolVersion = webResponse.ProtocolVersion;
373-
response.ContentType = webResponse.ContentType;
374-
response.ContentLength = webResponse.ContentLength;
375-
376-
response.StatusCode = webResponse.StatusCode;
377-
response.StatusDescription = webResponse.StatusDescription;
378-
response.ResponseUri = webResponse.ResponseUri;
379-
response.ResponseStatus = ResponseStatus.Completed;
380-
381-
if (webResponse.Cookies != null)
382-
foreach (Cookie cookie in webResponse.Cookies)
383-
response.Cookies.Add(new HttpCookie
384-
{
385-
Comment = cookie.Comment,
386-
CommentUri = cookie.CommentUri,
387-
Discard = cookie.Discard,
388-
Domain = cookie.Domain,
389-
Expired = cookie.Expired,
390-
Expires = cookie.Expires,
391-
HttpOnly = cookie.HttpOnly,
392-
Name = cookie.Name,
393-
Path = cookie.Path,
394-
Port = cookie.Port,
395-
Secure = cookie.Secure,
396-
TimeStamp = cookie.TimeStamp,
397-
Value = cookie.Value,
398-
Version = cookie.Version
399-
});
400-
401-
foreach (var headerName in webResponse.Headers.AllKeys)
402-
{
403-
var headerValue = webResponse.Headers[headerName];
404-
405-
response.Headers.Add(new HttpHeader
370+
ContentEncoding = webResponse.ContentEncoding,
371+
Server = webResponse.Server,
372+
ProtocolVersion = webResponse.ProtocolVersion,
373+
ContentType = webResponse.ContentType,
374+
ContentLength = webResponse.ContentLength,
375+
StatusCode = webResponse.StatusCode,
376+
StatusDescription = webResponse.StatusDescription,
377+
ResponseUri = webResponse.ResponseUri,
378+
ResponseStatus = ResponseStatus.Completed
379+
};
380+
381+
if (webResponse.Cookies != null)
382+
foreach (Cookie cookie in webResponse.Cookies)
383+
response.Cookies.Add(new HttpCookie
406384
{
407-
Name = headerName,
408-
Value = headerValue
385+
Comment = cookie.Comment,
386+
CommentUri = cookie.CommentUri,
387+
Discard = cookie.Discard,
388+
Domain = cookie.Domain,
389+
Expired = cookie.Expired,
390+
Expires = cookie.Expires,
391+
HttpOnly = cookie.HttpOnly,
392+
Name = cookie.Name,
393+
Path = cookie.Path,
394+
Port = cookie.Port,
395+
Secure = cookie.Secure,
396+
TimeStamp = cookie.TimeStamp,
397+
Value = cookie.Value,
398+
Version = cookie.Version
409399
});
410-
}
411400

412-
var webResponseStream = webResponse.GetResponseStream();
413-
ProcessResponseStream(webResponseStream, response);
401+
foreach (var headerName in webResponse.Headers.AllKeys)
402+
{
403+
var headerValue = webResponse.Headers[headerName];
414404

415-
webResponse.Close();
405+
response.Headers.Add(new HttpHeader
406+
{
407+
Name = headerName,
408+
Value = headerValue
409+
});
416410
}
411+
412+
var webResponseStream = webResponse.GetResponseStream();
413+
ProcessResponseStream(webResponseStream, response);
414+
415+
webResponse.Close();
416+
return response;
417417
}
418418

419419
private void ProcessResponseStream(Stream webResponseStream, HttpResponse response)

RestSharp/RestClient.Sync.cs

+3-12
Original file line numberDiff line numberDiff line change
@@ -68,10 +68,7 @@ public virtual IRestResponse Execute(IRestRequest request)
6868
}
6969
}
7070

71-
public IRestResponse ExecuteAsGet(IRestRequest request, string httpMethod)
72-
{
73-
return Execute(request, httpMethod, DoExecuteAsGet);
74-
}
71+
public IRestResponse ExecuteAsGet(IRestRequest request, string httpMethod) => Execute(request, httpMethod, DoExecuteAsGet);
7572

7673
public IRestResponse ExecuteAsPost(IRestRequest request, string httpMethod)
7774
{
@@ -129,14 +126,8 @@ private IRestResponse Execute(IRestRequest request, string httpMethod,
129126
return response;
130127
}
131128

132-
private static HttpResponse DoExecuteAsGet(IHttp http, string method)
133-
{
134-
return http.AsGet(method);
135-
}
129+
private static HttpResponse DoExecuteAsGet(IHttp http, string method) => http.AsGet(method);
136130

137-
private static HttpResponse DoExecuteAsPost(IHttp http, string method)
138-
{
139-
return http.AsPost(method);
140-
}
131+
private static HttpResponse DoExecuteAsPost(IHttp http, string method) => http.AsPost(method);
141132
}
142133
}

RestSharp/RestClient.cs

+1-1
Original file line numberDiff line numberDiff line change
@@ -254,7 +254,7 @@ public IRestClient UseQueryEncoder(Func<string, Encoding, string> queryEncoder)
254254
/// Only query and form parameters are supported.
255255
/// </summary>
256256
public bool AllowMultipleDefaultParametersWithSameName { get; set; } = false;
257-
257+
258258
/// <summary>
259259
/// Registers a content handler to process response content
260260
/// </summary>

RestSharp/RestResponse.cs

+3-5
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ protected RestResponseBase()
7070
/// </summary>
7171
public string Content
7272
{
73-
get => content ?? (content = RawBytes.AsString());
73+
get => content ?? (content = RawBytes.AsString(ContentEncoding));
7474
set => content = value;
7575
}
7676

@@ -160,9 +160,8 @@ public class RestResponse<T> : RestResponseBase, IRestResponse<T>
160160
/// </summary>
161161
public T Data { get; set; }
162162

163-
public static explicit operator RestResponse<T>(RestResponse response)
164-
{
165-
return new RestResponse<T>
163+
public static explicit operator RestResponse<T>(RestResponse response) =>
164+
new RestResponse<T>
166165
{
167166
ContentEncoding = response.ContentEncoding,
168167
ContentLength = response.ContentLength,
@@ -180,7 +179,6 @@ public static explicit operator RestResponse<T>(RestResponse response)
180179
StatusDescription = response.StatusDescription,
181180
Request = response.Request
182181
};
183-
}
184182
}
185183

186184
/// <summary>

0 commit comments

Comments
 (0)