Пример #1
0
        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);
        }
Пример #2
0
        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);
        }