public async Task <ActionResult <IEnumerable <Game> > > GetOddsFromDataFeed( DataFeedId dataFeedId, SportId sportId, CancellationToken cancellation) { return(Ok(await _feedManager.GetOddsFromDataFeed(sportId, dataFeedId, cancellation))); }
private IDataFeed GetDataFeed(DataFeedId dataFeedId) { if (!_dataFeeds.TryGetValue(dataFeedId, out var dataFeed)) { _logger.LogError("Data feed id {DataFeedId} is invalid or not available", dataFeedId); throw new ArgumentException($"Data feed id {dataFeedId} is invalid or not available"); } return(dataFeed); }
public async Task <IEnumerable <Game> > GetOddsFromDataFeed(SportId sportId, DataFeedId dataFeedId, CancellationToken cancellation) { var key = GetFeedKey(sportId, dataFeedId); var result = await _cache.GetAsync <IEnumerable <Game> >(key, cancellation); if (result == null) { var dataFeed = GetDataFeed(dataFeedId); result = await dataFeed.GetOdds(sportId, cancellation); await _cache.SetAsync(key, result, dataFeed.Throttle, cancellation); } return(result); }
public ActionResult <IEnumerable <Option> > GetDataFeedSports(DataFeedId dataFeedId) { var sports = _feedManager.GetDataFeedSports(dataFeedId); return(Ok(Option.GetFromEnum(sports))); }
public async Task <ActionResult <IEnumerable <Game> > > CalculateArbitrageFromFeed(SportId sportId, DataFeedId dataFeedId, CancellationToken cancellation) { var games = await _feedManager.GetOddsFromDataFeed(sportId, dataFeedId, cancellation); return(Ok(_arbitrageCalculator.CalculateArbitrageOpportunities(games).ToList())); }
private static string GetFeedKey(SportId sportId, DataFeedId dataFeedId) { return($"{{{dataFeedId}}}:{{{sportId}}}"); }
public IEnumerable <SportId> GetDataFeedSports(DataFeedId dataFeedId) { var dataFeed = GetDataFeed(dataFeedId); return(dataFeed.SupportedSports); }