protected void OnOracleGetPriceCommand(string[] args) { var apiKey = _cli.CryptoCompareAPIKey; var pricerCGEnabled = _cli.Settings.Oracle.PricerCoinGeckoEnabled; var pricerSupportedTokens = _cli.Settings.Oracle.PricerSupportedTokens.ToArray(); Console.WriteLine($"Supported tokens:"); Console.WriteLine($"---------------------------"); foreach (var token in pricerSupportedTokens) { Console.WriteLine($"{token.ticker}: {token.cryptocompareId}: {token.coingeckoId}"); } Console.WriteLine($"---------------------------"); if (pricerCGEnabled) { var cgprice = CoinGeckoUtils.GetCoinRate(args[0], DomainSettings.FiatTokenSymbol, pricerSupportedTokens, Spook.Logger); Console.WriteLine($"Oracle Coingecko Price for token {args[0]} is: {cgprice}"); } var price = CryptoCompareUtils.GetCoinRate(args[0], DomainSettings.FiatTokenSymbol, apiKey, pricerSupportedTokens, Spook.Logger); Console.WriteLine($"Oracle CryptoCompare Price for token {args[0]} is: {price}"); var gprice = Pricer.GetCoinRate(args[0], DomainSettings.FiatTokenSymbol, apiKey, pricerCGEnabled, pricerSupportedTokens, Spook.Logger); Console.WriteLine($"Oracle Global Price for token {args[0]} is: {gprice}"); }
private byte[] ReadFromOracle(/*Hash hash, */ string url) { if (url.StartsWith(interopTag)) { url = url.Substring(interopTag.Length); var args = url.Split('/'); var chainName = args[0]; args = args.Skip(1).ToArray(); switch (chainName) { case "neo": return(OracleUtils.ReadNEO(args)); default: throw new OracleException("invalid oracle chain: " + chainName); } } else if (url.StartsWith(priceTag)) { url = url.Substring(interopTag.Length); var symbols = url.Split('/'); if (symbols.Length != 2) { throw new OracleException("invalid oracle price request"); } var baseSymbol = symbols[0]; var quoteSymbol = symbols[1]; if (cryptoCompareAPIKey != null) { var price = CryptoCompareUtils.GetCoinRate(baseSymbol, quoteSymbol, cryptoCompareAPIKey); var val = UnitConversion.ToBigInteger(price, 8); return(val.ToSignedByteArray()); } throw new OracleException("No support for prices"); } else { throw new OracleException("unknown oracle protocol"); } }