コード例 #1
0
        /// <inheritdoc />
        public async Task <TransactionBuildingResult> BuildSingleTransactionAsync(Guid operationId, string fromAddress, string fromAddressContext, string toAddress, BlockchainAsset asset, decimal amount, bool includeFee)
        {
            ValidateOperationIdIsNotEmpty(operationId);
            ValidateFromAddresIsNotEmpty(fromAddress);
            ValidateToAddressIsNotEmpty(toAddress);
            ValidateAssetIsNotNull(asset);
            ValidateAmountRange(amount);

            try
            {
                var apiResponse = await _runner.RunWithRetriesAsync(() => _api.BuildSingleTransactionAsync(
                                                                        new BuildSingleTransactionRequest
                {
                    OperationId        = operationId,
                    FromAddress        = fromAddress,
                    FromAddressContext = fromAddressContext,
                    ToAddress          = toAddress,
                    AssetId            = asset.AssetId,
                    Amount             = Conversions.CoinsToContract(amount, asset.Accuracy),
                    IncludeFee         = includeFee
                }));

                return(new TransactionBuildingResult(apiResponse));
            }
            catch (ErrorResponseException ex) when(ex.StatusCode == HttpStatusCode.Conflict)
            {
                throw new TransactionAlreadyBroadcastedException(ex);
            }
        }
        /// <inheritdoc />
        public async Task <TransactionBuildingResult> BuildSingleTransactionAsync(Guid operationId, string fromAddress, string fromAddressContext, string toAddress, BlockchainAsset asset, decimal amount, bool includeFee)
        {
            ValidateOperationIdIsNotEmpty(operationId);
            ValidateFromAddresIsNotEmpty(fromAddress);
            ValidateToAddressIsNotEmpty(toAddress);
            ValidateAssetIsNotNull(asset);
            ValidateAmountRange(amount);

            var apiResponse = await _runner.RunWithRetriesAsync(() => _api.BuildSingleTransactionAsync(
                                                                    new BuildSingleTransactionRequest
            {
                OperationId        = operationId,
                FromAddress        = fromAddress,
                FromAddressContext = fromAddressContext,
                ToAddress          = toAddress,
                AssetId            = asset.AssetId,
                Amount             = Conversions.CoinsToContract(amount, asset.Accuracy),
                IncludeFee         = includeFee
            }));

            return(new TransactionBuildingResult(apiResponse));
        }