/// <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);
        }
Example #2
0
        /// <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);
            }
        }