Ejemplo n.º 1
0
        public WalletBalance(WalletBalanceContract contract, int assetAccuracy)
        {
            if (contract == null)
            {
                throw new ResultValidationException("Contract value is required");
            }
            if (string.IsNullOrWhiteSpace(contract.Address))
            {
                throw new ResultValidationException("Address is required", contract.Address);
            }
            if (string.IsNullOrWhiteSpace(contract.AssetId))
            {
                throw new ResultValidationException("Asset ID is required", contract.AssetId);
            }

            Address = contract.Address;
            AssetId = contract.AssetId;

            try
            {
                var balance = Conversions.CoinsFromContract(contract.Balance, assetAccuracy);

                if (balance <= 0)
                {
                    throw new ResultValidationException("Balance should be positive number", balance);
                }
            }
            catch (ConversionException ex)
            {
                throw new ResultValidationException("Failed to parse balance", contract.Balance, ex);
            }
        }
Ejemplo n.º 2
0
        public WalletBalance(WalletBalanceContract contract, int assetAccuracy)
        {
            if (contract == null)
            {
                throw new ResultValidationException("Wallet not found");
            }
            if (string.IsNullOrWhiteSpace(contract.Address))
            {
                throw new ResultValidationException("Address is required", contract.Address);
            }
            if (string.IsNullOrWhiteSpace(contract.AssetId))
            {
                throw new ResultValidationException("Asset ID is required", contract.AssetId);
            }
            if (contract.Block == 0)
            {
                throw new ResultValidationException("Block is required", contract.Block);
            }

            Address = contract.Address;
            AssetId = contract.AssetId;
            Block   = contract.Block;
            IsAddressCompromised = contract.IsAddressCompromised ?? false;

            try
            {
                Balance = Conversions.CoinsFromContract(contract.Balance, assetAccuracy);

                if (Balance <= 0)
                {
                    throw new ResultValidationException("Balance should be positive number", contract.Balance);
                }
            }
            catch (ConversionException ex)
            {
                throw new ResultValidationException("Failed to parse balance", contract.Balance, ex);
            }
        }
        public async Task <IActionResult> Get([Required, FromQuery] int take, [FromQuery] string continuation)
        {
            if (take < 1)
            {
                return(BadRequest(ErrorResponse.Create("Invalid parameter").AddModelError("take", "Must be positive non zero integer")));
            }
            if (!string.IsNullOrEmpty(continuation))
            {
                try
                {
                    JsonConvert.DeserializeObject <TableContinuationToken>(Utils.HexToString(continuation));
                }
                catch (JsonReaderException)
                {
                    return(BadRequest(ErrorResponse.Create("Invalid parameter").AddModelError("continuation", "Must be valid continuation token")));
                }
            }

            var balances = await _balanceService.GetBalancesAsync(take, continuation);

            var results = new List <WalletBalanceContract>();

            foreach (var b in balances.Wallets)
            {
                var result = new WalletBalanceContract
                {
                    Address = b.Address,
                    AssetId = b.AssetId,
                    Balance = b.Balance.ToString(),
                    Block   = b.Ledger
                };
                results.Add(result);
            }

            return(Ok(PaginationResponse.From(balances.ContinuationToken, results)));
        }