Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit e059f45

Browse files
committed
Allow HttpUtils.UseEncoding to be overridden + C# 6-ify
1 parent 6e627d3 commit e059f45

File tree

1 file changed

+21
-36
lines changed

1 file changed

+21
-36
lines changed

src/ServiceStack.Text/HttpUtils.cs

Lines changed: 21 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
using System.Collections.Generic;
66
using System.IO;
77
using System.Net;
8+
using System.Text;
89
using System.Threading.Tasks;
910

1011
namespace ServiceStack
@@ -13,6 +14,8 @@ public static class HttpUtils
1314
{
1415
public static string UserAgent = "ServiceStack.Text";
1516

17+
public static Encoding UseEncoding { get; set; } = Encoding.UTF8;
18+
1619
[ThreadStatic]
1720
public static IHttpResultsFilter ResultsFilter;
1821

@@ -512,15 +515,15 @@ public static string SendStringToUrl(this string url, string method = null,
512515
if (requestBody != null)
513516
{
514517
using (var reqStream = PclExport.Instance.GetRequestStream(webReq))
515-
using (var writer = new StreamWriter(reqStream))
518+
using (var writer = new StreamWriter(reqStream, UseEncoding))
516519
{
517520
writer.Write(requestBody);
518521
}
519522
}
520523

521524
using (var webRes = PclExport.Instance.GetResponse(webReq))
522525
using (var stream = webRes.GetResponseStream())
523-
using (var reader = new StreamReader(stream))
526+
using (var reader = new StreamReader(stream, UseEncoding))
524527
{
525528
responseFilter?.Invoke((HttpWebResponse)webRes);
526529

@@ -554,7 +557,7 @@ public static Task<string> SendStringToUrlAsync(this string url, string method =
554557
if (requestBody != null)
555558
{
556559
using (var reqStream = PclExport.Instance.GetRequestStream(webReq))
557-
using (var writer = new StreamWriter(reqStream))
560+
using (var writer = new StreamWriter(reqStream, UseEncoding))
558561
{
559562
writer.Write(requestBody);
560563
}
@@ -580,7 +583,7 @@ public static Task<string> SendStringToUrlAsync(this string url, string method =
580583
responseFilter?.Invoke((HttpWebResponse)webRes);
581584

582585
using (var stream = webRes.GetResponseStream())
583-
using (var reader = new StreamReader(stream))
586+
using (var reader = new StreamReader(stream, UseEncoding))
584587
{
585588
tcs.SetResult(reader.ReadToEnd());
586589
}
@@ -647,10 +650,7 @@ public static byte[] SendBytesToUrl(this string url, string method = null,
647650
webReq.Accept = accept;
648651
PclExport.Instance.AddCompression(webReq);
649652

650-
if (requestFilter != null)
651-
{
652-
requestFilter(webReq);
653-
}
653+
requestFilter?.Invoke(webReq);
654654

655655
if (ResultsFilter != null)
656656
{
@@ -667,8 +667,7 @@ public static byte[] SendBytesToUrl(this string url, string method = null,
667667

668668
using (var webRes = PclExport.Instance.GetResponse(webReq))
669669
{
670-
if (responseFilter != null)
671-
responseFilter((HttpWebResponse)webRes);
670+
responseFilter?.Invoke((HttpWebResponse)webRes);
672671

673672
using (var stream = webRes.GetResponseStream())
674673
{
@@ -690,10 +689,7 @@ public static Task<byte[]> SendBytesToUrlAsync(this string url, string method =
690689
webReq.Accept = accept;
691690
PclExport.Instance.AddCompression(webReq);
692691

693-
if (requestFilter != null)
694-
{
695-
requestFilter(webReq);
696-
}
692+
requestFilter?.Invoke(webReq);
697693

698694
if (ResultsFilter != null)
699695
{
@@ -728,10 +724,7 @@ public static Task<byte[]> SendBytesToUrlAsync(this string url, string method =
728724
}
729725

730726
var webRes = task.Result;
731-
if (responseFilter != null)
732-
{
733-
responseFilter((HttpWebResponse)webRes);
734-
}
727+
responseFilter?.Invoke((HttpWebResponse)webRes);
735728

736729
using (var stream = webRes.GetResponseStream())
737730
{
@@ -798,7 +791,7 @@ public static bool IsInternalServerError(this Exception ex)
798791
using (var webRes = PclExport.Instance.GetResponse(webReq))
799792
{
800793
var httpRes = webRes as HttpWebResponse;
801-
return httpRes != null ? httpRes.StatusCode : (HttpStatusCode?)null;
794+
return httpRes?.StatusCode;
802795
}
803796
}
804797
catch (Exception ex)
@@ -825,12 +818,8 @@ public static bool IsInternalServerError(this Exception ex)
825818

826819
public static HttpStatusCode? GetStatus(this WebException webEx)
827820
{
828-
if (webEx == null) return null;
829-
var httpRes = webEx.Response as HttpWebResponse;
830-
if (httpRes != null)
831-
return httpRes.StatusCode;
832-
833-
return null;
821+
var httpRes = webEx?.Response as HttpWebResponse;
822+
return httpRes?.StatusCode;
834823
}
835824

836825
public static bool HasStatus(this Exception ex, HttpStatusCode statusCode)
@@ -847,8 +836,8 @@ public static string GetResponseBody(this Exception ex)
847836
#endif
848837
) return null;
849838

850-
var errorResponse = ((HttpWebResponse)webEx.Response);
851-
using (var reader = new StreamReader(errorResponse.GetResponseStream()))
839+
var errorResponse = (HttpWebResponse)webEx.Response;
840+
using (var reader = new StreamReader(errorResponse.GetResponseStream(), UseEncoding))
852841
{
853842
return reader.ReadToEnd();
854843
}
@@ -857,7 +846,7 @@ public static string GetResponseBody(this Exception ex)
857846
public static string ReadToEnd(this WebResponse webRes)
858847
{
859848
using (var stream = webRes.GetResponseStream())
860-
using (var reader = new StreamReader(stream))
849+
using (var reader = new StreamReader(stream, UseEncoding))
861850
{
862851
return reader.ReadToEnd();
863852
}
@@ -866,7 +855,7 @@ public static string ReadToEnd(this WebResponse webRes)
866855
public static IEnumerable<string> ReadLines(this WebResponse webRes)
867856
{
868857
using (var stream = webRes.GetResponseStream())
869-
using (var reader = new StreamReader(stream))
858+
using (var reader = new StreamReader(stream, UseEncoding))
870859
{
871860
string line;
872861
while ((line = reader.ReadLine()) != null)
@@ -975,8 +964,7 @@ public static void UploadFile(this WebRequest webRequest, Stream fileStream, str
975964
if (accept != null)
976965
httpReq.Accept = accept;
977966

978-
if (requestFilter != null)
979-
requestFilter(httpReq);
967+
requestFilter?.Invoke(httpReq);
980968

981969
var boundary = Guid.NewGuid().ToString("N");
982970

@@ -1016,7 +1004,7 @@ public static void UploadFile(this WebRequest webRequest, Stream fileStream, str
10161004
public static void UploadFile(this WebRequest webRequest, Stream fileStream, string fileName)
10171005
{
10181006
if (fileName == null)
1019-
throw new ArgumentNullException("fileName");
1007+
throw new ArgumentNullException(nameof(fileName));
10201008
var mimeType = MimeTypes.GetMimeType(fileName);
10211009
if (mimeType == null)
10221010
throw new ArgumentException("Mime-type not found for file: " + fileName);
@@ -1112,10 +1100,7 @@ public byte[] GetBytes(HttpWebRequest webReq, byte[] reqBody)
11121100

11131101
public void UploadStream(HttpWebRequest webRequest, Stream fileStream, string fileName)
11141102
{
1115-
if (UploadFileFn != null)
1116-
{
1117-
UploadFileFn(webRequest, fileStream, fileName);
1118-
}
1103+
UploadFileFn?.Invoke(webRequest, fileStream, fileName);
11191104
}
11201105
}
11211106
}

0 commit comments

Comments
 (0)