OSDN Git Service

IApiConnectionLegacy.DeleteAsyncを使用している箇所をDeleteRequestに移行
authorKimura Youichi <kim.upsilon@bucyou.net>
Mon, 11 Dec 2023 17:05:06 +0000 (02:05 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Mon, 11 Dec 2023 17:09:55 +0000 (02:09 +0900)
OpenTween.Tests/Api/TwitterApiTest.cs
OpenTween/Api/TwitterApi.cs

index 87df711..c660337 100644 (file)
@@ -721,10 +721,15 @@ namespace OpenTween.Api
         {
             var mock = new Mock<IApiConnectionLegacy>();
             mock.Setup(x =>
-                x.DeleteAsync(
-                    new Uri("direct_messages/events/destroy.json?id=100", UriKind.Relative))
-            )
-            .Returns(Task.CompletedTask);
+                x.SendAsync(
+                    It.Is<DeleteRequest>(r =>
+                        r.RequestUri == new Uri("direct_messages/events/destroy.json", UriKind.Relative) &&
+                        r.Query != null &&
+                        r.Query.Count == 1 &&
+                        r.Query["id"] == "100"
+                    )
+                )
+            );
 
             using var twitterApi = new TwitterApi();
             twitterApi.ApiConnection = mock.Object;
index e3d3be4..3421222 100644 (file)
@@ -468,18 +468,20 @@ namespace OpenTween.Api
             return response.ReadAsLazyJson<TwitterMessageEventSingle>();
         }
 
-        public Task DirectMessagesEventsDestroy(TwitterDirectMessageId eventId)
+        public async Task DirectMessagesEventsDestroy(TwitterDirectMessageId eventId)
         {
-            var endpoint = new Uri("direct_messages/events/destroy.json", UriKind.Relative);
-            var param = new Dictionary<string, string>
+            var request = new DeleteRequest
             {
-                ["id"] = eventId.Id,
+                RequestUri = new("direct_messages/events/destroy.json", UriKind.Relative),
+                Query = new Dictionary<string, string>
+                {
+                    ["id"] = eventId.Id,
+                },
             };
 
-            // なぜか application/x-www-form-urlencoded でパラメーターを送ると Bad Request になる謎仕様
-            endpoint = new Uri(endpoint.OriginalString + "?" + MyCommon.BuildQueryString(param), UriKind.Relative);
-
-            return this.Connection.DeleteAsync(endpoint);
+            await this.Connection.SendAsync(request)
+                .IgnoreResponse()
+                .ConfigureAwait(false);
         }
 
         public Task<TwitterUser> UsersShow(string screenName)