Пример #1
0
        public void Test_TraktPost_UserCustomListItemsPostBuilder_WithPerson()
        {
            ITraktPerson episode = new TraktPerson
            {
                Ids = new TraktPersonIds
                {
                    Trakt  = 1,
                    Imdb   = "ttpersonname",
                    Tmdb   = 1,
                    TvRage = 1
                }
            };

            ITraktUserCustomListItemsPost userCustomListItemsPost = TraktPost.NewUserCustomListItemsPost()
                                                                    .WithPerson(episode)
                                                                    .Build();

            userCustomListItemsPost.Should().NotBeNull();
            userCustomListItemsPost.People.Should().NotBeNull().And.HaveCount(1);

            ITraktPerson postPerson = userCustomListItemsPost.People.ToArray()[0];

            postPerson.Ids.Should().NotBeNull();
            postPerson.Ids.Trakt.Should().Be(1U);
            postPerson.Ids.Imdb.Should().Be("ttpersonname");
            postPerson.Ids.Tmdb.Should().Be(1U);
            postPerson.Ids.TvRage.Should().Be(1U);

            userCustomListItemsPost.Movies.Should().NotBeNull().And.BeEmpty();
            userCustomListItemsPost.Shows.Should().NotBeNull().And.BeEmpty();
        }
Пример #2
0
        /// <summary>Adds a <see cref="TraktPerson" />, which will be added to the user custom list items post.</summary>
        /// <param name="person">The Trakt person, which will be added.</param>
        /// <returns>The current <see cref="TraktUserCustomListItemsPostBuilder" /> instance.</returns>
        /// <exception cref="ArgumentNullException">
        /// Thrown, if the given person is null.
        /// Thrown, if the given person ids are null.
        /// </exception>
        /// <exception cref="ArgumentException">
        /// Thrown, if the given person has no valid ids set.
        /// Thrown, if the given person has no name.
        /// </exception>
        public TraktUserCustomListItemsPostBuilder AddPerson(TraktPerson person)
        {
            if (person == null)
            {
                throw new ArgumentNullException(nameof(person));
            }

            if (person.Ids == null)
            {
                throw new ArgumentNullException(nameof(person.Ids));
            }

            if (!person.Ids.HasAnyId)
            {
                throw new ArgumentException("no person ids set or valid", nameof(person.Ids));
            }

            if (string.IsNullOrEmpty(person.Name))
            {
                throw new ArgumentException("person name not valid", nameof(person.Name));
            }

            EnsurePeopleListExists();

            var existingPerson = _listItemsPost.People.Where(p => p == person).FirstOrDefault();

            if (existingPerson != null)
            {
                return(this);
            }

            (_listItemsPost.People as List <TraktPerson>).Add(person);

            return(this);
        }
        public void Test_TraktPerson_Default_Constructor()
        {
            var person = new TraktPerson();

            person.Name.Should().BeNullOrEmpty();
            person.Ids.Should().BeNull();
            person.Biography.Should().BeNullOrEmpty();
            person.Birthday.Should().NotHaveValue();
            person.Death.Should().NotHaveValue();
            person.Age.Should().Be(0);
            person.Birthplace.Should().BeNullOrEmpty();
            person.Homepage.Should().BeNullOrEmpty();
        }
Пример #4
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)));
        }
        private TraktSyncAll GetSyncItems(TraktListItem listItem)
        {
            var syncItems = new TraktSyncAll();

            switch (listItem.Type)
            {
            case "movie":
                var movie = new TraktMovie
                {
                    Ids = new TraktMovieId {
                        Trakt = listItem.Movie.Ids.Trakt
                    }
                };
                syncItems.Movies = new List <TraktMovie>();
                syncItems.Movies.Add(movie);
                break;

            case "show":
                var show = new TraktShow
                {
                    Ids = new TraktShowId {
                        Trakt = listItem.Show.Ids.Trakt
                    }
                };
                syncItems.Shows = new List <TraktShow>();
                syncItems.Shows.Add(show);
                break;

            case "season":
                var season = new TraktSeason
                {
                    Ids = new TraktSeasonId {
                        Trakt = listItem.Season.Ids.Trakt
                    }
                };
                syncItems.Seasons = new List <TraktSeason>();
                syncItems.Seasons.Add(season);
                break;

            case "episode":
                var episode = new TraktEpisode
                {
                    Ids = new TraktEpisodeId {
                        Trakt = listItem.Episode.Ids.Trakt
                    }
                };
                syncItems.Episodes = new List <TraktEpisode>();
                syncItems.Episodes.Add(episode);
                break;

            case "person":
                var person = new TraktPerson
                {
                    Ids = new TraktPersonId {
                        Trakt = listItem.Person.Ids.Trakt
                    }
                };
                syncItems.People = new List <TraktPerson>();
                syncItems.People.Add(person);
                break;
            }

            return(syncItems);
        }
 /// <summary>Remove one or more items from a custom list</summary>
 /// <param name="listId">The list ID</param>
 /// <param name="person">The person</param>
 /// <returns>See summary</returns>
 public async Task <TraktRemoveResponse> RemoveFromListAsync(string listId, TraktPerson person)
 {
     return(await RemoveFromListAsync(listId, null, null, null, null, new List <TraktPerson> {
         person
     }));
 }
Пример #7
0
 /// <summary>Returns all movies where this person is in the cast or crew. Each cast object will have a character and a standard show object.</summary>
 /// <param name="person">The person</param>
 /// <param name="extended">Changes which properties are populated for standard media objects. By default, minimal data is returned. Change this if additional fields are required in the returned data.</param>
 /// <returns>See summary</returns>
 public async Task <TraktShowCredits> GetShowsForPersonAsync(TraktPerson person, TraktExtendedOption extended = TraktExtendedOption.Unspecified)
 {
     return(await GetShowsForPersonAsync(person.Ids.GetBestId(), extended));
 }
Пример #8
0
 /// <summary>Add one or more items to a custom list</summary>
 /// <param name="listId">The list ID</param>
 /// <param name="person">The person</param>
 /// <returns>See summary</returns>
 public async Task <TraktAddResponse> AddToListAsync(string listId, TraktPerson person)
 {
     return(await AddToListAsync(listId, null, null, null, null, new List <TraktPerson> {
         person
     }));
 }