Beispiel #1
0
        public async Task <OperationResult <VoteResponse> > Vote(VoteModel model, CancellationToken ct)
        {
            var results = Validate(model);

            if (results.Any())
            {
                return(new OperationResult <VoteResponse>(new ValidationError(string.Join(Environment.NewLine, results.Select(i => i.ErrorMessage)))));
            }

            var result = await _ditchClient.Vote(model, ct);

            Trace($"post/{model.Identifier}/{model.Type.GetDescription()}", model.Login, result.Error, model.Identifier, ct);//.Wait(5000);
            return(result);
        }
Beispiel #2
0
        public async Task <OperationResult <VoteResponse> > Vote(VoteModel model, CancellationToken ct)
        {
            var results = Validate(model);

            if (results.Any())
            {
                return(new OperationResult <VoteResponse>(new ValidationError(results)));
            }

            var result = await _ditchClient.Vote(model, ct);

            Trace($"post/@{model.Author}/{model.Permlink}/{model.Type.GetDescription()}", model.Login, result.Error, $"@{model.Author}/{model.Permlink}", ct);//.Wait(5000);
            return(result);
        }
Beispiel #3
0
        public async Task <OperationResult <Post> > Vote(VoteModel model, CancellationToken ct)
        {
            var results = Validate(model);

            if (results.Any())
            {
                return(new OperationResult <Post>(new ValidationError(results)));
            }

            var result = await _ditchClient.Vote(model, ct);

            var startDelay = DateTime.Now;

            await Trace($"post/@{model.Author}/{model.Permlink}/{model.Type.GetDescription()}", model.Login, result.Error, $"@{model.Author}/{model.Permlink}", ct);

            if (!result.IsSuccess)
            {
                return(new OperationResult <Post>(result.Error));
            }

            OperationResult <Post> postInfo = null;

            if (model.IsComment) //TODO: << delete when comment update support will added on backend
            {
                postInfo = new OperationResult <Post> {
                    Result = model.Post
                };
            }
            else
            {
                var infoModel = new NamedInfoModel($"@{model.Author}/{model.Permlink}")
                {
                    Login        = model.Login,
                    ShowLowRated = true,
                    ShowNsfw     = true
                };
                postInfo = await GetPostInfo(infoModel, ct);
            }

            var delay = (int)(model.VoteDelay - (DateTime.Now - startDelay).TotalMilliseconds);

            if (delay > 100)
            {
                await Task.Delay(delay, ct);
            }

            return(postInfo);
        }