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); }
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); }
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); }