public async Task <IEnumerable <TournamentCategory> > GetTournament() { if (cache.TryGetValue <IEnumerable <TournamentCategory> >("GetTournament", out var cached)) { return(cached); } Stream getStream(List <Stream> streams, Random rand) { var stream = streams[rand.Next(streams.Count)]; streams.Remove(stream); return(stream); } var streams = await streamsApi.GetStreams(); var random = new Random(); var calculated = categories .Select(c => (category: c, count: random.Next(1, 5))) .Select(p => new TournamentCategory { category = p.category, tournaments = Enumerable.Repeat(0, p.count) .Select(_ => getStream(streams, random)) .Select(s => mapper.Map <Tournament>(s)) .ToList() }).ToList(); cache.Set("GetTournament", calculated, new MemoryCacheEntryOptions().SetAbsoluteExpiration(TimeSpan.FromHours(1))); return(calculated); }
public async Task <List <Stream> > GetStreams(string country = "", string haspb = "on", int start = 0) { return(await streamsApi.GetStreams(country, haspb, start)); }