Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
        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);
        }