OSDN Git Service

UserStreamsの接続をGetStreamingStreamAsyncへ分離
authorspx <spx268@gmail.com>
Sat, 2 Jul 2016 18:30:36 +0000 (03:30 +0900)
committerspx <spx268@gmail.com>
Sat, 2 Jul 2016 18:30:36 +0000 (03:30 +0900)
OpenTween/Api/TwitterApi.cs
OpenTween/Connection/IApiConnection.cs
OpenTween/Connection/TwitterApiConnection.cs

index 088a2fd..8d67f7e 100644 (file)
@@ -670,7 +670,7 @@ namespace OpenTween.Api
             if (!string.IsNullOrEmpty(track))
                 param["track"] = track;
 
-            return this.apiConnection.GetStreamAsync(endpoint, param);
+            return this.apiConnection.GetStreamingStreamAsync(endpoint, param);
         }
 
         public OAuthEchoHandler CreateOAuthEchoHandler(Uri authServiceProvider, Uri realm = null)
index 2fca29c..49064a3 100644 (file)
@@ -34,6 +34,8 @@ namespace OpenTween.Connection
 
         Task<Stream> GetStreamAsync(Uri uri, IDictionary<string, string> param);
 
+        Task<Stream> GetStreamingStreamAsync(Uri uri, IDictionary<string, string> param);
+
         Task<LazyJson<T>> PostLazyAsync<T>(Uri uri, IDictionary<string, string> param);
 
         Task<LazyJson<T>> PostLazyAsync<T>(Uri uri, IDictionary<string, string> param, IDictionary<string, IMediaItem> media);
index fa9f87f..4185ac8 100644 (file)
@@ -137,6 +137,28 @@ namespace OpenTween.Connection
             }
         }
 
+        public async Task<Stream> GetStreamingStreamAsync(Uri uri, IDictionary<string, string> param)
+        {
+            var requestUri = new Uri(RestApiBase, uri);
+
+            if (param != null)
+                requestUri = new Uri(requestUri, "?" + MyCommon.BuildQueryString(param));
+
+            try
+            {
+                return await this.httpStreaming.GetStreamAsync(requestUri)
+                    .ConfigureAwait(false);
+            }
+            catch (HttpRequestException ex)
+            {
+                throw TwitterApiException.CreateFromException(ex);
+            }
+            catch (OperationCanceledException ex)
+            {
+                throw TwitterApiException.CreateFromException(ex);
+            }
+        }
+
         public async Task<LazyJson<T>> PostLazyAsync<T>(Uri uri, IDictionary<string, string> param)
         {
             var requestUri = new Uri(RestApiBase, uri);