@@ -36,6 +36,8 @@ public class WebRequests : Library
3636 /// <summary>
3737 /// Specifies the HTTP request decompression support
3838 /// </summary>
39+ [ Obsolete ( "AllowDecompression is deprecated, use Enqueue with DecompressionMode instead" ) ]
40+
3941 public static bool AllowDecompression = false ;
4042
4143 /// <summary>
@@ -88,6 +90,11 @@ public class WebRequest
8890 /// </summary>
8991 public Dictionary < string , string > RequestHeaders { get ; set ; }
9092
93+ /// <summary>
94+ /// Gets the decompression type for web requests
95+ /// </summary>
96+ public DecompressionMethods DecompressionMethod { get ; set ; } = DecompressionMethods . None ;
97+
9198 private HttpWebRequest request ;
9299 private WaitHandle waitHandle ;
93100 private RegisteredWaitHandle registeredWaitHandle ;
@@ -121,7 +128,17 @@ public void Start()
121128 request . Proxy = null ; // Make sure no proxy is set
122129 request . KeepAlive = false ;
123130 request . Timeout = ( int ) Math . Round ( ( Timeout . Equals ( 0f ) ? WebRequests . Timeout : Timeout ) * 1000f ) ;
124- request . AutomaticDecompression = AllowDecompression ? DecompressionMethods . GZip | DecompressionMethods . Deflate : DecompressionMethods . None ;
131+
132+ // Backward compatibility
133+ if ( AllowDecompression && DecompressionMethod == DecompressionMethods . None )
134+ {
135+ request . AutomaticDecompression = DecompressionMethods . GZip | DecompressionMethods . Deflate ;
136+ }
137+ else
138+ {
139+ request . AutomaticDecompression = DecompressionMethod ;
140+ }
141+
125142 request . ServicePoint . MaxIdleTime = request . Timeout ;
126143 request . ServicePoint . Expect100Continue = ServicePointManager . Expect100Continue ;
127144 request . ServicePoint . ConnectionLimit = ServicePointManager . DefaultConnectionLimit ;
@@ -488,10 +505,11 @@ public void EnqueuePut(string url, string body, Action<int, string> callback, Pl
488505 /// <param name="method"></param>
489506 /// <param name="headers"></param>
490507 /// <param name="timeout"></param>
508+ /// <param name="decompressionMethod"></param>
491509 [ LibraryFunction ( "Enqueue" ) ]
492- public void Enqueue ( string url , string body , Action < int , string > callback , Plugin owner , RequestMethod method = RequestMethod . GET , Dictionary < string , string > headers = null , float timeout = 0f )
510+ public void Enqueue ( string url , string body , Action < int , string > callback , Plugin owner , RequestMethod method = RequestMethod . GET , Dictionary < string , string > headers = null , float timeout = 0f , DecompressionMethods decompressionMethod = DecompressionMethods . None )
493511 {
494- WebRequest request = new WebRequest ( url , callback , owner ) { Method = method . ToString ( ) , RequestHeaders = headers , Timeout = timeout , Body = body } ;
512+ WebRequest request = new WebRequest ( url , callback , owner ) { Method = method . ToString ( ) , RequestHeaders = headers , Timeout = timeout , Body = body , DecompressionMethod = decompressionMethod } ;
495513 lock ( syncroot )
496514 {
497515 queue . Enqueue ( request ) ;
0 commit comments