public async Task SmartBitExchangeRateProviderTestAsync(string networkString) { var network = Network.GetNetwork(networkString); var client = new SmartBitClient(network); var rateProvider = new SmartBitExchangeRateProvider(client); IEnumerable <ExchangeRate> rates = await rateProvider.GetExchangeRateAsync(); Assert.Contains("USD", rates.Select(x => x.Ticker)); }
public async Task SmartBitTestsAsync(string networkString) { var network = Network.GetNetwork(networkString); using (var client = new SmartBitClient(network)) { var rates = (await client.GetExchangeRatesAsync(CancellationToken.None)); Assert.Contains("AUD", rates.Select(x => x.Code)); Assert.Contains("USD", rates.Select(x => x.Code)); await Assert.ThrowsAsync <HttpRequestException>(async() => await client.PushTransactionAsync(new Transaction(), CancellationToken.None)); } }
private bool _disposedValue = false; // To detect redundant calls protected virtual void Dispose(bool disposing) { if (!_disposedValue) { if (disposing) { _ctsPhaseCancel?.Dispose(); SmartBitClient?.Dispose(); } // TODO: free unmanaged resources (unmanaged objects) and override a finalizer below. // TODO: set large fields to null. _disposedValue = true; } }
public async Task SmartBitTestsAsync(string networkString) { if (!await TestAsync("https://api.smartbit.com.au/v1/blockchain/stats")) { return; // If website doesn't work, don't bother failing. } var network = Network.GetNetwork(networkString); using (var client = new SmartBitClient(network)) { IEnumerable <SmartBitExchangeRate> rates = rates = await client.GetExchangeRatesAsync(CancellationToken.None); Assert.Contains("AUD", rates.Select(x => x.Code)); Assert.Contains("USD", rates.Select(x => x.Code)); await Assert.ThrowsAsync <HttpRequestException>(async() => await client.PushTransactionAsync(new Transaction(), CancellationToken.None)); } }
private async Task SetDenominationAsync(CancellationToken cancel) { if (Global.Config.DenominationAlgorithm == DenominationAlgorithm.FixedUSD) { try { var exchangeRates = await SmartBitClient.GetExchangeRatesAsync(cancel); decimal price = exchangeRates.Single(x => x.Code == "USD").Rate; decimal denominationUSD = (decimal)Global.Config.DenominationUSD; decimal denominationBTC = 0; var i = 1; while (denominationBTC == 0 && i <= 8) { denominationBTC = Math.Round(denominationUSD / price, i); i++; } Denomination = new Money(denominationBTC, MoneyUnit.BTC); } catch { // if denomination hasn't been initialized once, fall back to config data if (Denomination == null) { Denomination = Global.Config.DenominationBTC; } } } else if (Global.Config.DenominationAlgorithm == DenominationAlgorithm.FixedBTC) { Denomination = Global.Config.DenominationBTC; } else { throw new NotSupportedException(Global.Config.DenominationAlgorithm.ToString()); } }
public async Task SmartBitTestsAsync(string networkString) { var network = Network.GetNetwork(networkString); using (var client = new SmartBitClient(network)) { IEnumerable <SmartBitExchangeRate> rates = null; try { rates = await client.GetExchangeRatesAsync(CancellationToken.None); } catch // stupid CI internet conenction sometimes fails { await Task.Delay(3000); rates = await client.GetExchangeRatesAsync(CancellationToken.None); } Assert.Contains("AUD", rates.Select(x => x.Code)); Assert.Contains("USD", rates.Select(x => x.Code)); await Assert.ThrowsAsync <HttpRequestException>(async() => await client.PushTransactionAsync(new Transaction(), CancellationToken.None)); } }
static void Main(string[] args) { //Carrying out a Transaction var bitcoinPrivateKey = new BitcoinSecret("cNZupUgfs54DmsShwxa1wpomQcszUtuJYFvx9zWPbXrT7KsWtiUd"); var network = bitcoinPrivateKey.Network; var address = bitcoinPrivateKey.GetAddress(); var client = new QBitNinjaClient(network); var balance = client.GetBalance(address, true).Result; var transactionId = uint256.Parse("3f3278d550ecd4f921d7f6f48f1e4b873e39d4b1b2a5098867d4c4e30ab9b444"); var transactionResponse = client.GetTransaction(transactionId).Result; var chimaTestDestinationAddress = new BitcoinPubKeyAddress("mxgN2AiqHjKfGvo6Y57fAe4Y754rPdKf4P"); var ugoCoins = new HashSet <ICoin>(); foreach (var operation in balance.Operations) { foreach (var coin in operation.ReceivedCoins) { if (coin.TxOut.ScriptPubKey.GetDestinationAddress(network) == address) { ugoCoins.Add(coin); } } } var txBuilder = new TransactionBuilder(); var trans = txBuilder .AddCoins(ugoCoins) .AddKeys(bitcoinPrivateKey) .Send(chimaTestDestinationAddress.ScriptPubKey.GetDestination(), "0.10") .SendFees("0.01") .SetChange(bitcoinPrivateKey.GetAddress()) .BuildTransaction(true); bool isSigned = txBuilder.Verify(trans); SmartBitClient smartBitClient = new SmartBitClient(network); PushTransaction(trans); //HttpResponseMessage response = httpClient.PostAsync(new SmartBit() { hex = ""}).Result; BroadcastResponse broadcast = client.Broadcast(trans).Result; if (!broadcast.Success) { Console.WriteLine("ErrorCode: " + broadcast.Error.ErrorCode); Console.WriteLine("Error message: " + broadcast.Error.Reason); } else { Console.WriteLine("Success, you can now checkout the transaction in any block explorer"); Console.WriteLine("Hash: " + trans.GetHash()); } Console.ReadKey(); }
public SmartBitExchangeRateProvider(SmartBitClient smartBitClient) { _client = smartBitClient; }