55using System . Collections . Generic ;
66using System . IO ;
77using System . Net ;
8+ using System . Text ;
89using System . Threading . Tasks ;
910
1011namespace 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