Пример #1
0
        public override async Task <IEnumerable <ITraktPersonIds> > ReadArrayAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(IEnumerable <ITraktPersonIds>)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartArray)
            {
                var             personIdsReader = new PersonIdsObjectJsonReader();
                var             personIdss      = new List <ITraktPersonIds>();
                ITraktPersonIds personIds       = await personIdsReader.ReadObjectAsync(jsonReader, cancellationToken);

                while (personIds != null)
                {
                    personIdss.Add(personIds);
                    personIds = await personIdsReader.ReadObjectAsync(jsonReader, cancellationToken);
                }

                return(personIdss);
            }

            return(await Task.FromResult(default(IEnumerable <ITraktPersonIds>)));
        }
Пример #2
0
        public override async Task <ITraktPerson> ReadObjectAsync(JsonTextReader jsonReader, CancellationToken cancellationToken = default)
        {
            if (jsonReader == null)
            {
                return(await Task.FromResult(default(ITraktPerson)));
            }

            if (await jsonReader.ReadAsync(cancellationToken) && jsonReader.TokenType == JsonToken.StartObject)
            {
                var          idsObjectReader = new PersonIdsObjectJsonReader();
                ITraktPerson traktPerson     = new TraktPerson();

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

                    switch (propertyName)
                    {
                    case JsonProperties.PERSON_PROPERTY_NAME_NAME:
                        traktPerson.Name = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.PERSON_PROPERTY_NAME_IDS:
                        traktPerson.Ids = await idsObjectReader.ReadObjectAsync(jsonReader, cancellationToken);

                        break;

                    case JsonProperties.PERSON_PROPERTY_NAME_BIOGRAPHY:
                        traktPerson.Biography = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

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

                        if (value.First)
                        {
                            traktPerson.Birthday = value.Second;
                        }

                        break;
                    }

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

                        if (value.First)
                        {
                            traktPerson.Death = value.Second;
                        }

                        break;
                    }

                    case JsonProperties.PERSON_PROPERTY_NAME_BIRTHPLACE:
                        traktPerson.Birthplace = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

                    case JsonProperties.PERSON_PROPERTY_NAME_HOMEPAGE:
                        traktPerson.Homepage = await jsonReader.ReadAsStringAsync(cancellationToken);

                        break;

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

                        break;
                    }
                }

                return(traktPerson);
            }

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