public async Task <OperationResult <VoidResponse> > PowerUpOrDown(PowerUpDownModel model, CancellationToken ct)
        {
            var results = Validate(model);

            if (results != null)
            {
                return(new OperationResult <VoidResponse>(results));
            }

            return(await _ditchClient.PowerUpOrDown(model, ct));
        }
Ejemplo n.º 2
0
        public override async Task <OperationResult <VoidResponse> > PowerUpOrDown(PowerUpDownModel model, CancellationToken ct)
        {
            var isConnected = await TryReconnectChain(ct);

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

            var keys = ToKeyArr(model.ActiveKey);

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

            var result = new OperationResult <VoidResponse>();

            BaseOperation op;

            Asset asset;

            if (model.PowerAction == PowerAction.PowerUp)
            {
                asset = new Asset($"{model.Value.ToString(CultureInfo.InvariantCulture)} GOLOS");
                op    = new TransferToVestingOperation(model.From, model.To, asset);
            }
            else
            {
                var vestsExchangeRatio = await GetVestsExchangeRatio(ct);

                if (!vestsExchangeRatio.IsSuccess)
                {
                    return(new OperationResult <VoidResponse>(vestsExchangeRatio.Exception));
                }

                asset = new Asset($"{(model.Value / vestsExchangeRatio.Result).ToString("F6", CultureInfo.InvariantCulture)} GESTS");
                op    = new WithdrawVestingOperation(model.From, asset);
            }

            var resp = await _operationManager.BroadcastOperationsSynchronous(keys, ct, op);

            if (resp.IsError)
            {
                result.Exception = new RequestException(resp);
            }
            else
            {
                result.Result = new VoidResponse();
            }
            return(result);
        }
Ejemplo n.º 3
0
        public override async Task <OperationResult <VoidResponse> > PowerUpOrDown(PowerUpDownModel model, CancellationToken ct)
        {
            var isConnected = await TryReconnectChain(ct);

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

            var keys = ToKeyArr(model.ActiveKey);

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

            var asset = new Asset();

            BaseOperation op;

            if (model.PowerAction == PowerAction.PowerUp)
            {
                asset.FromOldFormat($"{model.Value.ToString(CultureInfo.InvariantCulture)} {Config.Steem}");
                op = new TransferToVestingOperation(model.From, model.To, asset);
            }
            else
            {
                var vestsExchangeRatio = await GetVestsExchangeRatio(ct);

                if (!vestsExchangeRatio.IsSuccess)
                {
                    return(new OperationResult <VoidResponse>(vestsExchangeRatio.Exception));
                }

                asset.FromOldFormat($"{(model.Value / vestsExchangeRatio.Result).ToString("F6", CultureInfo.InvariantCulture)} {Config.Vests}");
                op = new WithdrawVestingOperation(model.Login, asset);
            }

            return(await Broadcast(keys, new[] { op }, ct));
        }
Ejemplo n.º 4
0
 public abstract Task <OperationResult <VoidResponse> > PowerUpOrDown(PowerUpDownModel model, CancellationToken ct);
Ejemplo n.º 5
0
 private Task <OperationResult <VoidResponse> > PowerDownOrDown(PowerUpDownModel model, CancellationToken ct)
 {
     return(Api.PowerUpOrDown(model, ct));
 }
Ejemplo n.º 6
0
        public async Task <OperationResult <VoidResponse> > TryPowerUpOrDown(BalanceModel balance, PowerAction powerAction)
        {
            var model = new PowerUpDownModel(balance, powerAction);

            return(await TryRunTask <PowerUpDownModel, VoidResponse>(PowerDownOrDown, OnDisposeCts.Token, model));
        }