public void Test_SharingObjectJsonReader_ReadObject_From_JsonReader_Null()
        {
            var traktJsonReader = new SharingObjectJsonReader();
            Func <Task <ITraktSharing> > traktSharing = () => traktJsonReader.ReadObjectAsync(default(JsonTextReader));

            traktSharing.Should().Throw <ArgumentNullException>();
        }
Ejemplo n.º 2
0
        public async Task Test_SharingObjectJsonReader_ReadObject_From_Json_String_Empty()
        {
            var jsonReader = new SharingObjectJsonReader();

            var traktSharing = await jsonReader.ReadObjectAsync(string.Empty);

            traktSharing.Should().BeNull();
        }
Ejemplo n.º 3
0
        public async Task Test_SharingObjectJsonReader_ReadObject_From_Stream_Null()
        {
            var traktJsonReader = new SharingObjectJsonReader();

            var traktSharing = await traktJsonReader.ReadObjectAsync(default(Stream));

            traktSharing.Should().BeNull();
        }
Ejemplo n.º 4
0
        public override async Task <ITraktEpisodeCommentPost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(ITraktEpisodeCommentPost)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var sharingReader = new SharingObjectJsonReader();
                var episodeReader = new EpisodeObjectJsonReader();
                ITraktEpisodeCommentPost episodeCommentPost = new TraktEpisodeCommentPost();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.COMMENT_POST_PROPERTY_NAME_COMMENT:
                        episodeCommentPost.Comment = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.COMMENT_POST_PROPERTY_NAME_SPOILER:
                    {
                        bool?value = await jsonReader.ReadAsBooleanAsync(cancellationToken);

                        if (value.HasValue)
                        {
                            episodeCommentPost.Spoiler = value.Value;
                        }

                        break;
                    }

                    case JsonProperties.COMMENT_POST_PROPERTY_NAME_SHARING:
                        episodeCommentPost.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.EPISODE_COMMENT_POST_PROPERTY_NAME_EPISODE:
                        episodeCommentPost.Episode = await episodeReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(episodeCommentPost);
            }

            return(await Task.FromResult(default(ITraktEpisodeCommentPost)));
        }
Ejemplo n.º 5
0
        public override async Task <ITraktListCommentPost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            CheckJsonTextReader(jsonReader);

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var sharingReader = new SharingObjectJsonReader();
                var listReader    = new ListObjectJsonReader();
                ITraktListCommentPost listCommentPost = new TraktListCommentPost();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.PROPERTY_NAME_COMMENT:
                        listCommentPost.Comment = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_SPOILER:
                    {
                        bool?value = await jsonReader.ReadAsBooleanAsync(cancellationToken);

                        if (value.HasValue)
                        {
                            listCommentPost.Spoiler = value.Value;
                        }

                        break;
                    }

                    case JsonProperties.PROPERTY_NAME_SHARING:
                        listCommentPost.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_LIST:
                        listCommentPost.List = await listReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(listCommentPost);
            }

            return(await Task.FromResult(default(ITraktListCommentPost)));
        }
Ejemplo n.º 6
0
        public async Task Test_SharingObjectJsonReader_ReadObject_From_Stream_Empty()
        {
            var traktJsonReader = new SharingObjectJsonReader();

            using (var stream = string.Empty.ToStream())
            {
                var traktSharing = await traktJsonReader.ReadObjectAsync(stream);

                traktSharing.Should().BeNull();
            }
        }
