Exemplo n.º 1
0
        public async Task <IActionResult> RefreshStreamData()
        {
            var loadedConfig = await JsonFileProcessor.LoadConfigurationFile();

            var userApiResponse = await TwitchApiClient.GetUserDataAsync(loadedConfig.Login);

            if (userApiResponse != null)
            {
                var selectedUser       = userApiResponse.Data.First();
                var channelApiResponse = await TwitchApiClient.GetChannelDataAsync(selectedUser.Login);

                if (channelApiResponse != null)
                {
                    var stats = new TwitchStatsModel()
                    {
                        ChannelViews     = selectedUser.View_Count,
                        ChannelFollowers = 0
                    };

                    var followerApiResponse = await TwitchApiClient.GetFollowerDataAsync(selectedUser.Id);

                    if (followerApiResponse != null)
                    {
                        stats.ChannelFollowers = followerApiResponse.Total;
                    }

                    var selectedChannel = channelApiResponse.Data.First(m => m.Id.Equals(selectedUser.Id));

                    if (selectedChannel.Is_Live)
                    {
                        var streamApiResponse = await TwitchApiClient.GetStreamDataAsync(selectedUser.Id);

                        if (streamApiResponse == null)
                        {
                            stats.Viewers             = 1;
                            stats.StreamStartDateTime = selectedChannel.Started_At;
                            stats.Clips = 0;

                            return(PartialView("_LiveInformationPartial", stats));
                        }
                        if (streamApiResponse.Data.Count < 1)
                        {
                            return(PartialView("_OfflineInformationPartial", stats));
                        }

                        var selectedStream = streamApiResponse.Data.First();

                        stats.Viewers             = selectedStream.Viewer_Count;
                        stats.StreamStartDateTime = selectedStream.Started_At;

                        var clipApiResponse = await TwitchApiClient.GetClipDataAsync(selectedUser.Id, selectedStream.Started_At);

                        stats.Clips = clipApiResponse != null ? clipApiResponse.Data.Count : 0;

                        if (System.IO.File.Exists(loadedConfig.NowPlayingFile))
                        {
                            stats.NowPlaying = await System.IO.File.ReadAllTextAsync(loadedConfig.NowPlayingFile);

                            stats.NowPlaying = stats.NowPlaying.Trim();
                        }

                        return(PartialView("_LiveInformationPartial", stats));
                    }

                    return(PartialView("_OfflineInformationPartial", stats));
                }
            }

            ViewData["AuthenticationUrl"] = TwitchValidationClient.GetAuthenticationUrl(Url.Action("Authentication", "TwitchData", null, Request.Scheme));
            return(PartialView("_ReauthenticationPartial"));
        }
Exemplo n.º 2
0
        public async Task <IActionResult> Index()
        {
            var loadedConfig = await JsonFileProcessor.LoadConfigurationFile();

            var userApiResponse = await TwitchApiClient.GetUserDataAsync(loadedConfig.Login);

            if (userApiResponse == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var selectedUser = userApiResponse.Data.First();

            ViewData["DisplayName"] = selectedUser.Display_Name;
            ViewData["UserAvatar"]  = selectedUser.Profile_Image_Url;

            var channelApiResponse = await TwitchApiClient.GetChannelDataAsync(selectedUser.Login);

            if (channelApiResponse == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var selectedChannel = channelApiResponse.Data.First(m => m.Id.Equals(selectedUser.Id));

            ViewData["IsLive"] = selectedChannel.Is_Live;

            var stats = new TwitchStatsModel()
            {
                ChannelViews     = selectedUser.View_Count,
                ChannelFollowers = 0
            };

            if (selectedChannel.Is_Live)
            {
                var streamApiResponse = await TwitchApiClient.GetStreamDataAsync(selectedUser.Id);

                if (streamApiResponse == null)
                {
                    stats.Viewers             = 1;
                    stats.StreamStartDateTime = selectedChannel.Started_At;
                    stats.Clips = 0;
                }
                else if (streamApiResponse.Data.Count < 1)
                {
                    ViewData["IsLive"] = false;
                }
                else
                {
                    var selectedStream = streamApiResponse.Data.First();

                    stats.Viewers             = selectedStream.Viewer_Count;
                    stats.StreamStartDateTime = selectedStream.Started_At;

                    var clipApiResponse = await TwitchApiClient.GetClipDataAsync(selectedUser.Id, selectedStream.Started_At);

                    stats.Clips = clipApiResponse != null ? clipApiResponse.Data.Count : 0;

                    if (System.IO.File.Exists(loadedConfig.NowPlayingFile))
                    {
                        stats.NowPlaying = await System.IO.File.ReadAllTextAsync(loadedConfig.NowPlayingFile);

                        stats.NowPlaying = stats.NowPlaying.Trim();
                    }
                }
            }

            var followerApiResponse = await TwitchApiClient.GetFollowerDataAsync(selectedUser.Id);

            if (followerApiResponse != null)
            {
                stats.ChannelFollowers = followerApiResponse.Total;
            }

            return(View(stats));
        }