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); }