Beispiel #1
0
        public async Task <ActionResult> Transfer(TestingTransferRequest request)
        {
            var caps = _api.GetCapabilities();

            if (!caps.IsTestingTransfersSupported.HasValue ||
                !caps.IsTestingTransfersSupported.Value)
            {
                return(StatusCode(501));
            }

            var asset = await _assets.GetAsync(request.AssetId);

            if (asset == null)
            {
                return(BadRequest(BlockchainErrorResponse.Create("Unknown asset")));
            }

            var amount = 0M;

            try
            {
                amount = Conversions.CoinsFromContract(request.Amount, asset.Accuracy);
            }
            catch (ConversionException)
            {
                return(BadRequest(BlockchainErrorResponse.Create("Invalid amount format")));
            }

            if (amount < 0 || !_api.AddressIsValid(request.FromAddress) || !_api.AddressIsValid(request.ToAddress))
            {
                return(BadRequest(BlockchainErrorResponse.Create("Invalid address(es) and/or negative amount")));
            }

            var result = await _api.TestingTransfer(
                request.FromAddress,
                request.FromPrivateKey,
                request.ToAddress,
                asset,
                amount);

            return(Ok(result));
        }