OSDN Git Service

Streaming API用のHttpClientの設定を行う処理を移動
authorKimura Youichi <kim.upsilon@bucyou.net>
Sat, 5 Nov 2016 04:48:18 +0000 (13:48 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Fri, 11 Nov 2016 15:11:11 +0000 (00:11 +0900)
OpenTween/Connection/Networking.cs
OpenTween/Connection/TwitterApiConnection.cs

index df18c37..51aafd3 100644 (file)
@@ -138,12 +138,11 @@ namespace OpenTween.Connection
         /// OpenTween で必要な設定を施した HttpClientHandler インスタンスを生成します
         /// </summary>
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope")]
-        public static WebRequestHandler CreateHttpClientHandler(bool streaming = false)
+        public static WebRequestHandler CreateHttpClientHandler()
         {
             var handler = new WebRequestHandler
             {
-                AutomaticDecompression = streaming ? DecompressionMethods.None
-                                                   : DecompressionMethods.GZip | DecompressionMethods.Deflate,
+                AutomaticDecompression = DecompressionMethods.GZip | DecompressionMethods.Deflate,
             };
 
             if (Networking.Proxy != null)
@@ -167,7 +166,7 @@ namespace OpenTween.Connection
         /// このメソッドを使用する場合は、WebProxyChanged イベントが発生する度に HttpClient を生成し直すように実装してください。
         /// </remarks>
         [SuppressMessage("Microsoft.Reliability", "CA2000:DisposeObjectsBeforeLosingScope")]
-        public static HttpClient CreateHttpClient(HttpMessageHandler handler, bool streaming = false)
+        public static HttpClient CreateHttpClient(HttpMessageHandler handler)
         {
             HttpClient client;
             if (ForceIPv4)
@@ -175,8 +174,7 @@ namespace OpenTween.Connection
             else
                 client = new HttpClient(handler);
 
-            client.Timeout = streaming ? Timeout.InfiniteTimeSpan
-                                       : Networking.DefaultTimeout;
+            client.Timeout = Networking.DefaultTimeout;
             client.DefaultRequestHeaders.Add("User-Agent", Networking.GetUserAgentString());
 
             return client;
index 4185ac8..4bbe61f 100644 (file)
@@ -28,6 +28,7 @@ using System.Net.Cache;
 using System.Net.Http;
 using System.Runtime.Serialization;
 using System.Text;
+using System.Threading;
 using System.Threading.Tasks;
 using System.Web;
 using OpenTween.Api;
@@ -65,8 +66,10 @@ namespace OpenTween.Connection
 
         private void InitializeHttpClients()
         {
-            this.http = InitializeHttpClient(this.AccessToken, this.AccessSecret, streaming: false);
-            this.httpStreaming = InitializeHttpClient(this.AccessToken, this.AccessSecret, streaming: true);
+            this.http = InitializeHttpClient(this.AccessToken, this.AccessSecret);
+
+            this.httpStreaming = InitializeHttpClient(this.AccessToken, this.AccessSecret, disableGzip: true);
+            this.httpStreaming.Timeout = Timeout.InfiniteTimeSpan;
         }
 
         public async Task<T> GetAsync<T>(Uri uri, IDictionary<string, string> param, string endpointName)
@@ -437,16 +440,19 @@ namespace OpenTween.Connection
             }
         }
 
-        private static HttpClient InitializeHttpClient(string accessToken, string accessSecret, bool streaming = false)
+        private static HttpClient InitializeHttpClient(string accessToken, string accessSecret, bool disableGzip = false)
         {
-            var innerHandler = Networking.CreateHttpClientHandler(streaming);
+            var innerHandler = Networking.CreateHttpClientHandler();
             innerHandler.CachePolicy = new RequestCachePolicy(RequestCacheLevel.BypassCache);
 
+            if (!disableGzip)
+                innerHandler.AutomaticDecompression = DecompressionMethods.None;
+
             var handler = new OAuthHandler(innerHandler,
                 ApplicationSettings.TwitterConsumerKey, ApplicationSettings.TwitterConsumerSecret,
                 accessToken, accessSecret);
 
-            return Networking.CreateHttpClient(handler, streaming);
+            return Networking.CreateHttpClient(handler);
         }
     }
 }