Browse Source

Use HttpResponseHeaders instead of a dictionary

Bond_009 6 years ago
parent
commit
3603c64fa6

+ 18 - 49
Emby.Server.Implementations/HttpClientManager/HttpClientManager.cs

@@ -4,8 +4,6 @@ using System.IO;
 using System.Linq;
 using System.Net;
 using System.Net.Http;
-using System.Net.Http.Headers;
-using System.Text;
 using System.Threading;
 using System.Threading.Tasks;
 using MediaBrowser.Common.Configuration;
@@ -389,52 +387,16 @@ namespace Emby.Server.Implementations.HttpClientManager
                 await stream.CopyToAsync(memoryStream, 81920, options.CancellationToken).ConfigureAwait(false);
                 memoryStream.Position = 0;
 
-                return GetResponseInfo(response, memoryStream, memoryStream.Length);
-            }
-        }
-
-        private HttpResponseInfo GetResponseInfo(HttpResponseMessage httpResponse, Stream content, long? contentLength)
-        {
-            var responseInfo = new HttpResponseInfo()
-            {
-                Content = content,
-                StatusCode = httpResponse.StatusCode,
-                ContentType = httpResponse.Content.Headers.ContentType?.MediaType,
-                ContentLength = contentLength,
-                ResponseUrl = httpResponse.Content.Headers.ContentLocation?.ToString()
-            };
-
-            if (httpResponse.Headers != null)
-            {
-                SetHeaders(httpResponse.Content.Headers, responseInfo);
-            }
-
-            return responseInfo;
-        }
-
-        private HttpResponseInfo GetResponseInfo(HttpResponseMessage httpResponse, string tempFile, long? contentLength)
-        {
-            var responseInfo = new HttpResponseInfo
-            {
-                TempFilePath = tempFile,
-                StatusCode = httpResponse.StatusCode,
-                ContentType = httpResponse.Content.Headers.ContentType?.MediaType,
-                ContentLength = contentLength
-            };
-
-            if (httpResponse.Headers != null)
-            {
-                SetHeaders(httpResponse.Content.Headers, responseInfo);
-            }
-
-            return responseInfo;
-        }
+                var responseInfo = new HttpResponseInfo(response.Headers)
+                {
+                    Content = memoryStream,
+                    StatusCode = response.StatusCode,
+                    ContentType = response.Content.Headers.ContentType?.MediaType,
+                    ContentLength = memoryStream.Length,
+                    ResponseUrl = response.Content.Headers.ContentLocation?.ToString()
+                };
 
-        private static void SetHeaders(HttpContentHeaders headers, HttpResponseInfo responseInfo)
-        {
-            foreach (var header in headers)
-            {
-                responseInfo.Headers[header.Key] = string.Join(", ", header.Value);
+                return responseInfo;
             }
         }
 
@@ -496,8 +458,15 @@ namespace Emby.Server.Implementations.HttpClientManager
 
                     options.Progress.Report(100);
 
-                    var contentLength = response.Content.Headers.ContentLength;
-                    return GetResponseInfo(response, tempFile, contentLength);
+                    var responseInfo = new HttpResponseInfo(response.Headers)
+                    {
+                        TempFilePath = tempFile,
+                        StatusCode = response.StatusCode,
+                        ContentType = response.Content.Headers.ContentType?.MediaType,
+                        ContentLength = response.Content.Headers.ContentLength
+                    };
+
+                    return responseInfo;
                 }
             }
             catch (Exception ex)

+ 8 - 3
MediaBrowser.Common/Net/HttpResponseInfo.cs

@@ -1,7 +1,7 @@
 using System;
-using System.Collections.Generic;
 using System.IO;
 using System.Net;
+using System.Net.Http.Headers;
 
 namespace MediaBrowser.Common.Net
 {
@@ -50,11 +50,16 @@ namespace MediaBrowser.Common.Net
         /// Gets or sets the headers.
         /// </summary>
         /// <value>The headers.</value>
-        public Dictionary<string, string> Headers { get; set; }
+        public HttpResponseHeaders Headers { get; set; }
 
         public HttpResponseInfo()
         {
-            Headers = new Dictionary<string, string>(StringComparer.OrdinalIgnoreCase);
+
+        }
+
+        public HttpResponseInfo(HttpResponseHeaders headers)
+        {
+            Headers = headers;
         }
 
         public void Dispose()