@page "/" @inject IBinanceRestClient binanceClient @inject IBingXRestClient bingXClient @inject IBitfinexRestClient bitfinexClient @inject IBitMartRestClient bitmartClient @inject IBitgetRestClient bitgetClient @inject IBybitRestClient bybitClient @inject ICoinbaseRestClient coinbaseClient @inject ICoinExRestClient coinexClient @inject ICryptoComRestClient cryptocomClient @inject IGateIoRestClient gateioClient @inject IHTXRestClient htxClient @inject IHyperLiquidRestClient hyperLiquidClient @inject IKrakenRestClient krakenClient @inject IKucoinRestClient kucoinClient @inject IMexcRestClient mexcClient @inject IOKXRestClient okxClient @inject IWhiteBitRestClient whitebitClient

BTC-USD prices:

@foreach(var price in _prices.OrderBy(p => p.Key)) {
@price.Key: @price.Value
} @code{ private Dictionary _prices = new Dictionary(); protected override async Task OnInitializedAsync() { var binanceTask = binanceClient.SpotApi.ExchangeData.GetTickerAsync("BTCUSDT"); var bingXTask = bingXClient.SpotApi.ExchangeData.GetTickersAsync("BTC-USDT"); var bitfinexTask = bitfinexClient.SpotApi.ExchangeData.GetTickerAsync("tBTCUSD"); var bitgetTask = bitgetClient.SpotApi.ExchangeData.GetTickerAsync("BTCUSDT_SPBL"); var bitmartTask = bitmartClient.SpotApi.ExchangeData.GetTickerAsync("BTC_USDT"); var bybitTask = bybitClient.V5Api.ExchangeData.GetSpotTickersAsync("BTCUSDT"); var coinbaseTask = coinbaseClient.AdvancedTradeApi.ExchangeData.GetSymbolAsync("BTC-USDT"); var coinexTask = coinexClient.SpotApi.ExchangeData.GetTickerAsync("BTCUSDT"); var cryptocomTask = cryptocomClient.ExchangeApi.ExchangeData.GetTickersAsync("BTC_USDT"); var gateioTask = gateioClient.SpotApi.ExchangeData.GetTickersAsync("BTC_USDT"); var htxTask = htxClient.SpotApi.ExchangeData.GetTickerAsync("btcusdt"); var hyperLiquidTask = hyperLiquidClient.FuturesApi.ExchangeData.GetExchangeInfoAndTickersAsync(); // HyperLiquid does not have BTC spot trading var krakenTask = krakenClient.SpotApi.ExchangeData.GetTickerAsync("XBTUSD"); var kucoinTask = kucoinClient.SpotApi.ExchangeData.GetTickerAsync("BTC-USDT"); var mexcTask = mexcClient.SpotApi.ExchangeData.GetTickerAsync("BTCUSDT"); var okxTask = okxClient.UnifiedApi.ExchangeData.GetTickerAsync("BTCUSDT"); var whitebitTask = whitebitClient.V4Api.ExchangeData.GetTickersAsync(); await Task.WhenAll(binanceTask, bingXTask, bitfinexTask, bitgetTask, bitmartTask, bybitTask, coinexTask, gateioTask, htxTask, krakenTask, kucoinTask, mexcTask, okxTask); if (binanceTask.Result.Success) _prices.Add("Binance", binanceTask.Result.Data.LastPrice); if (bingXTask.Result.Success) _prices.Add("BingX", bingXTask.Result.Data.First().LastPrice); if (bitfinexTask.Result.Success) _prices.Add("Bitfinex", bitfinexTask.Result.Data.LastPrice); if (bitgetTask.Result.Success) _prices.Add("Bitget", bitgetTask.Result.Data.ClosePrice); if (bitmartTask.Result.Success) _prices.Add("BitMart", bitgetTask.Result.Data.ClosePrice); if (bybitTask.Result.Success) _prices.Add("Bybit", bybitTask.Result.Data.List.First().LastPrice); if (coinbaseTask.Result.Success) _prices.Add("Coinbase", coinbaseTask.Result.Data.LastPrice ?? 0); if (coinexTask.Result.Success) _prices.Add("CoinEx", coinexTask.Result.Data.Ticker.LastPrice); if (cryptocomTask.Result.Success) _prices.Add("CryptoCom", cryptocomTask.Result.Data.First().LastPrice ?? 0); if (gateioTask.Result.Success) _prices.Add("GateIo", gateioTask.Result.Data.First().LastPrice); if (htxTask.Result.Success) _prices.Add("HTX", htxTask.Result.Data.ClosePrice ?? 0); if (hyperLiquidTask.Result.Success) { // HyperLiquid API doesn't offer an endpoint to filter for a specific ticker, so we have to filter client side var tickers = hyperLiquidTask.Result.Data.Tickers; _prices.Add("HyperLiquid", tickers.Single(x => x.Symbol == "BTC").MidPrice ?? 9); } if (krakenTask.Result.Success) _prices.Add("Kraken", krakenTask.Result.Data.First().Value.LastTrade.Price); if (kucoinTask.Result.Success) _prices.Add("Kucoin", kucoinTask.Result.Data.LastPrice ?? 0); if (mexcTask.Result.Success) _prices.Add("Mexc", mexcTask.Result.Data.LastPrice); if (okxTask.Result.Success) _prices.Add("OKX", okxTask.Result.Data.LastPrice ?? 0); if (whitebitTask.Result.Success){ // WhiteBit API doesn't offer an endpoint to filter for a specific ticker, so we have to filter client side var tickers = whitebitTask.Result.Data; _prices.Add("WhiteBit", tickers.Single(x => x.Symbol == "BTC_USDT").LastPrice); } } }