OSDN Git Service

HttpTwitter.GetConfigurationメソッドをTwitterApiクラスに置き換え
authorKimura Youichi <kim.upsilon@bucyou.net>
Sat, 30 Apr 2016 10:21:06 +0000 (19:21 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Sat, 30 Apr 2016 18:01:12 +0000 (03:01 +0900)
OpenTween.Tests/Api/TwitterApiTest.cs
OpenTween/Api/TwitterApi.cs
OpenTween/Connection/HttpTwitter.cs
OpenTween/Tween.cs
OpenTween/Twitter.cs

index b4aad08..d8f0c44 100644 (file)
@@ -575,6 +575,29 @@ namespace OpenTween.Api
         }
 
         [Fact]
+        public async Task Configuration_Test()
+        {
+            using (var twitterApi = new TwitterApi())
+            {
+                var mock = new Mock<IApiConnection>();
+                mock.Setup(x =>
+                    x.GetAsync<TwitterConfiguration>(
+                        new Uri("help/configuration.json", UriKind.Relative),
+                        null,
+                        "/help/configuration")
+                )
+                .ReturnsAsync(new TwitterConfiguration());
+
+                twitterApi.apiConnection = mock.Object;
+
+                await twitterApi.Configuration()
+                    .ConfigureAwait(false);
+
+                mock.VerifyAll();
+            }
+        }
+
+        [Fact]
         public async Task MediaUpload_Test()
         {
             using (var twitterApi = new TwitterApi())
index c982c3e..29ef9a8 100644 (file)
@@ -297,6 +297,13 @@ namespace OpenTween.Api
             return this.apiConnection.PostLazyAsync<TwitterUser>(endpoint, param, paramMedia);
         }
 
+        public Task<TwitterConfiguration> Configuration()
+        {
+            var endpoint = new Uri("help/configuration.json", UriKind.Relative);
+
+            return this.apiConnection.GetAsync<TwitterConfiguration>(endpoint, null, "/help/configuration");
+        }
+
         public Task<LazyJson<TwitterUploadMediaResult>> MediaUpload(IMediaItem media)
         {
             var endpoint = new Uri("https://upload.twitter.com/1.1/media/upload.json");
index 14e1f2c..2cb921c 100644 (file)
@@ -516,16 +516,6 @@ namespace OpenTween
                 this.CreateApiCalllback("/statuses/retweeters/ids"));
         }
 
-        public HttpStatusCode GetConfiguration(ref string content)
-        {
-            return httpCon.GetContent(GetMethod,
-                this.CreateTwitterUri("/1.1/help/configuration.json"),
-                null,
-                ref content,
-                this.CreateRatelimitHeadersDict(),
-                this.CreateApiCalllback("/help/configuration"));
-        }
-
         public HttpStatusCode VerifyCredentials(ref string content)
         {
             return httpCon.GetContent(GetMethod,
index 04b5b5c..667d5e8 100644 (file)
@@ -3323,7 +3323,7 @@ namespace OpenTween
             await this.workerSemaphore.WaitAsync();
             try
             {
-                await Task.Run(() => tw.RefreshConfiguration());
+                await this.tw.RefreshConfiguration();
 
                 if (this.tw.Configuration.PhotoSizeLimit != 0)
                 {
index bffcd11..72ea277 100644 (file)
@@ -1809,42 +1809,10 @@ namespace OpenTween
         /// t.co の文字列長などの設定情報を更新します
         /// </summary>
         /// <exception cref="WebApiException"/>
-        public void RefreshConfiguration()
+        public async Task RefreshConfiguration()
         {
-            this.Configuration = this.ConfigurationApi();
-        }
-
-        private TwitterConfiguration ConfigurationApi()
-        {
-            HttpStatusCode res;
-            var content = "";
-            try
-            {
-                res = twCon.GetConfiguration(ref content);
-            }
-            catch(Exception e)
-            {
-                throw new WebApiException("Err:" + e.Message + "(" + MethodBase.GetCurrentMethod().Name + ")", e);
-            }
-
-            this.CheckStatusCode(res, content);
-
-            try
-            {
-                return TwitterConfiguration.ParseJson(content);
-            }
-            catch(SerializationException e)
-            {
-                var ex = new WebApiException("Err:Json Parse Error(DataContractJsonSerializer)", content, e);
-                MyCommon.TraceOut(ex);
-                throw ex;
-            }
-            catch(Exception e)
-            {
-                var ex = new WebApiException("Err:Invalid Json!", content, e);
-                MyCommon.TraceOut(ex);
-                throw ex;
-            }
+            this.Configuration = await this.Api.Configuration()
+                .ConfigureAwait(false);
         }
 
         public void GetListsApi()