Procházet zdrojové kódy

refactor get method to use http response

Luke Pulverenti před 12 roky
rodič
revize
b88f990b82

+ 21 - 23
MediaBrowser.Common.Implementations/HttpClientManager/HttpClientManager.cs

@@ -104,6 +104,8 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 
             cancellationToken.ThrowIfCancellationRequested();
 
+            var message = new HttpRequestMessage(HttpMethod.Get, url);
+
             if (resourcePool != null)
             {
                 await resourcePool.WaitAsync(cancellationToken).ConfigureAwait(false);
@@ -115,11 +117,14 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
             {
                 cancellationToken.ThrowIfCancellationRequested();
 
-                var msg = await GetHttpClient(GetHostFromUrl(url)).GetAsync(url, cancellationToken).ConfigureAwait(false);
+                using (var response = await GetHttpClient(GetHostFromUrl(url)).SendAsync(message, HttpCompletionOption.ResponseHeadersRead, cancellationToken).ConfigureAwait(false))
+                {
+                    EnsureSuccessStatusCode(response);
 
-                EnsureSuccessStatusCode(msg);
+                    cancellationToken.ThrowIfCancellationRequested();
 
-                return await msg.Content.ReadAsStreamAsync().ConfigureAwait(false);
+                    return await response.Content.ReadAsStreamAsync().ConfigureAwait(false);
+                }
             }
             catch (OperationCanceledException ex)
             {
@@ -131,6 +136,12 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 
                 throw new HttpException(ex.Message, ex);
             }
+            catch (Exception ex)
+            {
+                _logger.ErrorException("Error getting response from " + url, ex);
+
+                throw;
+            }
             finally
             {
                 if (resourcePool != null)
@@ -139,7 +150,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
                 }
             }
         }
-
+        
         /// <summary>
         /// Performs a POST request
         /// </summary>
@@ -209,27 +220,12 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
         /// <exception cref="System.ArgumentNullException">progress</exception>
         /// <exception cref="HttpException"></exception>
         /// <exception cref="MediaBrowser.Model.Net.HttpException"></exception>
-        public Task<string> GetTempFile(HttpRequestOptions options)
-        {
-            var tempFile = Path.Combine(_appPaths.TempDirectory, Guid.NewGuid() + ".tmp");
-
-            return GetTempFile(options, tempFile);
-        }
-
-        protected static readonly CultureInfo UsCulture = new CultureInfo("en-US");
-
-        /// <summary>
-        /// Gets the temp file.
-        /// </summary>
-        /// <param name="options">The options.</param>
-        /// <param name="tempFile">The temp file.</param>
-        /// <returns>Task{System.String}.</returns>
-        /// <exception cref="System.ArgumentNullException">progress</exception>
-        /// <exception cref="HttpException"></exception>
-        private async Task<string> GetTempFile(HttpRequestOptions options, string tempFile)
+        public async Task<string> GetTempFile(HttpRequestOptions options)
         {
             ValidateParams(options.Url, options.CancellationToken);
 
+            var tempFile = Path.Combine(_appPaths.TempDirectory, Guid.NewGuid() + ".tmp");
+
             if (options.Progress == null)
             {
                 throw new ArgumentNullException("progress");
@@ -250,7 +246,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
             }
 
             options.Progress.Report(0);
-            
+
             _logger.Info("HttpClientManager.GetTempFile url: {0}, temp file: {1}", options.Url, tempFile);
 
             try
@@ -310,6 +306,8 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
             return tempFile;
         }
 
+        protected static readonly CultureInfo UsCulture = new CultureInfo("en-US");
+
         /// <summary>
         /// Handles the temp file exception.
         /// </summary>