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(); }
/// <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(); }
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 })); }
/// <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)); }
/// <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 })); }