public override async Task <IEnumerable <ITraktEpisodeIds> > ReadArrayAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) { if (jsonReader == null) { return(await Task.FromResult(default(IEnumerable <ITraktEpisodeIds>))); } if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartArray) { var episodeIdsReader = new EpisodeIdsObjectJsonReader(); var episodeIdss = new List <ITraktEpisodeIds>(); ITraktEpisodeIds episodeIds = await episodeIdsReader.ReadObjectAsync(jsonReader, cancellationToken); while (episodeIds != null) { episodeIdss.Add(episodeIds); episodeIds = await episodeIdsReader.ReadObjectAsync(jsonReader, cancellationToken); } return(episodeIdss); } return(await Task.FromResult(default(IEnumerable <ITraktEpisodeIds>))); }
public override async Task <ITraktEpisode> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default) { if (jsonReader == null) { return(await Task.FromResult(default(ITraktEpisode))); } if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject) { var idsObjectReader = new EpisodeIdsObjectJsonReader(); var translationArrayReader = new EpisodeTranslationArrayJsonReader(); ITraktEpisode traktEpisode = new TraktEpisode(); while (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.PropertyName) { var propertyName = jsonReader.Value.ToString(); switch (propertyName) { case JsonProperties.EPISODE_PROPERTY_NAME_SEASON_NUMBER: traktEpisode.SeasonNumber = await jsonReader.ReadAsInt32Async(cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_NUMBER: traktEpisode.Number = await jsonReader.ReadAsInt32Async(cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_TITLE: traktEpisode.Title = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_IDS: traktEpisode.Ids = await idsObjectReader.ReadObjectAsync(jsonReader, cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_NUMBER_ABSOLUTE: traktEpisode.NumberAbsolute = await jsonReader.ReadAsInt32Async(cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_OVERVIEW: traktEpisode.Overview = await jsonReader.ReadAsStringAsync(cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_RUNTIME: traktEpisode.Runtime = await jsonReader.ReadAsInt32Async(cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_RATING: traktEpisode.Rating = (float?)await jsonReader.ReadAsDoubleAsync(cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_VOTES: traktEpisode.Votes = await jsonReader.ReadAsInt32Async(cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_FIRST_AIRED: { var value = await JsonReaderHelper.ReadDateTimeValueAsync(jsonReader, cancellationToken); if (value.First) { traktEpisode.FirstAired = value.Second; } break; } case JsonProperties.EPISODE_PROPERTY_NAME_UPDATED_AT: { var value = await JsonReaderHelper.ReadDateTimeValueAsync(jsonReader, cancellationToken); if (value.First) { traktEpisode.UpdatedAt = value.Second; } break; } case JsonProperties.EPISODE_PROPERTY_NAME_AVAILABLE_TRANSLATIONS: traktEpisode.AvailableTranslationLanguageCodes = await JsonReaderHelper.ReadStringArrayAsync(jsonReader, cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_TRANSLATIONS: traktEpisode.Translations = await translationArrayReader.ReadArrayAsync(jsonReader, cancellationToken); break; case JsonProperties.EPISODE_PROPERTY_NAME_COMMENT_COUNT: traktEpisode.CommentCount = await jsonReader.ReadAsInt32Async(cancellationToken); break; default: await JsonReaderHelper.ReadAndIgnoreInvalidContentAsync(jsonReader, cancellationToken); break; } } return(traktEpisode); } return(await Task.FromResult(default(ITraktEpisode))); }