Exemplo n.º 1
0
        private void HandleEpisodeScrobbleStart(IPlayerContext pc, IMediaPlaybackControl pmc)
        {
            ValidateAuthorization();

            MediaItem episodeMediaItem = GetMediaItem(pc.CurrentMediaItem.MediaItemId, new Guid[] { MediaAspect.ASPECT_ID, ExternalIdentifierAspect.ASPECT_ID, EpisodeAspect.ASPECT_ID });

            _traktEpisode = ExtractTraktEpisode(episodeMediaItem);
            _traktShow    = ExtractTraktShow(episodeMediaItem);
            float progress = GetCurrentProgress(pmc);
            ITraktEpisodeScrobblePostResponse postEpisodeResponse = _traktClient.StartScrobbleEpisode(_traktEpisode, _traktShow, progress);
            string title         = postEpisodeResponse.Show.Title + " " + postEpisodeResponse.Episode.SeasonNumber + "x" + postEpisodeResponse.Episode.Number;
            int?   traktProgress = null;

            if (postEpisodeResponse.Progress != null)
            {
                traktProgress = (int)postEpisodeResponse.Progress;
            }
            string actionType = postEpisodeResponse.Action.DisplayName;

            bool startNotificationsEnabled = _mediaPortalServices.GetTraktSettingsWatcher().TraktSettings.ShowScrobbleStartedNotifications;

            if (startNotificationsEnabled)
            {
                ShowNotification(new TraktScrobbleStartedNotification(title, true, traktProgress, actionType), TimeSpan.FromSeconds(5));
            }

            _duration = pmc.Duration;
            _mediaPortalServices.GetLogger().Info("Trakt: started to scrobble: {0}", title);
        }
        private ITraktClient GetMockedTraktClientWithValidAuthorization()
        {
            ITraktClient traktClient = Substitute.For <ITraktClient>();

            traktClient.TraktAuthorization.Returns(new TraktAuthorization
            {
                RefreshToken = "ValidToken",
                AccessToken  = "ValidToken"
            });

            traktClient.RefreshAuthorization(Arg.Any <string>()).Returns(new TraktAuthorization
            {
                RefreshToken = "ValidToken"
            });
            traktClient.StartScrobbleEpisode(Arg.Any <ITraktEpisode>(), Arg.Any <ITraktShow>(), Arg.Any <float>()).Returns(
                new TraktEpisodeScrobblePostResponse
            {
                Show = new TraktShow
                {
                    Title = "Title_1"
                },
                Episode = new TraktEpisode
                {
                    Ids = new TraktEpisodeIds {
                        Imdb = "tt12345", Tvdb = 289590
                    },
                    Number       = 2,
                    SeasonNumber = 2
                },
                Action   = TraktScrobbleActionType.Start,
                Progress = 10
            });

            return(traktClient);
        }