Ejemplo n.º 7
0
        public override async Task <ITraktUserSettings> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(ITraktUserSettings)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var userReader            = new UserObjectJsonReader();
                var accountSettingsReader = new AccountSettingsObjectJsonReader();
                var sharingReader         = new SharingObjectJsonReader();
                var sharingTextReader     = new SharingTextObjectJsonReader();

                ITraktUserSettings traktUserSettings = new TraktUserSettings();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.USER_SETTINGS_PROPERTY_NAME_USER:
                        traktUserSettings.User = await userReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.USER_SETTINGS_PROPERTY_NAME_ACCOUNT:
                        traktUserSettings.Account = await accountSettingsReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.USER_SETTINGS_PROPERTY_NAME_CONNECTIONS:
                        traktUserSettings.Connections = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.USER_SETTINGS_PROPERTY_NAME_SHARING_TEXT:
                        traktUserSettings.SharingText = await sharingTextReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(traktUserSettings);
            }

            return(await Task.FromResult(default(ITraktUserSettings)));
        }
        public async Task Test_SharingObjectJsonReader_ReadObject_From_JsonReader_Empty()
        {
            var traktJsonReader = new SharingObjectJsonReader();

            using (var reader = new StringReader(string.Empty))
                using (var jsonReader = new JsonTextReader(reader))
                {
                    var traktSharing = await traktJsonReader.ReadObjectAsync(jsonReader);

                    traktSharing.Should().BeNull();
                }
        }
Ejemplo n.º 9
0
        public async Task Test_TraktSharing_From_Json()
        {
            var jsonReader   = new SharingObjectJsonReader();
            var traktSharing = await jsonReader.ReadObjectAsync(JSON) as TraktSharing;

            traktSharing.Should().NotBeNull();
            traktSharing.Twitter.Should().BeTrue();
            traktSharing.Google.Should().BeTrue();
            traktSharing.Tumblr.Should().BeTrue();
            traktSharing.Medium.Should().BeTrue();
            traktSharing.Slack.Should().BeTrue();
        }
Ejemplo n.º 10
0
        public async Task Test_SharingObjectJsonReader_ReadObject_From_Json_String_Incomplete_5()
        {
            var jsonReader = new SharingObjectJsonReader();

            var traktSharing = await jsonReader.ReadObjectAsync(JSON_INCOMPLETE_5);

            traktSharing.Should().NotBeNull();
            traktSharing.Twitter.Should().BeTrue();
            traktSharing.Google.Should().BeTrue();
            traktSharing.Tumblr.Should().BeTrue();
            traktSharing.Medium.Should().BeTrue();
            traktSharing.Slack.Should().BeNull();
        }
Ejemplo n.º 11
0
        public async Task Test_SharingObjectJsonReader_ReadObject_From_Json_String_Not_Valid_6()
        {
            var jsonReader = new SharingObjectJsonReader();

            var traktSharing = await jsonReader.ReadObjectAsync(JSON_NOT_VALID_6);

            traktSharing.Should().NotBeNull();
            traktSharing.Twitter.Should().BeNull();
            traktSharing.Google.Should().BeNull();
            traktSharing.Tumblr.Should().BeNull();
            traktSharing.Medium.Should().BeNull();
            traktSharing.Slack.Should().BeNull();
        }
        public async Task Test_SharingObjectJsonReader_ReadObject_From_Stream_Not_Valid_6()
        {
            var traktJsonReader = new SharingObjectJsonReader();

            using (var stream = JSON_NOT_VALID_6.ToStream())
            {
                var traktSharing = await traktJsonReader.ReadObjectAsync(stream);

                traktSharing.Should().NotBeNull();
                traktSharing.Twitter.Should().BeNull();
                traktSharing.Google.Should().BeNull();
                traktSharing.Tumblr.Should().BeNull();
                traktSharing.Medium.Should().BeNull();
                traktSharing.Slack.Should().BeNull();
            }
        }
        public async Task Test_SharingObjectJsonReader_ReadObject_From_Stream_Incomplete_4()
        {
            var traktJsonReader = new SharingObjectJsonReader();

            using (var stream = JSON_INCOMPLETE_4.ToStream())
            {
                var traktSharing = await traktJsonReader.ReadObjectAsync(stream);

                traktSharing.Should().NotBeNull();
                traktSharing.Twitter.Should().BeTrue();
                traktSharing.Google.Should().BeTrue();
                traktSharing.Tumblr.Should().BeTrue();
                traktSharing.Medium.Should().BeNull();
                traktSharing.Slack.Should().BeTrue();
            }
        }
        public async Task Test_SharingObjectJsonReader_ReadObject_From_JsonReader_Incomplete_4()
        {
            var traktJsonReader = new SharingObjectJsonReader();

            using (var reader = new StringReader(JSON_INCOMPLETE_4))
                using (var jsonReader = new JsonTextReader(reader))
                {
                    var traktSharing = await traktJsonReader.ReadObjectAsync(jsonReader);

                    traktSharing.Should().NotBeNull();
                    traktSharing.Twitter.Should().BeTrue();
                    traktSharing.Google.Should().BeTrue();
                    traktSharing.Tumblr.Should().BeTrue();
                    traktSharing.Medium.Should().BeNull();
                    traktSharing.Slack.Should().BeTrue();
                }
        }
        public async Task Test_SharingObjectJsonReader_ReadObject_From_JsonReader_Not_Valid_6()
        {
            var traktJsonReader = new SharingObjectJsonReader();

            using (var reader = new StringReader(JSON_NOT_VALID_6))
                using (var jsonReader = new JsonTextReader(reader))
                {
                    var traktSharing = await traktJsonReader.ReadObjectAsync(jsonReader);

                    traktSharing.Should().NotBeNull();
                    traktSharing.Twitter.Should().BeNull();
                    traktSharing.Google.Should().BeNull();
                    traktSharing.Tumblr.Should().BeNull();
                    traktSharing.Medium.Should().BeNull();
                    traktSharing.Slack.Should().BeNull();
                }
        }
