/// <summary> /// Blocks a user /// </summary> /// <param name="twitterCtx">Twitter Context</param> /// <param name="userID">ID of user to block</param> /// <param name="screenName">Screen name of user to block</param> /// <param name="includeEntities">Set to false to not include entities (default: true)</param> /// <param name="skipStatus">Don't include status</param> /// <param name="callback">Async Callback used in Silverlight queries</param> /// <returns>User that was unblocked</returns> public static User CreateBlock(this TwitterContext twitterCtx, ulong userID, string screenName, bool includeEntities, bool skipStatus, Action<TwitterAsyncResponse<User>> callback) { if (userID <= 0 && string.IsNullOrEmpty(screenName)) { throw new ArgumentException("Either userID or screenName are required parameters.", "UserIDOrScreenName"); } var blocksUrl = twitterCtx.BaseUrl + "blocks/create.json"; var reqProc = new BlocksRequestProcessor<User>(); ITwitterExecute twitExe = twitterCtx.TwitterExecutor; twitExe.AsyncCallback = callback; var resultsJson = twitExe.PostToTwitter( blocksUrl, new Dictionary<string, string> { { "user_id", userID <= 0 ? (string)null : userID.ToString() }, { "screen_name", screenName }, { "include_entities", includeEntities.ToString().ToLower() }, { "skip_status", skipStatus.ToString().ToLower() } }, response => reqProc.ProcessActionResult(response, UserAction.SingleUser)); User results = reqProc.ProcessActionResult(resultsJson, UserAction.SingleUser); return results; }
public void ProcessResults_Retains_Original_Input_Parameters() { var blockedReqProc = new BlocksRequestProcessor<Blocks> { Type = BlockingType.List, ScreenName = "somename", Page = 1, PerPage = 10, IncludeEntities = true, SkipStatus = true, Cursor = "789" }; var blocks = blockedReqProc.ProcessResults(BlockedUsersJson); Assert.IsNotNull(blocks); Assert.IsNotNull(blocks.SingleOrDefault()); var block = blocks.Single(); Assert.AreEqual(BlockingType.List, block.Type); Assert.AreEqual("somename", block.ScreenName); Assert.AreEqual(1, block.Page); Assert.AreEqual(10, block.PerPage); Assert.IsTrue(block.IncludeEntities); Assert.IsTrue(block.SkipStatus); Assert.AreEqual("789", block.Cursor); }
public void ProcessResults_Returns_Empty_Collection_When_Empty_Results() { var blocksReqProc = new BlocksRequestProcessor<Blocks> { BaseUrl = "https://api.twitter.com/1.1/" }; var blocks = blocksReqProc.ProcessResults(string.Empty); Assert.AreEqual(1, blocks.Count); }
public void ProcessExistsResultsTest() { BlocksRequestProcessor target = new BlocksRequestProcessor(); XElement twitterResponse = XElement.Parse(m_blockExistsXml); IList actual = target.ProcessResults(twitterResponse); var actualQuery = actual as IList <Blocks>; Assert.IsNotNull(actualQuery); Assert.AreEqual(actualQuery.Count(), 1); }
public void BuildUrl_Throws_On_Null_Parameters() { var blockReqProc = new BlocksRequestProcessor <Blocks> { BaseUrl = "https://api.twitter.com/1.1/" }; var ex = L2TAssert.Throws <ArgumentException>(() => blockReqProc.BuildUrl(null)); Assert.AreEqual("Type", ex.ParamName); }
public void ProcessIdsResultsTest() { BlocksRequestProcessor <Blocks> target = new BlocksRequestProcessor <Blocks>(); XElement twitterResponse = XElement.Parse(m_blockedUsersXml); IList actual = target.ProcessResults(twitterResponse); var actualQuery = actual as IList <Blocks>; Assert.IsNotNull(actualQuery); Assert.AreEqual(actualQuery[0].Users.Count, 2); }
public void ProcessResults_Returns_Empty_Collection_When_Empty_Results() { var blocksReqProc = new BlocksRequestProcessor <Blocks> { BaseUrl = "https://api.twitter.com/1.1/" }; var blocks = blocksReqProc.ProcessResults(string.Empty); Assert.Equal(1, blocks.Count); }
public void BuildUrl_Throws_On_Missing_Type_Parameter() { var blockReqProc = new BlocksRequestProcessor <Blocks> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary <string, string>(); var ex = L2TAssert.Throws <ArgumentException>(() => blockReqProc.BuildUrl(parameters)); Assert.AreEqual("Type", ex.ParamName); }
public void ProcessResults_Handles_BlockedUsers() { var blockedReqProc = new BlocksRequestProcessor<Blocks> { Type = BlockingType.List }; IList actual = blockedReqProc.ProcessResults(BlockedUsersJson); var actualQuery = actual as IList<Blocks>; Assert.IsNotNull(actualQuery); Assert.AreEqual(actualQuery[0].Users.Count, 3); }
public void ProcessResults_Handles_BlockedUsers() { var blockedReqProc = new BlocksRequestProcessor <Blocks> { Type = BlockingType.List }; IList actual = blockedReqProc.ProcessResults(BlockedUsersJson); var actualQuery = actual as IList <Blocks>; Assert.IsNotNull(actualQuery); Assert.AreEqual(actualQuery[0].Users.Count, 3); }
public void ProcessResults_Handles_IDs() { var blockReqProc = new BlocksRequestProcessor<Blocks> { Type = BlockingType.Ids }; IList<Blocks> blocksResponse = blockReqProc.ProcessResults(BlockedIDsJson); Assert.IsNotNull(blocksResponse); Blocks blocks = blocksResponse.First(); List<string> ids = blocks.IDs; Assert.AreEqual(5, ids.Count()); Assert.AreEqual("35080286", ids.First()); }
public void ProcessResults_Handles_IDs() { var blockReqProc = new BlocksRequestProcessor <Blocks> { Type = BlockingType.Ids }; IList <Blocks> blocksResponse = blockReqProc.ProcessResults(BlockedIDsJson); Assert.IsNotNull(blocksResponse); Blocks blocks = blocksResponse.First(); List <string> ids = blocks.IDs; Assert.AreEqual(5, ids.Count()); Assert.AreEqual("35080286", ids.First()); }
public void BuildIDsURLTest() { BlocksRequestProcessor <Blocks> target = new BlocksRequestProcessor <Blocks>() { BaseUrl = "http://twitter.com/" }; Dictionary <string, string> parameters = new Dictionary <string, string> { { "Type", ((int)BlockingType.IDS).ToString() } }; string expected = "http://twitter.com/blocks/blocking/ids.xml"; string actual = target.BuildURL(parameters); Assert.AreEqual(expected, actual); }
public void BuildBlockingURLTest() { BlocksRequestProcessor target = new BlocksRequestProcessor() { BaseUrl = "http://twitter.com/" }; Dictionary <string, string> parameters = new Dictionary <string, string> { { "Type", ((int)BlockingType.Blocking).ToString() }, { "Page", "2" } }; string expected = "http://twitter.com/blocks/blocking.xml?page=2"; string actual = target.BuildURL(parameters); Assert.AreEqual(expected, actual); }
public void BuildUrl_Creates_BlockingIDs_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/blocks/ids.json?cursor=789"; var blocksReqProc = new BlocksRequestProcessor <Blocks> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary <string, string> { { "Type", ((int)BlockingType.Ids).ToString(CultureInfo.InvariantCulture) }, { "Cursor", "789" } }; Request req = blocksReqProc.BuildUrl(parameters); Assert.AreEqual(ExpectedUrl, req.FullUrl); }
public void NullParametersTest() { BlocksRequestProcessor <Blocks> target = new BlocksRequestProcessor <Blocks>() { BaseUrl = "http://twitter.com/" }; 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 BuildExistsURLTest() { BlocksRequestProcessor <Blocks> target = new BlocksRequestProcessor <Blocks>() { BaseUrl = "http://twitter.com/" }; Dictionary <string, string> parameters = new Dictionary <string, string> { { "Type", ((int)BlockingType.Exists).ToString() }, { "ID", "123" }, { "UserID", "456" }, { "ScreenName", "789" } }; string expected = "http://twitter.com/blocks/exists/123.xml?user_id=456&screen_name=789"; string actual = target.BuildURL(parameters); Assert.AreEqual(expected, actual); }
public void GetParameters_Parses_Parameters() { var blocksReqProc = new BlocksRequestProcessor <Blocks>(); Expression <Func <Blocks, bool> > expression = block => block.Type == BlockingType.List && block.UserID == 123ul && block.ScreenName == "JoeMayo" && block.Page == 1 && block.PerPage == 10 && block.IncludeEntities == true && block.SkipStatus == true && block.Cursor == "789"; var lambdaExpression = expression as LambdaExpression; var queryParams = blocksReqProc.GetParameters(lambdaExpression); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("Type", ((int)BlockingType.List).ToString(CultureInfo.InvariantCulture)))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("UserID", "123"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("ScreenName", "JoeMayo"))); 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>("SkipStatus", "True"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("IncludeEntities", "True"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair <string, string>("Cursor", "789"))); }
public void BuildUrl_Creates_List_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/blocks/list.json?page=2&per_page=10&include_entities=true&skip_status=true&cursor=789"; var blocksReqProc = new BlocksRequestProcessor <Blocks> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary <string, string> { { "Type", ((int)BlockingType.List).ToString(CultureInfo.InvariantCulture) }, { "Page", "2" }, { "PerPage", "10" }, { "SkipStatus", true.ToString() }, { "Cursor", "789" }, { "IncludeEntities", true.ToString() } }; Request req = blocksReqProc.BuildUrl(parameters); Assert.AreEqual(ExpectedUrl, req.FullUrl); }
/// <summary> /// Unblocks a user. /// </summary> /// <param name="userID">ID of user to block</param> /// <param name="screenName">Screen name of user to block</param> /// <param name="includeEntities">Set to false to not include entities (default: true)</param> /// <param name="skipStatus">Don't include status</param> /// <returns>User that was unblocked</returns> public async Task<User> DestroyBlockAsync(ulong userID, string screenName, bool includeEntities, bool skipStatus, CancellationToken cancelToken = default(CancellationToken)) { if (userID <= 0 && string.IsNullOrWhiteSpace(screenName)) throw new ArgumentException("Either userID or screenName are required parameters.", "UserIDOrScreenName"); var blocksUrl = BaseUrl + "blocks/destroy.json"; var reqProc = new BlocksRequestProcessor<User>(); RawResult = await TwitterExecutor.PostToTwitterAsync<User>( blocksUrl, new Dictionary<string, string> { { "user_id", userID <= 0 ? (string)null : userID.ToString() }, { "screen_name", screenName }, { "include_entities", includeEntities.ToString().ToLower() }, { "skip_status", skipStatus.ToString().ToLower() } }, cancelToken) .ConfigureAwait(false); return reqProc.ProcessActionResult(RawResult, UserAction.SingleUser); }
public void BuildExistsURLTest() { BlocksRequestProcessor<Blocks> target = new BlocksRequestProcessor<Blocks>() { BaseUrl = "http://twitter.com/" }; Dictionary<string, string> parameters = new Dictionary<string, string> { { "Type", ((int)BlockingType.Exists).ToString() }, { "ID", "123" }, { "UserID", "456" }, { "ScreenName", "789" } }; string expected = "http://twitter.com/blocks/exists/123.xml?user_id=456&screen_name=789"; string actual = target.BuildURL(parameters); Assert.AreEqual(expected, actual); }
public void BuildIDsURLTest() { BlocksRequestProcessor<Blocks> target = new BlocksRequestProcessor<Blocks>() { BaseUrl = "http://twitter.com/" }; Dictionary<string, string> parameters = new Dictionary<string, string> { { "Type", ((int)BlockingType.IDS).ToString() } }; string expected = "http://twitter.com/blocks/blocking/ids.xml"; string actual = target.BuildURL(parameters); Assert.AreEqual(expected, actual); }
public void GetParametersTest() { BlocksRequestProcessor<Blocks> target = new BlocksRequestProcessor<Blocks>(); Expression<Func<Blocks, bool>> expression = graph => graph.Type == BlockingType.Blocking && graph.ID == "123" && graph.ScreenName == "456" && graph.Page == 1; LambdaExpression lambdaExpression = expression as LambdaExpression; var queryParams = target.GetParameters(lambdaExpression); Assert.IsTrue( queryParams.Contains( new KeyValuePair<string, string>("Type", ((int)BlockingType.Blocking).ToString()))); Assert.IsTrue( queryParams.Contains( new KeyValuePair<string, string>("ID", "123"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair<string, string>("ScreenName", "456"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair<string, string>("Page", "1"))); }
public void NullParametersTest() { BlocksRequestProcessor<Blocks> target = new BlocksRequestProcessor<Blocks>() { BaseUrl = "http://twitter.com/" }; 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 GetParameters_Parses_Parameters() { var blocksReqProc = new BlocksRequestProcessor<Blocks>(); Expression<Func<Blocks, bool>> expression = block => block.Type == BlockingType.List && block.UserID == 123ul && block.ScreenName == "JoeMayo" && block.Page == 1 && block.PerPage == 10 && block.IncludeEntities == true && block.SkipStatus == true && block.Cursor == "789"; var lambdaExpression = expression as LambdaExpression; var queryParams = blocksReqProc.GetParameters(lambdaExpression); Assert.IsTrue( queryParams.Contains( new KeyValuePair<string, string>("Type", ((int)BlockingType.List).ToString(CultureInfo.InvariantCulture)))); Assert.IsTrue( queryParams.Contains( new KeyValuePair<string, string>("UserID", "123"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair<string, string>("ScreenName", "JoeMayo"))); 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>("SkipStatus", "True"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair<string, string>("IncludeEntities", "True"))); Assert.IsTrue( queryParams.Contains( new KeyValuePair<string, string>("Cursor", "789"))); }
public void BlocksRequestProcessor_Works_With_Actions() { var blocksReqProc = new BlocksRequestProcessor<User>(); Assert.IsInstanceOfType(blocksReqProc, typeof(IRequestProcessorWithAction<User>)); }
public void ProcessIdsResultsTest() { BlocksRequestProcessor<Blocks> target = new BlocksRequestProcessor<Blocks>(); XElement twitterResponse = XElement.Parse(m_blockedUsersXml); IList actual = target.ProcessResults(twitterResponse); var actualQuery = actual as IList<Blocks>; Assert.IsNotNull(actualQuery); Assert.AreEqual(actualQuery[0].Users.Count, 2); }
public void BlocksRequestProcessor_Works_With_Actions() { var blocksReqProc = new BlocksRequestProcessor<User>(); Assert.IsAssignableFrom<IRequestProcessorWithAction<User>>(blocksReqProc); }
public void BuildUrl_Throws_On_Null_Parameters() { var blockReqProc = new BlocksRequestProcessor<Blocks> { BaseUrl = "https://api.twitter.com/1.1/" }; var ex = L2TAssert.Throws<ArgumentException>(() => blockReqProc.BuildUrl(null)); Assert.AreEqual("Type", ex.ParamName); }
public void BuildUrl_Throws_On_Missing_Type_Parameter() { var blockReqProc = new BlocksRequestProcessor<Blocks> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string>(); var ex = L2TAssert.Throws<ArgumentException>(() => blockReqProc.BuildUrl(parameters)); Assert.AreEqual("Type", ex.ParamName); }
public void BuildUrl_Creates_BlockingIDs_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/blocks/ids.json?cursor=789"; var blocksReqProc = new BlocksRequestProcessor<Blocks> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int)BlockingType.Ids).ToString(CultureInfo.InvariantCulture) }, { "Cursor", "789" } }; Request req = blocksReqProc.BuildUrl(parameters); Assert.AreEqual(ExpectedUrl, req.FullUrl); }
public void BuildUrl_Creates_List_Url() { const string ExpectedUrl = "https://api.twitter.com/1.1/blocks/list.json?page=2&per_page=10&include_entities=true&skip_status=true&cursor=789"; var blocksReqProc = new BlocksRequestProcessor<Blocks> { BaseUrl = "https://api.twitter.com/1.1/" }; var parameters = new Dictionary<string, string> { { "Type", ((int)BlockingType.List).ToString(CultureInfo.InvariantCulture) }, { "Page", "2" }, { "PerPage", "10" }, { "SkipStatus", true.ToString() }, { "Cursor", "789" }, { "IncludeEntities", true.ToString() } }; Request req = blocksReqProc.BuildUrl(parameters); Assert.AreEqual(ExpectedUrl, req.FullUrl); }
public void BlocksRequestProcessor_Works_With_Actions() { var blocksReqProc = new BlocksRequestProcessor <User>(); Assert.IsInstanceOfType(blocksReqProc, typeof(IRequestProcessorWithAction <User>)); }
public void BlocksRequestProcessor_Works_With_Actions() { var blocksReqProc = new BlocksRequestProcessor <User>(); Assert.IsAssignableFrom <IRequestProcessorWithAction <User> >(blocksReqProc); }