/// <inheritdoc />
        public async Task <TransactionBuildingResult> RebuildTransactionAsync(
            Guid operationId,
            decimal feeFactor)
        {
            ValidateOperationIdIsNotEmpty(operationId);
            ValidateFeeFactorRange(feeFactor);

            RebuildTransactionResponse apiResponse;

            try
            {
                apiResponse = await _runner.RunWithRetriesAsync(() => _api.RebuildTransactionAsync(
                                                                    new RebuildTransactionRequest
                {
                    OperationId = operationId,
                    FeeFactor   = feeFactor
                }));
            }
            catch (ErrorResponseException ex) when(ex.StatusCode == HttpStatusCode.NotAcceptable)
            {
                throw new NonAcceptableAmountException("Transaction amount is non acceptable", ex);
            }

            return(new TransactionBuildingResult(apiResponse));
        }
예제 #2
0
        /// <inheritdoc />
        public async Task <TransactionBuildingResult> RebuildTransactionAsync(
            Guid operationId,
            decimal feeFactor)
        {
            ValidateOperationIdIsNotEmpty(operationId);
            ValidateFeeFactorRange(feeFactor);

            try
            {
                var apiResponse = await _runner.RunWithRetriesAsync(() => _api.RebuildTransactionAsync(
                                                                        new RebuildTransactionRequest
                {
                    OperationId = operationId,
                    FeeFactor   = feeFactor
                }));

                return(new TransactionBuildingResult(apiResponse));
            }
            catch (ErrorResponseException ex) when(ex.StatusCode == HttpStatusCode.NotImplemented)
            {
                throw new NotSupportedException("Operation is not supported by the blockchain. See GetCapabilitiesAsync", ex);
            }
            catch (ErrorResponseException ex) when(ex.StatusCode == HttpStatusCode.Conflict)
            {
                throw new TransactionAlreadyBroadcastedException(ex);
            }
        }