Ejemplo n.º 16
0
        public override async Task <ITraktCommentPostResponse> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(ITraktCommentPostResponse)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var userReader    = new UserObjectJsonReader();
                var sharingReader = new SharingObjectJsonReader();
                ITraktCommentPostResponse traktCommentPostResponse = new TraktCommentPostResponse();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.COMMENT_PROPERTY_NAME_ID:
                    {
                        var value = await JsonReaderHelper.ReadUnsignedIntegerValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            traktCommentPostResponse.Id = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.COMMENT_PROPERTY_NAME_PARENT_ID:
                    {
                        var value = await JsonReaderHelper.ReadUnsignedIntegerValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            traktCommentPostResponse.ParentId = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.COMMENT_PROPERTY_NAME_CREATED_AT:
                    {
                        var value = await JsonReaderHelper.ReadDateTimeValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            traktCommentPostResponse.CreatedAt = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.COMMENT_PROPERTY_NAME_UPDATED_AT:
                    {
                        var value = await JsonReaderHelper.ReadDateTimeValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            traktCommentPostResponse.UpdatedAt = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.COMMENT_PROPERTY_NAME_COMMENT:
                        traktCommentPostResponse.Comment = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.COMMENT_PROPERTY_NAME_SPOILER:
                        traktCommentPostResponse.Spoiler = (bool)await jsonReader.ReadAsBooleanAsync(cancellationToken);

                        break;

                    case JsonProperties.COMMENT_PROPERTY_NAME_REVIEW:
                        traktCommentPostResponse.Review = (bool)await jsonReader.ReadAsBooleanAsync(cancellationToken);

                        break;

                    case JsonProperties.COMMENT_PROPERTY_NAME_REPLIES:
                        traktCommentPostResponse.Replies = await jsonReader.ReadAsInt32Async(cancellationToken);

                        break;

                    case JsonProperties.COMMENT_PROPERTY_NAME_LIKES:
                        traktCommentPostResponse.Likes = await jsonReader.ReadAsInt32Async(cancellationToken);

                        break;

                    case JsonProperties.COMMENT_PROPERTY_NAME_USER_RATING:
                    {
                        var value = await JsonReaderHelper.ReadFloatValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            traktCommentPostResponse.UserRating = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.COMMENT_PROPERTY_NAME_USER:
                        traktCommentPostResponse.User = await userReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.COMMENT_POST_RESPONSE_PROPERTY_NAME_SHARING:
                        traktCommentPostResponse.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(traktCommentPostResponse);
            }

            return(await Task.FromResult(default(ITraktCommentPostResponse)));
        }
Ejemplo n.º 17
0
        public override async Task <ITraktMovieScrobblePostResponse> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(ITraktMovieScrobblePostResponse)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var sharingReader = new SharingObjectJsonReader();
                var movieReader   = new MovieObjectJsonReader();
                ITraktMovieScrobblePostResponse movieScrobbleResponse = new TraktMovieScrobblePostResponse();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.SCROBBLE_POST_RESPONSE_PROPERTY_NAME_ID:
                    {
                        var value = await JsonReaderHelper.ReadUnsignedLongIntegerAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            movieScrobbleResponse.Id = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.SCROBBLE_POST_RESPONSE_PROPERTY_NAME_ACTION:
                        movieScrobbleResponse.Action = await JsonReaderHelper.ReadEnumerationValueAsync <TraktScrobbleActionType>(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.SCROBBLE_POST_RESPONSE_PROPERTY_NAME_PROGRESS:
                    {
                        var value = await JsonReaderHelper.ReadFloatValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            movieScrobbleResponse.Progress = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.SCROBBLE_POST_RESPONSE_PROPERTY_NAME_SHARING:
                        movieScrobbleResponse.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.MOVIE_SCROBBLE_POST_RESPONSE_PROPERTY_NAME_MOVIE:
                        movieScrobbleResponse.Movie = await movieReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(movieScrobbleResponse);
            }

            return(await Task.FromResult(default(ITraktMovieScrobblePostResponse)));
        }
Ejemplo n.º 18
0
        public override async Task <ITraktEpisodeCheckinPost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            CheckJsonTextReader(jsonReader);

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var sharingReader = new SharingObjectJsonReader();
                var episodeReader = new EpisodeObjectJsonReader();
                var showReader    = new ShowObjectJsonReader();
                ITraktEpisodeCheckinPost episodeCheckinPost = new TraktEpisodeCheckinPost();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.PROPERTY_NAME_SHARING:
                        episodeCheckinPost.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_MESSAGE:
                        episodeCheckinPost.Message = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_APP_VERSION:
                        episodeCheckinPost.AppVersion = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_APP_DATE:
                        episodeCheckinPost.AppDate = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_VENUE_ID:
                        episodeCheckinPost.FoursquareVenueId = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_VENUE_NAME:
                        episodeCheckinPost.FoursquareVenueName = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_SHOW:
                        episodeCheckinPost.Show = await showReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_EPISODE:
                        episodeCheckinPost.Episode = await episodeReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(episodeCheckinPost);
            }

            return(await Task.FromResult(default(ITraktEpisodeCheckinPost)));
        }
        public override async Task <ITraktEpisodeScrobblePostResponse> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            CheckJsonTextReader(jsonReader);

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var sharingReader = new SharingObjectJsonReader();
                var episodeReader = new EpisodeObjectJsonReader();
                var showReader    = new ShowObjectJsonReader();
                ITraktEpisodeScrobblePostResponse episodeScrobbleResponse = new TraktEpisodeScrobblePostResponse();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.PROPERTY_NAME_ID:
                    {
                        var value = await JsonReaderHelper.ReadUnsignedLongValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            episodeScrobbleResponse.Id = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.PROPERTY_NAME_ACTION:
                        episodeScrobbleResponse.Action = await JsonReaderHelper.ReadEnumerationValueAsync <TraktScrobbleActionType>(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_PROGRESS:
                    {
                        var value = await JsonReaderHelper.ReadFloatValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            episodeScrobbleResponse.Progress = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.PROPERTY_NAME_SHARING:
                        episodeScrobbleResponse.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_EPISODE:
                        episodeScrobbleResponse.Episode = await episodeReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_SHOW:
                        episodeScrobbleResponse.Show = await showReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(episodeScrobbleResponse);
            }

            return(await Task.FromResult(default(ITraktEpisodeScrobblePostResponse)));
        }
Ejemplo n.º 20
0
        public override async Task <ITraktMovieCheckinPost> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(ITraktMovieCheckinPost)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var sharingReader = new SharingObjectJsonReader();
                var movieReader   = new MovieObjectJsonReader();
                ITraktMovieCheckinPost movieCheckinPost = new TraktMovieCheckinPost();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.CHECKIN_POST_PROPERTY_NAME_SHARING:
                        movieCheckinPost.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.CHECKIN_POST_PROPERTY_NAME_MESSAGE:
                        movieCheckinPost.Message = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.CHECKIN_POST_PROPERTY_NAME_APP_VERSION:
                        movieCheckinPost.AppVersion = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.CHECKIN_POST_PROPERTY_NAME_APP_DATE:
                        movieCheckinPost.AppDate = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.CHECKIN_POST_PROPERTY_NAME_VENUE_ID:
                        movieCheckinPost.FoursquareVenueId = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.CHECKIN_POST_PROPERTY_NAME_VENUE_NAME:
                        movieCheckinPost.FoursquareVenueName = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.MOVIE_CHECKIN_POST_PROPERTY_NAME_MOVIE:
                        movieCheckinPost.Movie = await movieReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(movieCheckinPost);
            }

            return(await Task.FromResult(default(ITraktMovieCheckinPost)));
        }
 public async Task Test_SharingObjectJsonReader_ReadObject_From_Stream_Null()
 {
     var traktJsonReader = new SharingObjectJsonReader();
     Func <Task <ITraktSharing> > traktSharing = () => traktJsonReader.ReadObjectAsync(default(Stream));
     await traktSharing.Should().ThrowAsync <ArgumentNullException>();
 }
        public override async Task <ITraktEpisodeCheckinPostResponse> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            CheckJsonTextReader(jsonReader);

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var sharingReader = new SharingObjectJsonReader();
                var episodeReader = new EpisodeObjectJsonReader();
                var showReader    = new ShowObjectJsonReader();
                ITraktEpisodeCheckinPostResponse checkinEpisodeResponse = new TraktEpisodeCheckinPostResponse();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.PROPERTY_NAME_ID:
                    {
                        var value = await JsonReaderHelper.ReadUnsignedLongValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            checkinEpisodeResponse.Id = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.PROPERTY_NAME_WATCHED_AT:
                    {
                        var value = await JsonReaderHelper.ReadDateTimeValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            checkinEpisodeResponse.WatchedAt = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.PROPERTY_NAME_SHARING:
                        checkinEpisodeResponse.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_EPISODE:
                        checkinEpisodeResponse.Episode = await episodeReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_SHOW:
                        checkinEpisodeResponse.Show = await showReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(checkinEpisodeResponse);
            }

            return(await Task.FromResult(default(ITraktEpisodeCheckinPostResponse)));
        }
        public override async Task <ITraktMovieCheckinPostResponse> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(ITraktMovieCheckinPostResponse)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var sharingReader = new SharingObjectJsonReader();
                var movieReader   = new MovieObjectJsonReader();
                ITraktMovieCheckinPostResponse checkinMovieResponse = new TraktMovieCheckinPostResponse();

                while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName)
                {
                    var propertyName = jsonReader.Value.ToString();

                    switch (propertyName)
                    {
                    case JsonProperties.CHECKIN_POST_RESPONSE_PROPERTY_NAME_ID:
                    {
                        var value = await JsonReaderHelper.ReadUnsignedLongIntegerAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            checkinMovieResponse.Id = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.CHECKIN_POST_RESPONSE_PROPERTY_NAME_WATCHED_AT:
                    {
                        var value = await JsonReaderHelper.ReadDateTimeValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            checkinMovieResponse.WatchedAt = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.CHECKIN_POST_RESPONSE_PROPERTY_NAME_SHARING:
                        checkinMovieResponse.Sharing = await sharingReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.MOVIE_CHECKIN_POST_RESPONSE_PROPERTY_NAME_MOVIE:
                        checkinMovieResponse.Movie = await movieReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    default:
                        await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken);

                        break;
                    }
                }

                return(checkinMovieResponse);
            }

            return(await Task.FromResult(default(ITraktMovieCheckinPostResponse)));
        }