/// <summary> /// Creates a new list /// </summary> /// <param name="listName">name of list</param> /// <param name="mode">public or private</param> /// <param name="description">list description</param> /// <param name="callback">Async Callback used in Silverlight queries</param> /// <returns>List info for new list</returns> public static List CreateList(this TwitterContext ctx, string listName, string mode, string description, Action<TwitterAsyncResponse<List>> callback) { if (string.IsNullOrEmpty(listName)) { throw new ArgumentException("listName is required.", "listName"); } var createUrl = ctx.BaseUrl + "lists/create.json"; var reqProc = new ListRequestProcessor<List>(); ITwitterExecute exec = ctx.TwitterExecutor; exec.AsyncCallback = callback; var resultsJson = exec.PostToTwitter( createUrl, new Dictionary<string, string> { { "name", listName }, { "mode", mode }, { "description", description } }, response => reqProc.ProcessActionResult(response, ListAction.Create)); List results = reqProc.ProcessActionResult(resultsJson, ListAction.Create); return results; }
/// <summary> /// Modifies an existing list. /// </summary> /// <param name="listID">ID of list</param> /// <param name="slug">name of list</param> /// <param name="ownerID">ID of user who owns the list.</param> /// <param name="ownerScreenName">Screen name of user who owns the list.</param> /// <param name="mode">public or private</param> /// <param name="description">list description</param> /// <returns>List info for modified list</returns> public async Task<List> UpdateListAsync(ulong listID, string slug, string name, ulong ownerID, string ownerScreenName, string mode, string description, CancellationToken cancelToken = default(CancellationToken)) { if (listID == 0 && string.IsNullOrWhiteSpace(slug)) throw new ArgumentException("Either listID or slug is required.", ListIDOrSlugParam); if (!string.IsNullOrWhiteSpace(slug) && ownerID == 0 && string.IsNullOrWhiteSpace(ownerScreenName)) throw new ArgumentException("If you specify a Slug, you must also specify either OwnerID or OwnerScreenName.", OwnerIDOrOwnerScreenNameParam); var updateListUrl = BaseUrl + "lists/update.json"; var reqProc = new ListRequestProcessor<List>(); RawResult = await TwitterExecutor.PostToTwitterAsync<List>( updateListUrl, new Dictionary<string, string> { { "list_id", listID.ToString() }, { "slug", slug }, { "owner_id", ownerID.ToString() }, { "owner_screen_name", ownerScreenName }, { "mode", mode }, { "description", description }, { "name", name } }, cancelToken) .ConfigureAwait(false); return reqProc.ProcessActionResult(RawResult, ListAction.Update); }
public void ProcessResultsTest() { ListRequestProcessor <List> listProc = new ListRequestProcessor <List>(); XElement twitterResponse = XElement.Load(new StringReader(m_testQueryResponse)); var actual = listProc.ProcessResults(twitterResponse.Descendants("list").First()); var actualQuery = actual as IList <List>; Assert.IsNotNull(actualQuery); Assert.AreEqual(actualQuery.Count(), 1); }
public void BuildURLTestMissingScreenName() { ListRequestProcessor <List> target = new ListRequestProcessor <List> { BaseUrl = "https://api.twitter.com/1/" }; Dictionary <string, string> parameters = new Dictionary <string, string> { { "Type", "0" }, }; string expected = "https://api.twitter.com/1/JoeMayo/lists.xml"; string actual = target.BuildURL(parameters); Assert.AreEqual(expected, actual); }
public void GetParametersTest() { ListRequestProcessor <List> target = new ListRequestProcessor <List>(); Expression <Func <List, bool> > expression = list => list.Type == ListType.Members && list.ScreenName == "JoeMayo" && list.Cursor == "123" && list.ListID == "456" && list.MaxID == 789 && list.Page == 1 && list.PerPage == 10 && list.SinceID == 123 && list.ID == "456"; LambdaExpression lambdaExpression = expression as LambdaExpression; var queryParams = target.GetParameters(lambdaExpression); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("Type", ((int)ListType.Members).ToString()))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("ScreenName", "JoeMayo"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("Cursor", "123"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("ListID", "456"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("MaxID", "789"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("Page", "1"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("PerPage", "10"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("SinceID", "123"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("ID", "456"))); }
public void NullParametersTest() { ListRequestProcessor <List> target = new ListRequestProcessor <List> { BaseUrl = "https://api.twitter.com/1/" }; Dictionary <string, string> parameters = null; string actual; try { actual = target.BuildURL(parameters); Assert.Fail("Expected ArgumentException."); } catch (ArgumentException ae) { Assert.AreEqual <string>("Type", ae.ParamName); } }
public void BuildStatusUrlTestWithParameters() { ListRequestProcessor <List> target = new ListRequestProcessor <List>() { BaseUrl = "https://api.twitter.com/1/" }; var parameters = new Dictionary <string, string> { { "Type", ((int)ListType.Statuses).ToString() }, { "ScreenName", "JoeMayo" }, { "ListID", "1234567" }, { "MaxID", "9876543" }, { "SinceID", "2345678" }, { "PerPage", "100" }, { "Page", "2" } }; string expected = "https://api.twitter.com/1/JoeMayo/lists/1234567/statuses.xml?max_id=9876543&since_id=2345678&per_page=100&page=2"; string actual = target.BuildURL(parameters); Assert.AreEqual(expected, actual); }
/// <summary> /// Creates a new list. /// </summary> /// <param name="listName">name of list</param> /// <param name="mode">public or private</param> /// <param name="description">list description</param> /// <returns>List info for new list</returns> public async Task<List> CreateListAsync(string listName, string mode, string description, CancellationToken cancelToken = default(CancellationToken)) { if (string.IsNullOrWhiteSpace(listName)) throw new ArgumentException("listName is required.", "listName"); var createUrl = BaseUrl + "lists/create.json"; var reqProc = new ListRequestProcessor<List>(); RawResult = await TwitterExecutor.PostToTwitterAsync<List>( createUrl, new Dictionary<string, string> { { "name", listName }, { "mode", mode }, { "description", description } }, cancelToken) .ConfigureAwait(false); return reqProc.ProcessActionResult(RawResult, ListAction.Create); }
void TestSingleUserResponse(ListRequestProcessor<List> listProc) { var listsResponse = listProc.ProcessResults(SingleUserResponse); var lists = listsResponse as IList<List>; Assert.NotNull(lists); Assert.Single(lists); var users = lists.Single().Users; Assert.NotNull(users); Assert.Single(users); Assert.Equal("LINQ to Tweeter Test", users.Single().Name); }
void TestMultipleUsersResponse(ListRequestProcessor<List> listProc) { var listsResponse = listProc.ProcessResults(MultipleUsersResponse); var lists = listsResponse as IList<List>; Assert.NotNull(lists); Assert.Single(lists); var list = lists.Single(); var users = list.Users; Assert.NotNull(users); Assert.Equal(3, users.Count); Assert.Equal("LINQ to Tweeter Test", users.First().Name); var cursor = list.CursorMovement; Assert.NotNull(cursor); Assert.Equal("1352721896474871923", cursor.Next); Assert.Equal("7", cursor.Previous); }
public void ProcessResults_Handles_Subscriptions_Response() { var listProc = new ListRequestProcessor<List> { Type = ListType.Subscriptions }; TestMultipleListsResponse(listProc); }
public void BuildShowUrl_Returns_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/lists/show.json?slug=test&owner_id=123&owner_screen_name=JoeMayo&list_id=456"; var listReqProc = new ListRequestProcessor<List>() { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int) ListType.Show).ToString() }, { "OwnerID", "123" }, { "OwnerScreenName", "JoeMayo" }, { "Slug", "test" }, { "ListID", "456" } }; Request req = listReqProc.BuildUrl(parameters); Assert.Equal(ExpectedUrl, req.FullUrl); }
public void GetParameters_Parses_All_Available_Parameters() { var listReqProc = new ListRequestProcessor<List>(); Expression<Func<List, bool>> expression = list => list.Type == ListType.Members && list.UserID == "456" && list.ScreenName == "JoeMayo" && list.ListID == "456" && list.Slug == "test" && list.OwnerID == "789" && list.OwnerScreenName == "JoeMayo" && list.Cursor == "123" && list.MaxID == 789 && list.Page == 1 && list.Count == 10 && list.SinceID == 123 && list.FilterToOwnedLists == true && list.TrimUser == true && list.IncludeEntities == true && list.IncludeRetweets == true && list.SkipStatus == true && list.Reverse == true; var queryParams = listReqProc.GetParameters(expression); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("Type", ((int)ListType.Members).ToString()))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("UserID", "456"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("ScreenName", "JoeMayo"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("ListID", "456"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("Slug", "test"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("OwnerID", "789"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("OwnerScreenName", "JoeMayo"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("Cursor", "123"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("MaxID", "789"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("Page", "1"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("Count", "10"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("SinceID", "123"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("FilterToOwnedLists", "True"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("TrimUser", "True"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("IncludeEntities", "True"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("IncludeRetweets", "True"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("SkipStatus", "True"))); Assert.True( queryParams.Contains( new KeyValuePair<string, string>("Reverse", "True"))); }
/// <summary> /// Deletes membership for a comma-separated list of users. /// </summary> /// <param name="listID">ID of list.</param> /// <param name="slug">Name of list to remove from.</param> /// <param name="userIds">List of user IDs of users to remove from list membership.</param> /// <param name="screenNames">List of screen names of users to remove from list membership.</param> /// <param name="ownerID">ID of users who owns the list.</param> /// <param name="ownerScreenName">Screen name of user who owns the list.</param> /// <returns>List info for list subscription removed from</returns> async Task<List> DeleteMemberRangeFromListAsync(ulong listID, string slug, List<ulong> userIDs, List<string> screenNames, ulong ownerID, string ownerScreenName, CancellationToken cancelToken = default(CancellationToken)) { if (listID == 0 && string.IsNullOrWhiteSpace(slug)) throw new ArgumentException("Either listID or slug is required.", ListIDOrSlugParam); if (listID == 0 && !string.IsNullOrWhiteSpace(slug) && ownerID == 0 && string.IsNullOrWhiteSpace(ownerScreenName)) throw new ArgumentException("If using slug, you must also provide either ownerID or ownerScreenName.", OwnerIDOrOwnerScreenNameParam); if ((userIDs != null && userIDs.Count > 100) || (screenNames != null && screenNames.Count > 100)) throw new ArgumentException("You can only remove 100 members at a Time.", "userIDs"); var destroyAllUrl = BaseUrl + "lists/members/destroy_all.json"; var reqProc = new ListRequestProcessor<List>(); var parameters = new Dictionary<string, string>(); if (listID != 0) parameters.Add("list_id", listID.ToString()); if (!string.IsNullOrWhiteSpace(slug)) parameters.Add("slug", slug); if (userIDs != null && userIDs.Any()) parameters.Add("user_id", string.Join(",", userIDs.Select(id => id.ToString(CultureInfo.InvariantCulture)).ToArray())); if (screenNames != null && screenNames.Any()) parameters.Add("screen_name", string.Join(",", screenNames)); if (ownerID != 0) parameters.Add("owner_id", ownerID.ToString()); if (!string.IsNullOrWhiteSpace(ownerScreenName)) parameters.Add("owner_screen_name", ownerScreenName); RawResult = await TwitterExecutor.PostToTwitterAsync<List>(destroyAllUrl, parameters, cancelToken).ConfigureAwait(false); return reqProc.ProcessActionResult(RawResult, ListAction.DestroyAll); }
/// <summary> /// Removes a user as a list subscriber. /// </summary> /// <param name="listID">ID of list.</param> /// <param name="slug">Name of list to remove from.</param> /// <param name="ownerID">ID of user who owns the list.</param> /// <param name="ownerScreenName">Screen name of user who owns the list.</param> /// <returns>List info for list subscription removed from</returns> public async Task<List> UnsubscribeFromListAsync(ulong listID, string slug, ulong ownerID, string ownerScreenName, CancellationToken cancelToken = default(CancellationToken)) { if (listID == 0 && string.IsNullOrWhiteSpace(slug)) throw new ArgumentException("Either listID or slug is required.", ListIDOrSlugParam); if (!string.IsNullOrWhiteSpace(slug) && ownerID == 0 && string.IsNullOrWhiteSpace(ownerScreenName)) throw new ArgumentException("If using slug, you must also provide either ownerID or ownerScreenName.", OwnerIDOrOwnerScreenNameParam); var unsubscribeUrl = BaseUrl + "lists/subscribers/destroy.json"; var reqProc = new ListRequestProcessor<List>(); var parameters = new Dictionary<string, string>(); if (listID != 0) parameters.Add("list_id", listID.ToString()); if (!string.IsNullOrWhiteSpace(slug)) parameters.Add("slug", slug); if (ownerID != 0) parameters.Add("owner_id", ownerID.ToString()); if (!string.IsNullOrWhiteSpace(ownerScreenName)) parameters.Add("owner_screen_name", ownerScreenName); RawResult = await TwitterExecutor.PostToTwitterAsync<List>(unsubscribeUrl, parameters, cancelToken).ConfigureAwait(false); return reqProc.ProcessActionResult(RawResult, ListAction.Unsubscribe); }
public void ListRequestProcessor_Handles_Actions() { var listReqProc = new ListRequestProcessor<List>(); Assert.IsAssignableFrom<IRequestProcessorWithAction<List>>(listReqProc); }
public void ListRequestProcessor_Handles_Actions() { var listReqProc = new ListRequestProcessor <List>(); Assert.IsInstanceOfType(listReqProc, typeof(IRequestProcessorWithAction <List>)); }
public void ListRequestProcessor_Handles_Actions() { var listReqProc = new ListRequestProcessor <List>(); Assert.IsAssignableFrom <IRequestProcessorWithAction <List> >(listReqProc); }
public void BuildUrl_Throws_On_Null_Param_List() { const string ExpectedParamName = "Type"; var listReqProc = new ListRequestProcessor<List> { BaseUrl = "https://api.twitter.com/1.1/" }; var ex = Assert.Throws<ArgumentException>(() => listReqProc.BuildUrl(null)); Assert.Equal<string>(ExpectedParamName, ex.ParamName); }
public void BuildListsUrl_Returns_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/lists/list.json?user_id=123&screen_name=JoeMayo&cursor=456&reverse=true"; var listReqProc = new ListRequestProcessor<List>() { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int) ListType.Lists).ToString() }, { "UserID", "123" }, { "ScreenName", "JoeMayo" }, { "Cursor", "456" }, { "Reverse", true.ToString() } }; Request req = listReqProc.BuildUrl(parameters); Assert.Equal(ExpectedUrl, req.FullUrl); }
public void BuildSubscribersUrl_Requires_Non_Null_And_Not_Empty_ListID_Or_Slug() { const string ExpectedParamName = "ListIdOrSlug"; var listReqProc = new ListRequestProcessor<List> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int) ListType.Subscribers).ToString()}, { "ListID", "" }, { "Slug", null } //{"OwnerID", "123"}, }; var ex = Assert.Throws<ArgumentException>(() => listReqProc.BuildUrl(parameters)); Assert.Equal(ExpectedParamName, ex.ParamName); }
public void BuildMembershipsUrl_Does_Not_Add_False_Filter_To_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/lists/memberships.json?user_id=123&screen_name=JoeMayo&cursor=456"; var listReqProc = new ListRequestProcessor<List>() { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int) ListType.Memberships).ToString() }, { "UserID", "123" }, { "ScreenName", "JoeMayo" }, { "Cursor", "456" }, { "FilterToOwnedLists", "false" } }; Request req = listReqProc.BuildUrl(parameters); Assert.Equal(ExpectedUrl, req.FullUrl); }
public void BuildIsSubscriberUrl_Requires_UserID_Or_ScreenName() { const string ExpectedParamName = "UserIdOrScreenName"; var listReqProc = new ListRequestProcessor<List> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int) ListType.IsSubscribed).ToString()}, { "Slug", "test" }, {"OwnerID", "123"}, }; var ex = Assert.Throws<ArgumentException>(() => listReqProc.BuildUrl(parameters)); Assert.Equal(ExpectedParamName, ex.ParamName); }
public void BuildStatusesUrl_Includes_False_Parameters() { const string ExpectedUrl = "https://api.twitter.com/1.1/lists/statuses.json?owner_id=123&owner_screen_name=JoeMayo&slug=test&list_id=456&since_id=789&max_id=234&count=25&per_page=25&page=3&trim_user=false&include_entities=false&include_rts=false"; var listReqProc = new ListRequestProcessor<List>() { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int) ListType.Statuses).ToString() }, { "OwnerID", "123" }, { "OwnerScreenName", "JoeMayo" }, { "Slug", "test" }, { "ListID", "456" }, { "SinceID", "789" }, { "MaxID", "234" }, { "Count", "25" }, { "Page", "3" }, { "TrimUser", "false" }, { "IncludeEntities", "false" }, { "IncludeRetweets", "false" } }; Request req = listReqProc.BuildUrl(parameters); Assert.Equal(ExpectedUrl, req.FullUrl); }
public void BuildUrl_Returns_Ownerships_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/lists/ownerships.json?user_id=789&screen_name=JoeMayo&count=10&cursor=1"; var listReqProc = new ListRequestProcessor<List>() { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int) ListType.Ownerships).ToString() }, { "UserID", "789" }, { "ScreenName", "JoeMayo" }, { "Count", "10" }, { "Cursor", "1" } }; Request req = listReqProc.BuildUrl(parameters); Assert.Equal(ExpectedUrl, req.FullUrl); }
public void BuildUrl_Returns_SubscribersUrl() { const string ExpectedUrl = "https://api.twitter.com/1.1/lists/subscribers.json?owner_id=123&owner_screen_name=JoeMayo&slug=test&list_id=456&cursor=789&include_entities=true&skip_status=true"; var listReqProc = new ListRequestProcessor<List>() { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int) ListType.Subscribers).ToString() }, { "Slug", "test" }, { "OwnerID", "123" }, { "OwnerScreenName", "JoeMayo" }, { "ListID", "456" }, { "Cursor", "789" }, { "IncludeEntities", true.ToString() }, { "SkipStatus", true.ToString() } }; Request req = listReqProc.BuildUrl(parameters); Assert.Equal(ExpectedUrl, req.FullUrl); }
public void ProcessResults_Handles_Statuses_Response() { var listProc = new ListRequestProcessor<List> { Type = ListType.Statuses }; var listsResponse = listProc.ProcessResults(ListStatusesResponse); var lists = listsResponse as IList<List>; Assert.NotNull(lists); Assert.Single(lists); var statuses = lists.Single().Statuses; Assert.NotNull(statuses); Assert.Equal(4, statuses.Count); Assert.True(statuses.First().Text.StartsWith("so using this approach")); }
public void BuildIsSubscriberUrl_Includes_False_Parameters() { const string ExpectedUrl = "https://api.twitter.com/1.1/lists/subscribers/show.json?user_id=789&screen_name=JoeMayo&slug=test&owner_id=123&owner_screen_name=JoeMayo&list_id=456&include_entities=false"; var listReqProc = new ListRequestProcessor<List>() { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int) ListType.IsSubscribed).ToString() }, { "UserID", "789" }, { "ScreenName", "JoeMayo" }, { "Slug", "test" }, { "OwnerID", "123" }, { "OwnerScreenName", "JoeMayo" }, { "ListID", "456" }, { "IncludeEntities", "false" } }; Request req = listReqProc.BuildUrl(parameters); Assert.Equal(ExpectedUrl, req.FullUrl); }
public void BuildUrl_Works_With_Json_Format_Data() { var listReqProc = new ListRequestProcessor<List>(); Assert.IsAssignableFrom<IRequestProcessorWantsJson>(listReqProc); }
void TestMultipleListsResponse(ListRequestProcessor<List> listProc) { var listsResponse = listProc.ProcessResults(MultipleListsResponse); var lists = listsResponse as IList<List>; Assert.NotNull(lists); Assert.Equal(4, lists.Count()); var list = lists.First(); Assert.Equal("test", list.Name); Assert.Equal("@Linq2Tweeter/test", list.FullName); Assert.Equal(1, list.MemberCount); Assert.Equal("This is a test2", list.Description); Assert.Equal("public", list.Mode); Assert.Equal("/Linq2Tweeter/test", list.Uri); var users = list.Users; Assert.NotNull(users); Assert.Single(users); Assert.Equal("LINQ to Tweeter", users.First().Name); Assert.Equal("44758373", list.ListIDResult); Assert.Equal(0, list.SubscriberCount); Assert.Equal(new DateTime(2011, 5, 8, 2, 0, 33), list.CreatedAt); Assert.Equal(false, list.Following); Assert.Equal("test", list.SlugResult); }
public void ProcessResults_Returns_Empty_Collection_When_Empty_Results() { var listReqProc = new ListRequestProcessor<List>(); var results = listReqProc.ProcessResults(string.Empty); Assert.Equal(0, results.Count); }
public void ProcessResults_Handles_Show_Response() { var listProc = new ListRequestProcessor<List> { Type = ListType.Show }; var listsResponse = listProc.ProcessResults(SingleListResponse); var lists = listsResponse as IList<List>; Assert.NotNull(lists); Assert.Single(lists); var list = lists.Single(); Assert.Equal("DotNetTwittterDevs", list.Name); var users = list.Users; Assert.NotNull(users); Assert.Single(users); Assert.Equal("Joe Mayo", users.Single().Name); }
public void ProcessResults_Retains_Original_Input_Parameters() { var listProc = new ListRequestProcessor<List> { Type = ListType.Show, UserID = "123", ScreenName = "JoeMayo", Cursor = "456", ListID = "789", Slug = "MyList", OwnerID = "123", OwnerScreenName = "JoeMayo", MaxID = 150, Count = 50, Page = 1, SinceID = 25, TrimUser = true, IncludeEntities = true, IncludeRetweets = true, FilterToOwnedLists = true, SkipStatus = true, Reverse = true }; var listsResponse = listProc.ProcessResults(SingleListResponse); var lists = listsResponse as IList<List>; Assert.NotNull(lists); Assert.Single(lists); var list = lists.Single(); Assert.Equal(ListType.Show, list.Type); Assert.Equal("123", list.UserID); Assert.Equal("JoeMayo", list.ScreenName); Assert.Equal("456", list.Cursor); Assert.Equal("789", list.ListID); Assert.Equal("MyList", list.Slug); Assert.Equal("123", list.OwnerID); Assert.Equal("JoeMayo", list.OwnerScreenName); Assert.Equal(150ul, list.MaxID); Assert.Equal(50, list.Count); Assert.Equal(1, list.Page); Assert.Equal(25ul, list.SinceID); Assert.True(list.TrimUser); Assert.True(list.IncludeEntities); Assert.True(list.IncludeRetweets); Assert.True(list.FilterToOwnedLists); Assert.True(list.SkipStatus); Assert.True(list.Reverse); }
public void ProcessResults_Handles_Members_Response() { var listProc = new ListRequestProcessor<List> { Type = ListType.Members }; TestMultipleUsersResponse(listProc); }
public void BuildUrl_Creates_Lists_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/lists/list.json?screen_name=JoeMayo"; var listReqProc = new ListRequestProcessor<List> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int)ListType.Lists).ToString() }, { "ScreenName", "JoeMayo" } }; Request req = listReqProc.BuildUrl(parameters); Assert.Equal(ExpectedUrl, req.FullUrl); }
public void ProcessResults_Handles_IsSubscribed_Response() { var listProc = new ListRequestProcessor<List> { Type = ListType.IsSubscribed }; TestSingleUserResponse(listProc); }
public void BuildUrl_Throws_On_Missing_ScreenName() { const string ExpectedParamName = "UserIdOrScreenName"; var listReqProc = new ListRequestProcessor<List> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", "0" }, }; var ex = Assert.Throws<ArgumentException>(() => listReqProc.BuildUrl(parameters)); Assert.Equal(ExpectedParamName, ex.ParamName); }