private TraktMovieScrobblePost CreateMovieScrobblePost(TraktMovie movie, float progress, string appVersion = null, DateTime?appDate = null) { Validate(movie); ValidateProgress(progress); var movieScrobblePost = new TraktMovieScrobblePost { Movie = new TraktMovie { Title = movie.Title, Year = movie.Year, Ids = movie.Ids }, Progress = progress }; if (!string.IsNullOrEmpty(appVersion)) { movieScrobblePost.AppVersion = appVersion; } if (appDate.HasValue) { movieScrobblePost.AppDate = appDate.Value.ToTraktDateString(); } return(movieScrobblePost); }
public override async Task <ITraktMovieScrobblePost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) { if (jsonReader == null) { return(await Task.FromResult(default(ITraktMovieScrobblePost))); } if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject) { var movieReader = new MovieObjectJsonReader(); ITraktMovieScrobblePost movieScrobblePost = new TraktMovieScrobblePost(); while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName) { var propertyName = jsonReader.Value.ToString(); switch (propertyName) { case JsonProperties.SCROBBLE_POST_PROPERTY_NAME_PROGRESS: { Pair <bool, float> value = await JsonReaderHelper.ReadFloatValueAsync(jsonReader, cancellationToken); if (value.First) { movieScrobblePost.Progress = value.Second; } break; } case JsonProperties.SCROBBLE_POST_PROPERTY_NAME_APP_VERSION: movieScrobblePost.AppVersion = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.SCROBBLE_POST_PROPERTY_NAME_APP_DATE: movieScrobblePost.AppDate = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.MOVIE_SCROBBLE_POST_PROPERTY_NAME_MOVIE: movieScrobblePost.Movie = await movieReader.ReadObjectAsync(jsonReader, cancellationToken); break; default: await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken); break; } } return(movieScrobblePost); } return(await Task.FromResult(default(ITraktMovieScrobblePost))); }
public void TestTraktMovieScrobblePostDefaultConstructor() { var movieScrobble = new TraktMovieScrobblePost(); movieScrobble.Progress.Should().Be(0.0f); movieScrobble.AppVersion.Should().BeNullOrEmpty(); movieScrobble.AppDate.Should().BeNull(); movieScrobble.Movie.Should().BeNull(); }
public void TestTraktMovieScrobblePostWriteJson() { var progress = 55.0f; var appVersion = "App Version 1.0.0"; var appDate = DateTime.UtcNow.ToString("yyyy-MM-dd"); var movieTitle = "Guardians of the Galaxy"; var movieYear = 2014; var movieTraktId = 28U; var movieSlug = "guardiangs-of-the-galaxy-2014"; var movieImdb = "tt2015381"; var movieTmdb = 118340U; var movie = new TraktMovie { Title = movieTitle, Year = movieYear, Ids = new TraktMovieIds { Trakt = movieTraktId, Slug = movieSlug, Imdb = movieImdb, Tmdb = movieTmdb } }; var movieScrobble = new TraktMovieScrobblePost { Progress = progress, AppVersion = appVersion, AppDate = appDate, Movie = movie }; var strJson = JsonConvert.SerializeObject(movieScrobble); strJson.Should().NotBeNullOrEmpty(); var movieScrobbleFromJson = JsonConvert.DeserializeObject <TraktMovieScrobblePost>(strJson); movieScrobbleFromJson.Should().NotBeNull(); movieScrobbleFromJson.Progress.Should().Be(progress); movieScrobbleFromJson.AppVersion.Should().Be(appVersion); movieScrobbleFromJson.AppDate.Should().NotBeNull().And.NotBeEmpty().And.Be(appDate); movieScrobbleFromJson.Movie.Should().NotBeNull(); movieScrobbleFromJson.Movie.Title.Should().Be(movieTitle); movieScrobbleFromJson.Movie.Year.Should().Be(movieYear); movieScrobbleFromJson.Movie.Ids.Should().NotBeNull(); movieScrobbleFromJson.Movie.Ids.Trakt.Should().Be(movieTraktId); movieScrobbleFromJson.Movie.Ids.Slug.Should().Be(movieSlug); movieScrobbleFromJson.Movie.Ids.Imdb.Should().Be(movieImdb); movieScrobbleFromJson.Movie.Ids.Tmdb.Should().Be(movieTmdb); }
public async Task Test_TraktScrobbleModule_PauseMovie_ArgumentExceptions() { ITraktMovie movie = new TraktMovie { Ids = new TraktMovieIds { Trakt = 28, Slug = "guardians-of-the-galaxy-2014", Imdb = "tt2015381", Tmdb = 118340 } }; ITraktMovieScrobblePost moviePauseScrobblePost = new TraktMovieScrobblePost { Movie = movie, Progress = PAUSE_PROGRESS }; string postJson = await TestUtility.SerializeObject(moviePauseScrobblePost); postJson.Should().NotBeNullOrEmpty(); TraktClient client = TestUtility.GetOAuthMockClient(SCROBBLE_PAUSE_URI, postJson, MOVIE_PAUSE_SCROBBLE_POST_RESPONSE_JSON); Func <Task <TraktResponse <ITraktMovieScrobblePostResponse> > > act = () => client.Scrobble.PauseMovieAsync(null, PAUSE_PROGRESS); act.Should().Throw <ArgumentNullException>(); movie.Ids = null; act = () => client.Scrobble.PauseMovieAsync(movie, PAUSE_PROGRESS); act.Should().Throw <ArgumentNullException>(); movie.Ids = new TraktMovieIds(); act = () => client.Scrobble.PauseMovieAsync(movie, PAUSE_PROGRESS); act.Should().Throw <ArgumentException>(); movie.Ids = new TraktMovieIds { Trakt = 28, Slug = "guardians-of-the-galaxy-2014", Imdb = "tt2015381", Tmdb = 118340 }; act = () => client.Scrobble.PauseMovieAsync(movie, -0.0001f); act.Should().Throw <ArgumentOutOfRangeException>(); act = () => client.Scrobble.PauseMovieAsync(movie, 100.0001f); act.Should().Throw <ArgumentOutOfRangeException>(); }
public async Task Test_TraktScrobbleModule_StartMovie_Complete() { ITraktMovieScrobblePost movieStartScrobblePost = new TraktMovieScrobblePost { Movie = Movie, Progress = START_PROGRESS, AppVersion = APP_VERSION, AppDate = APP_BUILD_DATE.ToTraktDateString() }; string postJson = await TestUtility.SerializeObject(movieStartScrobblePost); postJson.Should().NotBeNullOrEmpty(); TraktClient client = TestUtility.GetOAuthMockClient(SCROBBLE_START_URI, postJson, MOVIE_START_SCROBBLE_POST_RESPONSE_JSON); TraktResponse <ITraktMovieScrobblePostResponse> response = await client.Scrobble.StartMovieAsync(Movie, START_PROGRESS, APP_VERSION, APP_BUILD_DATE); response.Should().NotBeNull(); response.IsSuccess.Should().BeTrue(); response.HasValue.Should().BeTrue(); response.Value.Should().NotBeNull(); ITraktMovieScrobblePostResponse 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.Movie.Should().NotBeNull(); responseValue.Movie.Title.Should().Be("Guardians of the Galaxy"); responseValue.Movie.Year.Should().Be(2014); responseValue.Movie.Ids.Should().NotBeNull(); responseValue.Movie.Ids.Trakt.Should().Be(28U); responseValue.Movie.Ids.Slug.Should().Be("guardians-of-the-galaxy-2014"); responseValue.Movie.Ids.Imdb.Should().Be("tt2015381"); responseValue.Movie.Ids.Tmdb.Should().Be(118340U); }
public async Task Test_TraktScrobbleModule_PauseMovie() { ITraktMovieScrobblePost moviePauseScrobblePost = new TraktMovieScrobblePost { Movie = Movie, Progress = PAUSE_PROGRESS }; string postJson = await TestUtility.SerializeObject(moviePauseScrobblePost); postJson.Should().NotBeNullOrEmpty(); TraktClient client = TestUtility.GetOAuthMockClient(SCROBBLE_PAUSE_URI, postJson, MOVIE_PAUSE_SCROBBLE_POST_RESPONSE_JSON); TraktResponse <ITraktMovieScrobblePostResponse> response = await client.Scrobble.PauseMovieAsync(Movie, PAUSE_PROGRESS); response.Should().NotBeNull(); response.IsSuccess.Should().BeTrue(); response.HasValue.Should().BeTrue(); response.Value.Should().NotBeNull(); ITraktMovieScrobblePostResponse 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.Twitter.Should().BeFalse(); responseValue.Sharing.Tumblr.Should().BeFalse(); responseValue.Movie.Should().NotBeNull(); responseValue.Movie.Title.Should().Be("Guardians of the Galaxy"); responseValue.Movie.Year.Should().Be(2014); responseValue.Movie.Ids.Should().NotBeNull(); responseValue.Movie.Ids.Trakt.Should().Be(28U); responseValue.Movie.Ids.Slug.Should().Be("guardians-of-the-galaxy-2014"); responseValue.Movie.Ids.Imdb.Should().Be("tt2015381"); responseValue.Movie.Ids.Tmdb.Should().Be(118340U); }