private async Task <List <GameViewModel> > GetLiveTopGamesAsync() { var topGamesView = new List <GameViewModel>(); var topGames = await _twitchClient.GetTopGamesAsync(); if (topGames != null && topGames.Data.Any()) { await topGames.Data.ForEachAsync(10, async game => { var coverArt = game.BoxArtUrl.Replace("{width}x{height}", "285x380"); var gameViewModel = new GameViewModel(game.Name, coverArt); var id = Int32.Parse(game.Id); var streams = await _twitchClient.GetStreamsByIdAsync(id); if (streams.Data != null && streams.Data.Any()) { var streamsViewModel = new List <StreamViewModel>(); streamsViewModel.AddRange(streams.Data.Select(x => new StreamViewModel(x))); gameViewModel.Streams = streamsViewModel; } var igdbGames = await _igdbClient.GetGameByNameAsync(game.Name); if (igdbGames != null && igdbGames.Any()) { var firstMatch = igdbGames.First(); gameViewModel.Review = new ReviewViewModel(firstMatch); } topGamesView.Add(gameViewModel); }); } return(topGamesView); }