private void GetUserRecentPostsTest(StringBuilder sb, int num) { sb.Append($"{num}) GetUserRecentPostsTest : "); StepFinished?.Invoke(sb.ToString()); var limit = 3; var request = new CensoredNamedRequestWithOffsetLimitModel { Login = _user.Login, Limit = limit, ShowNsfw = _user.IsNsfw, ShowLowRated = _user.IsLowRated }; var response = _api.GetUserRecentPosts(request, CancellationToken.None).Result; if (IsError1(sb, limit, response, response.Result.Results.Count)) { return; } request.Offset = response.Result.Results.Last().Url; response = _api.GetUserRecentPosts(request, CancellationToken.None).Result; if (IsError2(sb, limit, response, request.Offset)) { return; } sb.AppendLine("pass."); }
public async Task Vote_Up_Already_Voted(KnownChains apiName) { var user = Users[apiName]; var userPostsRequest = new CensoredNamedRequestWithOffsetLimitModel(); userPostsRequest.ShowLowRated = true; userPostsRequest.ShowNsfw = true; userPostsRequest.Login = user.Login; var posts = await Api[apiName].GetUserRecentPosts(userPostsRequest, CancellationToken.None); Assert.IsTrue(posts.IsSuccess); var postForVote = posts.Result.Results.FirstOrDefault(i => i.Vote == false); Assert.IsNotNull(postForVote); var request = new VoteModel(Users[apiName], postForVote, VoteType.Up); var response = await Api[apiName].Vote(request, CancellationToken.None); AssertResult(response); Thread.Sleep(2000); var response2 = await Api[apiName].Vote(request, CancellationToken.None); AssertResult(response2); Assert.That(response2.Error.Message.Contains("You have already voted in a similar way.") || response2.Error.Message.Contains("You`ve already liked this post a few times. Please try another one.") || response2.Error.Message.Contains("Can only vote once every 3 seconds.") || response2.Error.Message.Contains("Cannot vote again on a comment after payout.") || response2.Error.Message.Contains("Duplicate transaction check failed") || response2.Error.Message.Contains("Vote weight cannot be 0.") || response2.Error.Message.Contains("('Voter has used the maximum number of vote changes on this comment.',)"), response2.Error.Message); }
public async Task GetUserRecentPostsTest(KnownChains apiName) { var user = Users[apiName]; var request = new CensoredNamedRequestWithOffsetLimitModel { Login = user.Login, ShowLowRated = true, ShowNsfw = true }; var result = await Gateway[apiName].GetUserRecentPosts(request, CancellationToken.None); Assert.IsTrue(result.IsSuccess, result.Error?.Message); }
public async Task UserRecentPosts(KnownChains apiName) { // Arrange var user = Users[apiName]; var request = new CensoredNamedRequestWithOffsetLimitModel { Login = user.Login }; // Act var response = await Api[apiName].GetUserRecentPosts(request, CancellationToken.None); // Assert AssertResult(response); Assert.That(response.Result.Results.Any()); Assert.That(response.Result.Results.First().Body, Is.Not.Empty); Assert.That(response.Result.Results.First().Author, Is.Not.Empty); }
private async Task <Exception> LoadNextTopPosts(CancellationToken ct) { var request = new CensoredNamedRequestWithOffsetLimitModel { Login = AppSettings.User.Login, Limit = ItemsLimit, Offset = OffsetUrl, ShowNsfw = AppSettings.User.IsNsfw, ShowLowRated = AppSettings.User.IsLowRated }; Exception exception; bool isNeedRepeat; do { var response = await Api.GetUserRecentPosts(request, ct); isNeedRepeat = ResponseProcessing(response, ItemsLimit, out exception, nameof(TryLoadNextTopPosts)); } while (isNeedRepeat); return(exception); }
public async Task <OperationResult <ListResponse <Post> > > GetUserRecentPosts(CensoredNamedRequestWithOffsetLimitModel request, CancellationToken token) { if (!EnableRead) { return(null); } var results = Validate(request); if (results.Any()) { return(new OperationResult <ListResponse <Post> >(new ValidationError(string.Join(Environment.NewLine, results.Select(i => i.ErrorMessage))))); } var parameters = new Dictionary <string, object>(); AddOffsetLimitParameters(parameters, request.Offset, request.Limit); AddLoginParameter(parameters, request.Login); AddCensorParameters(parameters, request); var endpoint = "recent"; return(await Gateway.Get <ListResponse <Post> >(GatewayVersion.V1P1, endpoint, parameters, token)); }
private void AddCensorParameters(Dictionary <string, object> parameters, CensoredNamedRequestWithOffsetLimitModel request) { parameters.Add("show_nsfw", Convert.ToInt32(request.ShowNsfw)); parameters.Add("show_low_rated", Convert.ToInt32(request.ShowLowRated)); }
public async Task <OperationResult <ListResponse <Post> > > GetUserRecentPosts(CensoredNamedRequestWithOffsetLimitModel request, CancellationToken token) { if (!EnableRead) { return(null); } var results = Validate(request); if (results != null) { return(new OperationResult <ListResponse <Post> >(results)); } var parameters = new Dictionary <string, object>(); AddOffsetLimitParameters(parameters, request.Offset, request.Limit); AddLoginParameter(parameters, request.Login); AddCensorParameters(parameters, request); var endpoint = $"{BaseUrl}/{GatewayVersion.V1P1}/recent"; return(await HttpClient.Get <ListResponse <Post> >(endpoint, parameters, token)); }