Browse Source

re-enable http compression for all providers except for last fm

Luke Pulverenti 12 năm trước cách đây
mục cha
commit
c11c8bfdb4

+ 10 - 7
MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs

@@ -80,7 +80,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
         /// <param name="host">The host.</param>
         /// <returns>HttpClient.</returns>
         /// <exception cref="System.ArgumentNullException">host</exception>
-        private HttpClient GetHttpClient(string host)
+        private HttpClient GetHttpClient(string host, bool enableHttpCompression)
         {
             if (string.IsNullOrEmpty(host))
             {
@@ -88,17 +88,20 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
             }
 
             HttpClient client;
-            if (!_httpClients.TryGetValue(host, out client))
+
+            var key = host + enableHttpCompression;
+
+            if (!_httpClients.TryGetValue(key, out client))
             {
                 var handler = new WebRequestHandler
                 {
                     CachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache),
-                    AutomaticDecompression = DecompressionMethods.None
+                    AutomaticDecompression = enableHttpCompression ? DecompressionMethods.Deflate : DecompressionMethods.None
                 };
 
                 client = new HttpClient(handler);
                 client.Timeout = TimeSpan.FromSeconds(20);
-                _httpClients.TryAdd(host, client);
+                _httpClients.TryAdd(key, client);
             }
 
             return client;
@@ -182,7 +185,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
                 {
                     options.CancellationToken.ThrowIfCancellationRequested();
 
-                    var response = await GetHttpClient(GetHostFromUrl(options.Url)).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, options.CancellationToken).ConfigureAwait(false);
+                    var response = await GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, options.CancellationToken).ConfigureAwait(false);
 
                     if (options.EnableResponseCache)
                     {
@@ -411,7 +414,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
             {
                 cancellationToken.ThrowIfCancellationRequested();
 
-                var msg = await GetHttpClient(GetHostFromUrl(url)).PostAsync(url, content, cancellationToken).ConfigureAwait(false);
+                var msg = await GetHttpClient(GetHostFromUrl(url), false).PostAsync(url, content, cancellationToken).ConfigureAwait(false);
 
                 EnsureSuccessStatusCode(msg);
 
@@ -472,7 +475,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 
                 using (var message = GetHttpRequestMessage(options))
                 {
-                    using (var response = await GetHttpClient(GetHostFromUrl(options.Url)).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, options.CancellationToken).ConfigureAwait(false))
+                    using (var response = await GetHttpClient(GetHostFromUrl(options.Url), options.EnableHttpCompression).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, options.CancellationToken).ConfigureAwait(false))
                     {
                         EnsureSuccessStatusCode(response);
 

+ 7 - 0
MediaBrowser.Common/Net/HttpRequestOptions.cs

@@ -49,5 +49,12 @@ namespace MediaBrowser.Common.Net
         /// </summary>
         /// <value><c>true</c> if [enable response caching]; otherwise, <c>false</c>.</value>
         public bool EnableResponseCache { get; set; }
+
+        public bool EnableHttpCompression { get; set; }
+
+        public HttpRequestOptions()
+        {
+            EnableHttpCompression = true;
+        }
     }
 }

+ 2 - 1
MediaBrowser.Controller/Providers/Music/LastfmAlbumProvider.cs

@@ -113,7 +113,8 @@ namespace MediaBrowser.Controller.Providers.Music
                 Url = url,
                 ResourcePool = LastfmResourcePool,
                 CancellationToken = cancellationToken,
-                EnableResponseCache = true
+                EnableResponseCache = true,
+                EnableHttpCompression = false
 
             }).ConfigureAwait(false))
             {

+ 4 - 2
MediaBrowser.Controller/Providers/Music/LastfmArtistProvider.cs

@@ -98,7 +98,8 @@ namespace MediaBrowser.Controller.Providers.Music
                 Url = url,
                 ResourcePool = LastfmResourcePool,
                 CancellationToken = cancellationToken,
-                EnableResponseCache = true
+                EnableResponseCache = true,
+                EnableHttpCompression = false
 
             }).ConfigureAwait(false))
             {
@@ -191,7 +192,8 @@ namespace MediaBrowser.Controller.Providers.Music
                 Url = url,
                 ResourcePool = LastfmResourcePool,
                 CancellationToken = cancellationToken,
-                EnableResponseCache = true
+                EnableResponseCache = true,
+                EnableHttpCompression = false
 
             }).ConfigureAwait(false))
             {