/// <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)); }
/// <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); } }