public List <TickerModel> GetOverview(AvailableExchanges exchangeName, string market) { var result = new List <TickerModel>(); try { var symbolsOfMarket = new List <string>(); //TODO paging sorting etc var exchangeMarket = _context.Exchange .FirstOrDefault(f => f.Id == (int)exchangeName) .Market.FirstOrDefault(f => !string.IsNullOrWhiteSpace(market) ? f.Name == market : true); if (exchangeMarket == null) { return(result); } symbolsOfMarket = exchangeMarket.Symbol.Select(s => s.Name).ToList(); if (string.IsNullOrWhiteSpace(symbolsOfMarket.FirstOrDefault())) { return(result); } result = _exchangesData.GetTickersFor(exchangeName, symbolsOfMarket); } catch (Exception ex) { _logger.Information($"ExchangesService.GetOverview(exchangeName: {exchangeName}, market: {market})"); _logger.Error(ex.Message); return(result); } return(result); }
public ExtendedInfoModel GetDetails(AvailableExchanges name) { var result = new ExtendedInfoModel(); try { var exchange = _context.Exchange.FirstOrDefault(f => f.Name == name.ToString()); result = new ExtendedInfoModel { Name = exchange.Name, ImageUrl = exchange.ImageUrl, Country = exchange.Country, Type = exchange.Type, Description = exchange.Description, Markets = exchange.Market.Where(w => w.Symbol.Any()).Select(m => m.Name).ToList() }; } catch (Exception ex) { _logger.Information($"ExcangesService.GetDetails(name: {name})"); _logger.Error(ex.Message); return(result); } return(result); }
public IBaseExchangeClient GetClientInstance(AvailableExchanges exchangeName) { switch (exchangeName) { case AvailableExchanges.Binance: return(_dataClient.Binance); case AvailableExchanges.Bitfinex: return(_dataClient.Bitfinex); case AvailableExchanges.Bitstamp: return(_dataClient.Bitstamp); case AvailableExchanges.Gdax: return(_dataClient.Gdax); case AvailableExchanges.Gemini: return(_dataClient.Gemini); case AvailableExchanges.Kraken: return(_dataClient.Kraken); case AvailableExchanges.Okex: return(_dataClient.Okex); case AvailableExchanges.Poloniex: return(_dataClient.Poloniex); default: return(null); } }
public bool SaveSymbolsForExchange(AvailableExchanges name) { try { IBaseExchangeClient exchangeClient = _exchangesData.GetClientInstance(name); var symbols = exchangeClient.GetSymbols().ToList(); List <MarketModel> markets = FindAndPopulateDistinctMarketsForExchange(symbols); #region For Testing ////test if all symbols are distributed to different markets //var totalSimbolCount = symbols.Count; //var simbolCountInMarkets = 0; //foreach (var market in markets) //{ // simbolCountInMarkets += market.CurrencyPairs.Count; //} //if (simbolCountInMarkets == totalSimbolCount) //{ // //success // totalSimbolCount = 0; //} #endregion var exchange = _context.Exchange.FirstOrDefault(e => e.Name == name.ToString()); if (exchange.Market.Any()) { return(false); } foreach (var market in markets) { var marketToSave = new Market { Exchange = exchange, Name = market.Name, StatusId = (int)Statuses.Active, }; _context.Market.Add(marketToSave); foreach (var pair in market.Pairs) { var symbolToSave = new Symbol { Market = marketToSave, Name = pair, StatusId = (int)Statuses.Active }; _context.Symbol.Add(symbolToSave); } } _context.SaveChanges(); } catch (Exception ex) { _logger.Information($"ExchangesService.SaveSymbolsForExchange(name: {name})"); _logger.Error(ex.Message); return(false); } return(true); }
public List <TickerModel> GetTickersFor(AvailableExchanges exchangeName, List <string> symbolsOfMarket) { _exchangeName = exchangeName; _symbolsOfMarket = symbolsOfMarket; if (!DataLoaded || DataOutdated) { FetchData(); } SelectDataToQuery(); return(PopulateTickerModelResult()); }
public List <TickerModel> MockTickersFor(AvailableExchanges exchangeName, List <string> symbolsOfMarket) { var result = new List <TickerModel>(); result = symbolsOfMarket.Select(symbol => new TickerModel { Symbol = symbol, Price = 0, Bid = 0, Ask = 0, Volume = new VolumeModel() }).ToList(); return(result); }
public bool DeleteAllSymbolsForExchange(AvailableExchanges name) { try { var exchange = _context.Exchange.FirstOrDefault(e => e.Name == name.ToString()); _context.Symbol.RemoveRange(exchange.Market.SelectMany(s => s.Symbol)); _context.Market.RemoveRange(exchange.Market); _context.SaveChanges(); } catch (Exception ex) { _logger.Information($"ExchangesService.DeleteAllSymbolsForExchange(name: {name})"); _logger.Error(ex.Message); return(false); } return(true); }
public IList <TickerModel> Overview(AvailableExchanges exchangeName, string market) { var result = _exchangesService.GetOverview(exchangeName, market); return(result); }
public JsonResult DeleteSymbols(AvailableExchanges name) { var result = _exchangesService.DeleteAllSymbolsForExchange(name); return(Json(result)); }
public IActionResult Details(AvailableExchanges name) { var model = _exchangesService.GetDetails(name); return(View(model)); }