Esempio n. 1
0
        public override async Task <OperationResult <VoidResponse> > Vote(VoteModel model, CancellationToken ct)
        {
            var isConnected = await TryReconnectChain(ct);

            if (!isConnected)
            {
                return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.EnableConnectToBlockchain)));
            }

            var keys = ToKeyArr(model.PostingKey);

            if (keys == null)
            {
                return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.WrongPrivatePostingKey)));
            }

            short weigth = 0;

            if (model.Type == VoteType.Up)
            {
                weigth = (short)(AppSettings.User.VotePower * 100);
            }
            if (model.Type == VoteType.Flag)
            {
                weigth = -10000;
            }

            var op = new VoteOperation(model.Login, model.Author, model.Permlink, weigth);

            return(await Broadcast(keys, new BaseOperation[] { op }, ct));
        }
Esempio n. 2
0
        public VoteTemp(long blockNum, short trxNum, short opNum, VoteOperation operation)
        {
            BlockNum = blockNum;
            TrxNum   = trxNum;
            OpNum    = opNum;

            Login    = operation.Author;
            Permlink = operation.Permlink;
            Voter    = operation.Voter;
            Weight   = operation.Weight;
        }
Esempio n. 3
0
        public override async Task <OperationResult <VoteResponse> > Vote(VoteModel model, CancellationToken ct)
        {
            return(await Task.Run(() =>
            {
                if (!TryReconnectChain(ct))
                {
                    return new OperationResult <VoteResponse>(new ApplicationError(Localization.Errors.EnableConnectToBlockchain));
                }

                var keys = ToKeyArr(model.PostingKey);
                if (keys == null)
                {
                    return new OperationResult <VoteResponse>(new ApplicationError(Localization.Errors.WrongPrivatePostingKey));
                }

                short weigth = 0;
                if (model.Type == VoteType.Up)
                {
                    weigth = 10000;
                }
                if (model.Type == VoteType.Flag)
                {
                    weigth = -10000;
                }

                var op = new VoteOperation(model.Login, model.Author, model.Permlink, weigth);
                var resp = _operationManager.BroadcastOperations(keys, ct, op);

                var result = new OperationResult <VoteResponse>();
                if (!resp.IsError)
                {
                    var dt = DateTime.Now;
                    var content = _operationManager.GetContent(model.Author, model.Permlink, ct);
                    if (!content.IsError)
                    {
                        //Convert Asset type to double
                        result.Result = new VoteResponse(true)
                        {
                            NewTotalPayoutReward = content.Result.TotalPayoutValue + content.Result.CuratorPayoutValue + content.Result.PendingPayoutValue,
                            NetVotes = content.Result.NetVotes,
                            VoteTime = dt
                        };
                    }
                }
                else
                {
                    OnError(resp, result);
                }
                return result;
            }, ct));
        }
Esempio n. 4
0
        public override async Task <OperationResult <VoidResponse> > Vote(VoteModel model, CancellationToken ct)
        {
            var isConnected = await TryReconnectChain(ct);

            if (!isConnected)
            {
                return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.EnableConnectToBlockchain)));
            }

            var keys = ToKeyArr(model.PostingKey);

            if (keys == null)
            {
                return(new OperationResult <VoidResponse>(new ValidationException(LocalizationKeys.WrongPrivatePostingKey)));
            }

            short weigth = 0;

            if (model.Type == VoteType.Up)
            {
                weigth = 10000;
            }
            if (model.Type == VoteType.Flag)
            {
                weigth = -10000;
            }

            var op   = new VoteOperation(model.Login, model.Author, model.Permlink, weigth);
            var resp = await _operationManager.BroadcastOperationsSynchronous(keys, ct, op);

            var result = new OperationResult <VoidResponse>();

            if (resp.IsError)
            {
                result.Exception = new RequestException(resp);
            }
            else
            {
                result.Result = new VoidResponse();
            }

            return(result);
        }
Esempio n. 5
0
        public override async Task <OperationResult <VoidResponse> > Vote(VoteModel model, CancellationToken ct)
        {
            return(await Task.Run(() =>
            {
                if (!TryReconnectChain(ct))
                {
                    return new OperationResult <VoidResponse>(new AppError(LocalizationKeys.EnableConnectToBlockchain));
                }

                var keys = ToKeyArr(model.PostingKey);
                if (keys == null)
                {
                    return new OperationResult <VoidResponse>(new AppError(LocalizationKeys.WrongPrivatePostingKey));
                }

                short weigth = 0;
                if (model.Type == VoteType.Up)
                {
                    weigth = (short)(AppSettings.User.VotePower * 100);
                }
                if (model.Type == VoteType.Flag)
                {
                    weigth = -10000;
                }

                var op = new VoteOperation(model.Login, model.Author, model.Permlink, weigth);
                var resp = _operationManager.BroadcastOperationsSynchronous(keys, ct, op);

                var result = new OperationResult <VoidResponse>();
                if (!resp.IsError)
                {
                    result.Result = new VoidResponse();
                }
                else
                {
                    OnError(resp, result);
                }

                return result;
            }, ct));
        }
Esempio n. 6
0
        public async Task ProposalCreateOperationTest()
        {
            var          user     = User;
            const string autor    = "joseph.kalu";
            const string permlink = "test-s-russkimi-bukvami-2017-11-16-17-12-05";

            var vop = new VoteOperation(user.Login, autor, permlink, VoteOperation.MaxUpVote);

            var op = new ProposalCreateOperation(User.Login, "test title", "test memo", DateTime.Now.AddSeconds(30))
            {
                ReviewPeriodTime   = DateTime.Now.AddSeconds(55),
                ProposedOperations = new[]
                {
                    new OperationWrapper
                    {
                        Op = vop
                    }
                }
            };

            await Post(User.ActiveKeys, false, op).ConfigureAwait(false);
        }