private TraktEpisodeScrobblePost CreateEpisodeScrobblePost(TraktEpisode episode, float progress, TraktShow show = null, string appVersion = null, DateTime?appDate = null) { Validate(episode, show); ValidateProgress(progress); var episodeScrobblePost = new TraktEpisodeScrobblePost { Episode = new TraktEpisode { Ids = episode.Ids, SeasonNumber = episode.SeasonNumber, Number = episode.Number }, Show = show != null ? new TraktShow { Title = show.Title } : null, Progress = progress }; if (!string.IsNullOrEmpty(appVersion)) { episodeScrobblePost.AppVersion = appVersion; } if (appDate.HasValue) { episodeScrobblePost.AppDate = appDate.Value.ToTraktDateString(); } return(episodeScrobblePost); }
public override async Task <ITraktEpisodeScrobblePost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) { CheckJsonTextReader(jsonReader); if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject) { var episodeReader = new EpisodeObjectJsonReader(); var showReader = new ShowObjectJsonReader(); ITraktEpisodeScrobblePost episodeScrobblePost = new TraktEpisodeScrobblePost(); while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName) { var propertyName = jsonReader.Value.ToString(); switch (propertyName) { case JsonProperties.PROPERTY_NAME_PROGRESS: { Pair <bool, float> value = await JsonReaderHelper.ReadFloatValueAsync(jsonReader, cancellationToken); if (value.First) { episodeScrobblePost.Progress = value.Second; } break; } case JsonProperties.PROPERTY_NAME_APP_VERSION: episodeScrobblePost.AppVersion = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.PROPERTY_NAME_APP_DATE: episodeScrobblePost.AppDate = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.PROPERTY_NAME_SHOW: episodeScrobblePost.Show = await showReader.ReadObjectAsync(jsonReader, cancellationToken); break; case JsonProperties.PROPERTY_NAME_EPISODE: episodeScrobblePost.Episode = await episodeReader.ReadObjectAsync(jsonReader, cancellationToken); break; default: await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken); break; } } return(episodeScrobblePost); } return(await Task.FromResult(default(ITraktEpisodeScrobblePost))); }
public void TestTraktEpisodeScrobblePostDefaultConstructor() { var episodeScrobble = new TraktEpisodeScrobblePost(); episodeScrobble.Progress.Should().Be(0.0f); episodeScrobble.AppVersion.Should().BeNullOrEmpty(); episodeScrobble.AppDate.Should().BeNull(); episodeScrobble.Episode.Should().BeNull(); episodeScrobble.Show.Should().BeNull(); }
public async Task Test_TraktScrobbleModule_StartEpisodeWithShow_Complete() { ITraktEpisodeScrobblePost episodeStartScrobblePost = new TraktEpisodeScrobblePost { Episode = Episode, Show = Show, Progress = START_PROGRESS, AppVersion = APP_VERSION, AppDate = APP_BUILD_DATE.ToTraktDateString() }; string postJson = await TestUtility.SerializeObject(episodeStartScrobblePost); postJson.Should().NotBeNullOrEmpty(); TraktClient client = TestUtility.GetOAuthMockClient(SCROBBLE_START_URI, postJson, EPISODE_START_SCROBBLE_POST_RESPONSE_JSON); TraktResponse <ITraktEpisodeScrobblePostResponse> response = await client.Scrobble.StartEpisodeWithShowAsync(Episode, Show, START_PROGRESS, APP_VERSION, APP_BUILD_DATE); response.Should().NotBeNull(); response.IsSuccess.Should().BeTrue(); response.HasValue.Should().BeTrue(); response.Value.Should().NotBeNull(); ITraktEpisodeScrobblePostResponse responseValue = response.Value; responseValue.Id.Should().Be(0); responseValue.Action.Should().Be(TraktScrobbleActionType.Start); responseValue.Progress.Should().Be(START_PROGRESS); responseValue.Sharing.Should().NotBeNull(); responseValue.Sharing.Facebook.Should().BeTrue(); responseValue.Sharing.Twitter.Should().BeTrue(); responseValue.Sharing.Tumblr.Should().BeFalse(); responseValue.Episode.Should().NotBeNull(); responseValue.Episode.SeasonNumber.Should().Be(1); responseValue.Episode.Number.Should().Be(1); responseValue.Episode.Title.Should().Be("Pilot"); responseValue.Episode.Ids.Should().NotBeNull(); responseValue.Episode.Ids.Trakt.Should().Be(16U); responseValue.Episode.Ids.Tvdb.Should().Be(349232U); responseValue.Episode.Ids.Imdb.Should().Be("tt0959621"); responseValue.Episode.Ids.Tmdb.Should().Be(62085U); responseValue.Episode.Ids.TvRage.Should().Be(637041U); responseValue.Show.Should().NotBeNull(); responseValue.Show.Title.Should().Be("Breaking Bad"); responseValue.Show.Year.Should().Be(2008); responseValue.Show.Ids.Should().NotBeNull(); responseValue.Show.Ids.Trakt.Should().Be(1U); responseValue.Show.Ids.Slug.Should().Be("breaking-bad"); responseValue.Show.Ids.Tvdb.Should().Be(81189U); responseValue.Show.Ids.Imdb.Should().Be("tt0903747"); responseValue.Show.Ids.Tmdb.Should().Be(1396U); responseValue.Show.Ids.TvRage.Should().Be(18164U); }
public async Task Test_TraktScrobbleModule_StopEpisode_With_AppVersion_And_AppDate() { ITraktEpisodeScrobblePost episodeStopScrobblePost = new TraktEpisodeScrobblePost { Episode = Episode, Progress = STOP_PROGRESS, AppVersion = APP_VERSION, AppDate = APP_BUILD_DATE.ToTraktDateString() }; string postJson = await TestUtility.SerializeObject(episodeStopScrobblePost); postJson.Should().NotBeNullOrEmpty(); TraktClient client = TestUtility.GetOAuthMockClient(SCROBBLE_STOP_URI, postJson, EPISODE_STOP_SCROBBLE_POST_RESPONSE_JSON); TraktResponse <ITraktEpisodeScrobblePostResponse> response = await client.Scrobble.StopEpisodeAsync(Episode, STOP_PROGRESS, APP_VERSION, APP_BUILD_DATE); response.Should().NotBeNull(); response.IsSuccess.Should().BeTrue(); response.HasValue.Should().BeTrue(); response.Value.Should().NotBeNull(); ITraktEpisodeScrobblePostResponse responseValue = response.Value; responseValue.Id.Should().Be(3373536623); responseValue.Action.Should().Be(TraktScrobbleActionType.Stop); responseValue.Progress.Should().Be(STOP_PROGRESS); responseValue.Sharing.Should().NotBeNull(); responseValue.Sharing.Facebook.Should().BeTrue(); responseValue.Sharing.Twitter.Should().BeTrue(); responseValue.Sharing.Tumblr.Should().BeFalse(); responseValue.Episode.Should().NotBeNull(); responseValue.Episode.SeasonNumber.Should().Be(1); responseValue.Episode.Number.Should().Be(1); responseValue.Episode.Title.Should().Be("Pilot"); responseValue.Episode.Ids.Should().NotBeNull(); responseValue.Episode.Ids.Trakt.Should().Be(16U); responseValue.Episode.Ids.Tvdb.Should().Be(349232U); responseValue.Episode.Ids.Imdb.Should().Be("tt0959621"); responseValue.Episode.Ids.Tmdb.Should().Be(62085U); responseValue.Episode.Ids.TvRage.Should().Be(637041U); }
public async Task Test_TraktScrobbleModule_PauseEpisode() { ITraktEpisodeScrobblePost episodePauseScrobblePost = new TraktEpisodeScrobblePost { Episode = Episode, Progress = PAUSE_PROGRESS }; string postJson = await TestUtility.SerializeObject(episodePauseScrobblePost); postJson.Should().NotBeNullOrEmpty(); TraktClient client = TestUtility.GetOAuthMockClient(SCROBBLE_PAUSE_URI, postJson, EPISODE_PAUSE_SCROBBLE_POST_RESPONSE_JSON); TraktResponse <ITraktEpisodeScrobblePostResponse> response = await client.Scrobble.PauseEpisodeAsync(Episode, PAUSE_PROGRESS); response.Should().NotBeNull(); response.IsSuccess.Should().BeTrue(); response.HasValue.Should().BeTrue(); response.Value.Should().NotBeNull(); ITraktEpisodeScrobblePostResponse responseValue = response.Value; responseValue.Id.Should().Be(0); responseValue.Action.Should().Be(TraktScrobbleActionType.Pause); responseValue.Progress.Should().Be(PAUSE_PROGRESS); responseValue.Sharing.Should().NotBeNull(); responseValue.Sharing.Facebook.Should().BeFalse(); responseValue.Sharing.Twitter.Should().BeTrue(); responseValue.Sharing.Tumblr.Should().BeFalse(); responseValue.Episode.Should().NotBeNull(); responseValue.Episode.SeasonNumber.Should().Be(1); responseValue.Episode.Number.Should().Be(1); responseValue.Episode.Title.Should().Be("Pilot"); responseValue.Episode.Ids.Should().NotBeNull(); responseValue.Episode.Ids.Trakt.Should().Be(16U); responseValue.Episode.Ids.Tvdb.Should().Be(349232U); responseValue.Episode.Ids.Imdb.Should().Be("tt0959621"); responseValue.Episode.Ids.Tmdb.Should().Be(62085U); responseValue.Episode.Ids.TvRage.Should().Be(637041U); }
private ITraktEpisodeScrobblePost CreateEpisodeScrobblePost(int absoluteEpisodeNumber, float progress, ITraktShow show = null, string appVersion = null, DateTime?appDate = null) { if (show == null) { throw new ArgumentNullException(nameof(show), "show must not be null"); } ValidateProgress(progress); var episodeScrobblePost = new TraktEpisodeScrobblePost { Episode = new TraktEpisode { NumberAbsolute = absoluteEpisodeNumber }, Show = new TraktShow { Title = show.Title, Ids = show.Ids }, Progress = progress }; if (!string.IsNullOrEmpty(appVersion)) { episodeScrobblePost.AppVersion = appVersion; } if (appDate.HasValue) { episodeScrobblePost.AppDate = appDate.Value.ToTraktDateString(); } return(episodeScrobblePost); }
public async Task Test_TraktScrobbleModule_StopEpisodeWithShow_ArgumentExceptions() { ITraktEpisode episode = new TraktEpisode { SeasonNumber = 0, Number = 1, Ids = new TraktEpisodeIds { Trakt = 16, Tvdb = 349232, Imdb = "tt0959621", Tmdb = 62085, TvRage = 637041 } }; ITraktShow show = new TraktShow { Title = "Breaking Bad" }; ITraktEpisodeScrobblePost episodeStopScrobblePost = new TraktEpisodeScrobblePost { Episode = episode, Show = show, Progress = STOP_PROGRESS }; string postJson = await TestUtility.SerializeObject(episodeStopScrobblePost); postJson.Should().NotBeNullOrEmpty(); TraktClient client = TestUtility.GetOAuthMockClient(SCROBBLE_STOP_URI, postJson, EPISODE_STOP_SCROBBLE_POST_RESPONSE_JSON); Func <Task <TraktResponse <ITraktEpisodeScrobblePostResponse> > > act = () => client.Scrobble.StopEpisodeAsync(null, STOP_PROGRESS); act.Should().Throw <ArgumentNullException>(); episode.Ids = null; act = () => client.Scrobble.StopEpisodeAsync(episode, STOP_PROGRESS); act.Should().Throw <ArgumentNullException>(); episode.Ids = new TraktEpisodeIds(); act = () => client.Scrobble.StopEpisodeAsync(episode, STOP_PROGRESS); act.Should().Throw <ArgumentNullException>(); episode.Ids = new TraktEpisodeIds { Trakt = 16, Tvdb = 349232, Imdb = "tt0959621", Tmdb = 62085, TvRage = 637041 }; act = () => client.Scrobble.StopEpisodeAsync(episode, -0.0001f); act.Should().Throw <ArgumentOutOfRangeException>(); act = () => client.Scrobble.StopEpisodeAsync(episode, 100.0001f); act.Should().Throw <ArgumentOutOfRangeException>(); episode.Ids = null; episode.SeasonNumber = -1; act = () => client.Scrobble.StopEpisodeWithShowAsync(episode, show, STOP_PROGRESS); act.Should().Throw <ArgumentOutOfRangeException>(); episode.Ids = new TraktEpisodeIds(); act = () => client.Scrobble.StopEpisodeWithShowAsync(episode, show, STOP_PROGRESS); act.Should().Throw <ArgumentOutOfRangeException>(); episode.Ids = null; episode.SeasonNumber = 0; episode.Number = 0; act = () => client.Scrobble.StopEpisodeWithShowAsync(episode, show, STOP_PROGRESS); act.Should().Throw <ArgumentOutOfRangeException>(); episode.Ids = new TraktEpisodeIds(); episode.Number = 0; act = () => client.Scrobble.StopEpisodeWithShowAsync(episode, show, STOP_PROGRESS); act.Should().Throw <ArgumentOutOfRangeException>(); episode.Ids = null; episode.Number = 1; show.Title = string.Empty; act = () => client.Scrobble.StopEpisodeWithShowAsync(episode, show, STOP_PROGRESS); act.Should().Throw <ArgumentException>(); episode.Ids = new TraktEpisodeIds(); act = () => client.Scrobble.StopEpisodeWithShowAsync(episode, show, STOP_PROGRESS); act.Should().Throw <ArgumentException>(); episode.Ids = null; show.Title = "Breaking Bad"; act = () => client.Scrobble.StopEpisodeWithShowAsync(episode, show, -0.0001f); act.Should().Throw <ArgumentOutOfRangeException>(); act = () => client.Scrobble.StopEpisodeWithShowAsync(episode, show, 100.0001f); act.Should().Throw <ArgumentOutOfRangeException>(); episode.Ids = new TraktEpisodeIds(); act = () => client.Scrobble.StopEpisodeWithShowAsync(episode, show, -0.0001f); act.Should().Throw <ArgumentOutOfRangeException>(); act = () => client.Scrobble.StopEpisodeWithShowAsync(episode, show, 100.0001f); act.Should().Throw <ArgumentOutOfRangeException>(); }
public void TestTraktEpisodeScrobblePostWriteJson() { var progress = 65.0f; var appVersion = "App Version 1.0.0"; var appDate = DateTime.UtcNow.ToString("yyyy-MM-dd"); var episodeNr = 1; var seasonNr = 1; var episodeTitle = "Pilot"; var episodeTraktId = 16U; var episodeTvdb = 349232U; var episodeImdb = "tt0959621"; var episodeTmdb = 62085U; var episodeTvRage = 637041U; var showTitle = "Breaking Bad"; var showYear = 2008; var showTraktId = 1U; var showSlug = "breaking-bad"; var showTvdb = 81189U; var showImdb = "tt0903747"; var showTmdb = 1396U; var showTvRage = 18164U; var episode = new TraktEpisode { SeasonNumber = seasonNr, Number = episodeNr, Title = episodeTitle, Ids = new TraktEpisodeIds { Trakt = episodeTraktId, Tvdb = episodeTvdb, Imdb = episodeImdb, Tmdb = episodeTmdb, TvRage = episodeTvRage } }; var show = new TraktShow { Title = showTitle, Year = showYear, Ids = new TraktShowIds { Trakt = showTraktId, Slug = showSlug, Tvdb = showTvdb, Imdb = showImdb, Tmdb = showTmdb, TvRage = showTvRage } }; var movieScrobble = new TraktEpisodeScrobblePost { Progress = progress, AppVersion = appVersion, AppDate = appDate, Episode = episode, Show = show }; var strJson = JsonConvert.SerializeObject(movieScrobble); strJson.Should().NotBeNullOrEmpty(); var episodeScrobbleFromJson = JsonConvert.DeserializeObject <TraktEpisodeScrobblePost>(strJson); episodeScrobbleFromJson.Should().NotBeNull(); episodeScrobbleFromJson.Progress.Should().Be(progress); episodeScrobbleFromJson.AppVersion.Should().Be(appVersion); episodeScrobbleFromJson.AppDate.Should().NotBeNull().And.NotBeEmpty().And.Be(appDate); episodeScrobbleFromJson.Episode.Should().NotBeNull(); episodeScrobbleFromJson.Episode.SeasonNumber.Should().Be(seasonNr); episodeScrobbleFromJson.Episode.Number.Should().Be(episodeNr); episodeScrobbleFromJson.Episode.Title.Should().Be(episodeTitle); episodeScrobbleFromJson.Episode.Ids.Should().NotBeNull(); episodeScrobbleFromJson.Episode.Ids.Trakt.Should().Be(episodeTraktId); episodeScrobbleFromJson.Episode.Ids.Tvdb.Should().Be(episodeTvdb); episodeScrobbleFromJson.Episode.Ids.Imdb.Should().Be(episodeImdb); episodeScrobbleFromJson.Episode.Ids.Tmdb.Should().Be(episodeTmdb); episodeScrobbleFromJson.Episode.Ids.TvRage.Should().Be(episodeTvRage); episodeScrobbleFromJson.Show.Should().NotBeNull(); episodeScrobbleFromJson.Show.Title.Should().Be(showTitle); episodeScrobbleFromJson.Show.Year.Should().Be(showYear); episodeScrobbleFromJson.Show.Ids.Should().NotBeNull(); episodeScrobbleFromJson.Show.Ids.Trakt.Should().Be(showTraktId); episodeScrobbleFromJson.Show.Ids.Slug.Should().Be(showSlug); episodeScrobbleFromJson.Show.Ids.Tvdb.Should().Be(showTvdb); episodeScrobbleFromJson.Show.Ids.Imdb.Should().Be(showImdb); episodeScrobbleFromJson.Show.Ids.Tmdb.Should().Be(showTmdb); episodeScrobbleFromJson.Show.Ids.TvRage.Should().Be(showTvRage); }