예제 #1
0
        private IEnumerable <ITraktSyncRatingsPostShowSeason> CreateSyncRatingsPostShowSeasons(PostRatingsSeasons seasons)
        {
            var syncRatingsPostShowSeasons = new List <ITraktSyncRatingsPostShowSeason>();

            foreach (PostRatingsSeason season in seasons)
            {
                var syncRatingsPostShowSeason = new TraktSyncRatingsPostShowSeason
                {
                    Number = season.Number
                };

                if (season.Rating.HasValue)
                {
                    syncRatingsPostShowSeason.Rating = season.Rating.Value;
                }

                if (season.RatedAt.HasValue)
                {
                    syncRatingsPostShowSeason.RatedAt = season.RatedAt.Value.ToUniversalTime();
                }

                if (season.Episodes?.Count() > 0)
                {
                    var syncRatingsPostShowEpisodes = new List <ITraktSyncRatingsPostShowEpisode>();

                    foreach (PostRatingsEpisode episode in season.Episodes)
                    {
                        var syncRatingsPostShowEpisode = new TraktSyncRatingsPostShowEpisode
                        {
                            Number = episode.Number
                        };

                        if (episode.Rating.HasValue)
                        {
                            syncRatingsPostShowEpisode.Rating = episode.Rating.Value;
                        }

                        if (episode.RatedAt.HasValue)
                        {
                            syncRatingsPostShowEpisode.RatedAt = episode.RatedAt.Value.ToUniversalTime();
                        }

                        syncRatingsPostShowEpisodes.Add(syncRatingsPostShowEpisode);
                    }

                    syncRatingsPostShowSeason.Episodes = syncRatingsPostShowEpisodes;
                }

                syncRatingsPostShowSeasons.Add(syncRatingsPostShowSeason);
            }

            return(syncRatingsPostShowSeasons);
        }
        public override async Task <ITraktSyncRatingsPostShowSeason> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            CheckJsonTextReader(jsonReader);

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var episodeArrayJsonReader = new ArrayJsonReader <ITraktSyncRatingsPostShowEpisode>();
                ITraktSyncRatingsPostShowSeason syncRatingsPostShow = new TraktSyncRatingsPostShowSeason();

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

                    switch (propertyName)
                    {
                    case JsonProperties.PROPERTY_NAME_RATED_AT:
                    {
                        Pair <bool, DateTime> value = await JsonReaderHelper.ReadDateTimeValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            syncRatingsPostShow.RatedAt = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.PROPERTY_NAME_RATING:
                        syncRatingsPostShow.Rating = await jsonReader.ReadAsInt32Async(cancellationToken);

                        break;

                    case JsonProperties.PROPERTY_NAME_NUMBER:
                    {
                        Pair <bool, int> value = await JsonReaderHelper.ReadIntegerValueAsync(jsonReader, cancellationToken);

                        if (value.First)
                        {
                            syncRatingsPostShow.Number = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.PROPERTY_NAME_EPISODES:
                        syncRatingsPostShow.Episodes = await episodeArrayJsonReader.ReadArrayAsync(jsonReader, cancellationToken);

                        break;

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

                        break;
                    }
                }

                return(syncRatingsPostShow);
            }

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