Преглед на файлове

fully removed System.Net.HttpWebRequest dependency

Luke Pulverenti преди 11 години
родител
ревизия
528100ab31

+ 4 - 1
MediaBrowser.Common.Implementations/BaseApplicationHost.cs

@@ -19,6 +19,7 @@ using System;
 using System.Collections.Generic;
 using System.IO;
 using System.Linq;
+using System.Net.Http;
 using System.Reflection;
 using System.Threading;
 using System.Threading.Tasks;
@@ -272,7 +273,7 @@ namespace MediaBrowser.Common.Implementations
 
                 RegisterSingleInstance(TaskManager);
 
-                HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, Logger);
+                HttpClient = new HttpClientManager.HttpClientManager(ApplicationPaths, Logger, GetHttpMessageHandler);
                 RegisterSingleInstance(HttpClient);
 
                 NetworkManager = new NetworkManager();
@@ -286,6 +287,8 @@ namespace MediaBrowser.Common.Implementations
             });
         }
 
+        protected abstract HttpMessageHandler GetHttpMessageHandler(bool enableHttpCompression);
+
         /// <summary>
         /// Gets a list of types within an assembly
         /// This will handle situations that would normally throw an exception - such as a type within the assembly that depends on some other non-existant reference

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

@@ -9,8 +9,6 @@ using System.Collections.Generic;
 using System.Globalization;
 using System.IO;
 using System.Linq;
-using System.Net;
-using System.Net.Cache;
 using System.Net.Http;
 using System.Text;
 using System.Threading;
@@ -33,6 +31,10 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
         /// </summary>
         private readonly IApplicationPaths _appPaths;
 
+        public delegate HttpMessageHandler GetHttpMessageHandler(bool enableHttpCompression);
+
+        private readonly GetHttpMessageHandler _getHttpMessageHandler;
+
         /// <summary>
         /// Initializes a new instance of the <see cref="HttpClientManager" /> class.
         /// </summary>
@@ -43,7 +45,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
         /// or
         /// logger
         /// </exception>
-        public HttpClientManager(IApplicationPaths appPaths, ILogger logger)
+        public HttpClientManager(IApplicationPaths appPaths, ILogger logger, GetHttpMessageHandler getHttpMessageHandler)
         {
             if (appPaths == null)
             {
@@ -55,6 +57,7 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
             }
 
             _logger = logger;
+            _getHttpMessageHandler = getHttpMessageHandler;
             _appPaths = appPaths;
         }
 
@@ -85,15 +88,9 @@ namespace MediaBrowser.Common.Implementations.HttpClientManager
 
             if (!_httpClients.TryGetValue(key, out client))
             {
-                var handler = new WebRequestHandler
-                {
-                    CachePolicy = new RequestCachePolicy(RequestCacheLevel.Revalidate),
-                    AutomaticDecompression = enableHttpCompression ? DecompressionMethods.Deflate : DecompressionMethods.None
-                };
-
                 client = new HttpClientInfo
                 {
-                    HttpClient = new HttpClient(handler)
+                    HttpClient = new HttpClient(_getHttpMessageHandler(enableHttpCompression))
                     {
                         Timeout = TimeSpan.FromSeconds(20)
                     }

+ 0 - 1
MediaBrowser.Common.Implementations/MediaBrowser.Common.Implementations.csproj

@@ -54,7 +54,6 @@
     <Reference Include="System.Management" />
     <Reference Include="System.Net" />
     <Reference Include="System.Net.Http" />
-    <Reference Include="System.Net.Http.WebRequest" />
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>

+ 1 - 1
MediaBrowser.Server.Implementations/MediaBrowser.Server.Implementations.csproj

@@ -101,9 +101,9 @@
       <HintPath>..\packages\Rx-Linq.2.1.30214.0\lib\Net45\System.Reactive.Linq.dll</HintPath>
     </Reference>
     <Reference Include="System.Runtime.Serialization" />
-    <Reference Include="System.Web" />
     <Reference Include="Microsoft.CSharp" />
     <Reference Include="System.Data" />
+    <Reference Include="System.Web" />
     <Reference Include="System.Xml" />
   </ItemGroup>
   <ItemGroup>

+ 12 - 0
MediaBrowser.ServerApplication/ApplicationHost.cs

@@ -50,6 +50,9 @@ using System.Data.SQLite;
 using System.Diagnostics;
 using System.IO;
 using System.Linq;
+using System.Net;
+using System.Net.Cache;
+using System.Net.Http;
 using System.Reflection;
 using System.Threading.Tasks;
 
@@ -660,5 +663,14 @@ namespace MediaBrowser.ServerApplication
         {
             get { return Constants.MbServerPkgName; }
         }
+
+        protected override HttpMessageHandler GetHttpMessageHandler(bool enableHttpCompression)
+        {
+            return new WebRequestHandler
+            {
+                CachePolicy = new RequestCachePolicy(RequestCacheLevel.Revalidate),
+                AutomaticDecompression = enableHttpCompression ? DecompressionMethods.Deflate : DecompressionMethods.None
+            };
+        }
     }
 }

+ 2 - 0
MediaBrowser.ServerApplication/MediaBrowser.ServerApplication.csproj

@@ -184,6 +184,8 @@
     </Reference>
     <Reference Include="System.Drawing" />
     <Reference Include="System.Net" />
+    <Reference Include="System.Net.Http" />
+    <Reference Include="System.Net.Http.WebRequest" />
     <Reference Include="System.Runtime.Remoting" />
     <Reference Include="System.Windows.Forms" />
     <Reference Include="System.Windows.Interactivity, Version=4.5.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35, processorArchitecture=MSIL">