public void SetupHandlers() //todo separate each call { TemplateEngine.Server.Get("/", request => HTTPResponse.Redirect(AppSettings.UrlHome)); TemplateEngine.Server.Get(AppSettings.UrlHome, RouteHome); TemplateEngine.Server.Post(AppSettings.UrlHome, RouteSearch); TemplateEngine.Server.Get(AppSettings.UrlError, RouteError); TemplateEngine.Server.Get(AppSettings.UrlTokens, RouteTokens); TemplateEngine.Server.Get($"{AppSettings.UrlTokens}/{{input}}", RouteTokensNft); TemplateEngine.Server.Get("/marketcap", request => { var info = CoinUtils.GetCoinInfoAsync(CoinUtils.SoulId).Result; var marketCap = info["quotes"]["USD"].GetDecimal("market_cap"); return($"${marketCap}"); }); TemplateEngine.Server.Get("/rates", request => { var coins = HomeController.GetRateInfo(); var html = TemplateEngine.Render(coins, "rates"); return(html); }); TemplateEngine.Server.Get($"{AppSettings.UrlToken}/{{input}}", RouteToken); TemplateEngine.Server.Get($"{AppSettings.UrlTransactions}", RouteTransactions); TemplateEngine.Server.Get($"{AppSettings.UrlTransactions}/{{page}}", RouteTransactions); TemplateEngine.Server.Get($"{AppSettings.UrlTransaction}/{{input}}", RouteTransaction); TemplateEngine.Server.Get($"{AppSettings.UrlAddresses}", RouteAddresses); TemplateEngine.Server.Get($"{AppSettings.UrlAddress}/{{input}}", RouteAddress); TemplateEngine.Server.Get($"{AppSettings.UrlAddress}/{{input}}/{{page}}", RouteAddress); TemplateEngine.Server.Get($"{AppSettings.UrlBlocks}", RouteBlocks); TemplateEngine.Server.Get($"{AppSettings.UrlBlocks}/{{page}}", RouteBlocks); TemplateEngine.Server.Get($"{AppSettings.UrlBlock}/{{input}}", RouteBlock); TemplateEngine.Server.Get($"{AppSettings.UrlChains}", RouteChains); TemplateEngine.Server.Get($"{AppSettings.UrlChain}/{{input}}", RouteChain); TemplateEngine.Server.Get($"{AppSettings.UrlApps}", RouteApps); TemplateEngine.Server.Get($"{AppSettings.UrlApp}/{{input}}", RouteApp); TemplateEngine.Server.Get($"{AppSettings.UrlMarketplace}", RouteMarketplace); TemplateEngine.Server.Get($"{AppSettings.UrlMarketplace}/{{chain}}/{{page}}", RouteMarketplace); //SetupAPIHandlers(); todo }
public static List <CoinRateViewModel> GetRateInfo() { var symbols = new[] { "USD", "BTC", "ETH", "NEO" }; var tasks = symbols.Select(symbol => CoinUtils.GetCoinInfoAsync(CoinUtils.SoulId, symbol)); var rates = Task.WhenAll(tasks).GetAwaiter().GetResult(); int days = 15; var soulData = CoinUtils.GetChartForCoin("SOUL", "USD", days); var coins = new List <CoinRateViewModel>(); for (int i = 0; i < rates.Length; i++) { var symbol = symbols[i]; var historicalData = symbol == "USD" ? null : CoinUtils.GetChartForCoin(symbol, "USD", days); var chart = new Dictionary <string, decimal>(); for (int day = 0; day < days; day++) { DateTime date = DateTime.Now - TimeSpan.FromDays(day); var chartKey = $"{date.Day}/{date.Month}"; decimal price; if (historicalData == null) { price = soulData[day]; } else { price = soulData[day] / historicalData[day]; } chart[chartKey] = price; } var coin = new CoinRateViewModel { Symbol = symbol, Rate = rates[i]["quotes"][symbol].GetDecimal("price"), ChangePercentage = rates[i]["quotes"][symbol].GetDecimal("percent_change_24h"), Chart = chart, }; coins.Add(coin); } return(coins); }