OSDN Git Service

TwitterApi.ListsMembershipsメソッドを追加
authorKimura Youichi <kim.upsilon@bucyou.net>
Sun, 18 Sep 2016 08:04:26 +0000 (17:04 +0900)
committerKimura Youichi <kim.upsilon@bucyou.net>
Mon, 19 Sep 2016 08:50:40 +0000 (17:50 +0900)
https://dev.twitter.com/rest/reference/get/lists/memberships

OpenTween.Tests/Api/TwitterApiTest.cs
OpenTween/Api/TwitterApi.cs

index 814a42a..2587655 100644 (file)
@@ -367,6 +367,34 @@ namespace OpenTween.Api
         }
 
         [Fact]
+        public async Task ListsMemberships_Test()
+        {
+            using (var twitterApi = new TwitterApi())
+            {
+                var mock = new Mock<IApiConnection>();
+                mock.Setup(x =>
+                    x.GetAsync<TwitterLists>(
+                        new Uri("lists/memberships.json", UriKind.Relative),
+                        new Dictionary<string, string> {
+                            { "screen_name", "twitterapi" },
+                            { "cursor", "-1" },
+                            { "count", "100" },
+                            { "filter_to_owned_lists", "true" },
+                        },
+                        "/lists/memberships")
+                )
+                .ReturnsAsync(new TwitterLists());
+
+                twitterApi.apiConnection = mock.Object;
+
+                await twitterApi.ListsMemberships("twitterapi", cursor: -1L, count: 100, filterToOwnedLists: true)
+                    .ConfigureAwait(false);
+
+                mock.VerifyAll();
+            }
+        }
+
+        [Fact]
         public async Task ListsCreate_Test()
         {
             using (var twitterApi = new TwitterApi())
index 5c80ea1..5f904d5 100644 (file)
@@ -219,6 +219,24 @@ namespace OpenTween.Api
             return this.apiConnection.GetAsync<TwitterLists>(endpoint, param, "/lists/subscriptions");
         }
 
+        public Task<TwitterLists> ListsMemberships(string screenName, long? cursor = null, int? count = null, bool? filterToOwnedLists = null)
+        {
+            var endpoint = new Uri("lists/memberships.json", UriKind.Relative);
+            var param = new Dictionary<string, string>
+            {
+                ["screen_name"] = screenName,
+            };
+
+            if (cursor != null)
+                param["cursor"] = cursor.ToString();
+            if (count != null)
+                param["count"] = count.ToString();
+            if (filterToOwnedLists != null)
+                param["filter_to_owned_lists"] = filterToOwnedLists.Value ? "true" : "false";
+
+            return this.apiConnection.GetAsync<TwitterLists>(endpoint, param, "/lists/memberships");
+        }
+
         public Task<LazyJson<TwitterList>> ListsCreate(string name, string description = null, bool? @private = null)
         {
             var endpoint = new Uri("lists/create.json", UriKind.Relative);