/// <inheritdoc /> public async Task <bool> BroadcastTransactionAsync(Guid operationId, string signedTransaction) { ValidateOperationIdIsNotEmpty(operationId); ValidateSignedTransactionIsNotEmpty(signedTransaction); try { await _runner.RunWithRetriesAsync(() => _api.BroadcastTransactionAsync(new BroadcastTransactionRequest { OperationId = operationId, SignedTransaction = signedTransaction })); } catch (ErrorResponseException ex) when(ex.StatusCode == HttpStatusCode.Conflict) { return(false); } return(true); }
/// <inheritdoc /> public async Task <TransactionBroadcastingResult> BroadcastTransactionAsync(Guid operationId, string signedTransaction) { ValidateOperationIdIsNotEmpty(operationId); ValidateSignedTransactionIsNotEmpty(signedTransaction); try { await _runner.RunWithRetriesAsync(() => _api.BroadcastTransactionAsync(new BroadcastTransactionRequest { OperationId = operationId, SignedTransaction = signedTransaction })); return(TransactionBroadcastingResult.Success); } catch (ErrorResponseException ex) when(ex.StatusCode == HttpStatusCode.BadRequest && ex.ErrorCode != BlockchainErrorCode.Unknown) { return(TransactionBroadcastingResultMapper.FromErrorCode(ex.ErrorCode)); } catch (ErrorResponseException ex) when(ex.StatusCode == HttpStatusCode.Conflict) { return(TransactionBroadcastingResult.AlreadyBroadcasted); } }