Exemplo n.º 1
0
        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);
        }