public async Task <BitcoinTransactionCollection> GetBitcoinTransactionCollectionAsync(string address) { var result = new BitcoinTransactionCollection(); //https://api-r.bitcoinchain.com/v1/address/txs/1Chain4asCYNnLVbvG6pgCLGBrtzh4Lx4b string uri = $"{BitcoinServiceProviders.BitcoinChain.AddressTxsEndpointURL}/{address}"; _logger.LogDebug($"{nameof(GetBitcoinTransactionCollectionAsync)}"); _logger.LogDebug(uri); try { var listListTransactionContainerJSON = await ExternalWebAPIRequestor.GetAsync <List <List <TransactionContainerJSON> > >(uri); var firstListTransactionContainerJSON = listListTransactionContainerJSON.FirstOrDefault(); if (firstListTransactionContainerJSON != null) { foreach (var transactionContainer in firstListTransactionContainerJSON) { result.Transactions.Add(new BitcoinTransaction { FromAddress = transactionContainer.tx.inputs[0].sender, ToAddress = transactionContainer.tx.outputs[0].receiver, Amount = transactionContainer.tx.total_output, Hash = transactionContainer.tx.self_hash, TimeStamp = transactionContainer.tx.block_time }); } } } catch (WebException ex) when((ex.Response as HttpWebResponse)?.StatusCode == HttpStatusCode.Conflict) { throw new InvalidWalletAddressException(address, CurrencySymbol.BTC); } return(result); }
public async Task <BitcoinTransactionCollection> GetBitcoinTransactionCollectionAsync(string address) { var result = new BitcoinTransactionCollection(); //https://fakechain.vioren.com/api/btc/getAddressTransactions/0xb297cacf0f91c86dd9d2fb47c6d12783121ab780 string uri = $"{BitcoinServiceProviders.FakeChain.GetAddressTransactionsEndpointURL}/{address}"; var transactionCollectionJSON = await ExternalWebAPIRequestor.GetAsync <TransactionCollectionJSON>(uri); foreach (var transactionJSON in transactionCollectionJSON.transactions) { result.Transactions.Add(new BitcoinTransaction { FromAddress = transactionJSON.fromAddress, ToAddress = transactionJSON.toAddress, Amount = transactionJSON.amount, Hash = transactionJSON.hash, TimeStamp = transactionJSON.timeStamp }); } return(result); }