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.");
        }
Exemple #2
0
        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);
        }
Exemple #3
0
        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));
        }