public void TestTraktShowFilterWithCertifications() { var filter = new TraktShowFilter(); filter.WithCertifications(null); filter.Certifications.Should().NotBeNull().And.BeEmpty(); filter.WithCertifications(null, "cert1"); filter.Certifications.Should().NotBeNull().And.HaveCount(1); filter.AddCertifications("cert1", "cert2"); filter.Certifications.Should().NotBeNull().And.HaveCount(3); filter.WithCertifications(null); filter.Certifications.Should().NotBeNull().And.BeEmpty(); filter.WithCertifications(null, "cert1"); filter.Certifications.Should().NotBeNull().And.HaveCount(1); filter.WithCertifications("cert1", "cert2"); filter.Certifications.Should().NotBeNull().And.HaveCount(2); filter.WithCertifications("cert1", "cert2", "cert3", "cert4"); filter.Certifications.Should().NotBeNull().And.HaveCount(4); filter.WithCertifications("cert5"); filter.Certifications.Should().NotBeNull().And.HaveCount(1); }
public void TestTraktShowFilterConstructor() { var filter = new TraktShowFilter("query", 2016, new string[] { "action", "drama" }, new string[] { "de", "en" }, new string[] { "gb", "us" }, new Range <int>(40, 100), new Range <int>(70, 90), new string[] { "cert1", "cert2" }, new string[] { "network1", "network2" }, new TraktShowStatus[] { TraktShowStatus.Ended, TraktShowStatus.InProduction }); filter.Query.Should().Be("query"); filter.Years.Should().Be(2016); filter.Genres.Should().NotBeNull().And.HaveCount(2); filter.Languages.Should().NotBeNull().And.HaveCount(2); filter.Countries.Should().NotBeNull().And.HaveCount(2); filter.Runtimes.Should().NotBeNull(); filter.Runtimes.Value.Begin.Should().Be(40); filter.Runtimes.Value.End.Should().Be(100); filter.Ratings.Should().NotBeNull(); filter.Ratings.Value.Begin.Should().Be(70); filter.Ratings.Value.End.Should().Be(90); filter.Certifications.Should().NotBeNull().And.HaveCount(2); filter.Networks.Should().NotBeNull().And.HaveCount(2); filter.States.Should().NotBeNull().And.HaveCount(2); }
public void TestTraktShowFilterAddStates() { var filter = new TraktShowFilter(); filter.AddStates(TraktShowStatus.Unspecified); filter.States.Should().NotBeNull().And.BeEmpty(); var state1 = TraktShowStatus.ReturningSeries; var state2 = TraktShowStatus.InProduction; var state3 = TraktShowStatus.Ended; var state4 = TraktShowStatus.Canceled; Action act = () => filter.AddStates(state1, TraktShowStatus.Unspecified); act.ShouldThrow <ArgumentException>(); act = () => filter.AddStates(state1, state2, TraktShowStatus.Unspecified, state3); act.ShouldThrow <ArgumentException>(); filter.AddStates(TraktShowStatus.Unspecified, state1); filter.States.Should().NotBeNull().And.HaveCount(1); filter.AddStates(state1, state2, state3); filter.States.Should().NotBeNull().And.HaveCount(4); filter.AddStates(state4); filter.States.Should().NotBeNull().And.HaveCount(5); filter.AddStates(TraktShowStatus.Unspecified); filter.States.Should().NotBeNull().And.HaveCount(5); filter.AddStates(state1, state2); filter.States.Should().NotBeNull().And.HaveCount(7); }
public void TestTraktShowFilterWithNetworks() { var filter = new TraktShowFilter(); filter.WithNetworks(null); filter.Networks.Should().NotBeNull().And.BeEmpty(); filter.WithNetworks(null, "network1"); filter.Networks.Should().NotBeNull().And.HaveCount(1); filter.AddNetworks("network1", "network2"); filter.Networks.Should().NotBeNull().And.HaveCount(3); filter.WithNetworks(null); filter.Networks.Should().NotBeNull().And.BeEmpty(); filter.WithNetworks(null, "network1"); filter.Networks.Should().NotBeNull().And.HaveCount(1); filter.WithNetworks("network1", "network2"); filter.Networks.Should().NotBeNull().And.HaveCount(2); filter.WithNetworks("network1", "network2", "network3", "network4"); filter.Networks.Should().NotBeNull().And.HaveCount(4); filter.WithNetworks("network5"); filter.Networks.Should().NotBeNull().And.HaveCount(1); }
// ------------------------------------------------------------- // Popular Shows public async Task <PaginationList <Show> > GetPopularShowsAsync(TraktExtendedInfo extendedInfo = null, TraktShowFilter showFilter = null, int?whichPage = null, int?limitPerPage = null) { var traktResults = await Client.Shows.GetPopularShowsAsync(extendedInfo, showFilter, whichPage, limitPerPage); var results = new PaginationList <Show> { CurrentPage = traktResults.Page, TotalPages = traktResults.PageCount, LimitPerPage = traktResults.Limit, TotalItemCount = traktResults.ItemCount, TotalUserCount = traktResults.UserCount }; results.Items = new ObservableCollection <Show>(); foreach (var traktPopularShow in traktResults) { var popularShow = ShowModelConverter.Convert <Show>(traktPopularShow); if (popularShow != null) { results.Items.Add(popularShow); } } return(results); }
// ------------------------------------------------------------- // Most Collected Shows public async Task <PaginationList <MostPWCShow> > GetMostCollectedShowsAsync(TraktExtendedInfo extendedInfo = null, TraktShowFilter showFilter = null, TraktTimePeriod period = null, int?whichPage = null, int?limitPerPage = null) { var traktResults = await Client.Shows.GetMostCollectedShowsAsync(period, extendedInfo, showFilter, whichPage, limitPerPage); var results = new PaginationList <MostPWCShow> { CurrentPage = traktResults.Page, TotalPages = traktResults.PageCount, LimitPerPage = traktResults.Limit, TotalItemCount = traktResults.ItemCount, TotalUserCount = traktResults.UserCount }; results.Items = new ObservableCollection <MostPWCShow>(); foreach (var traktMostCollectedShow in traktResults) { var mostCollectedShow = ShowModelConverter.Convert <MostPWCShow>(traktMostCollectedShow.Show); if (mostCollectedShow != null) { mostCollectedShow.WatcherCount = traktMostCollectedShow.WatcherCount.GetValueOrDefault(); mostCollectedShow.PlayCount = traktMostCollectedShow.PlayCount.GetValueOrDefault(); mostCollectedShow.CollectedCount = traktMostCollectedShow.CollectedCount.GetValueOrDefault(); mostCollectedShow.CollectorCount = traktMostCollectedShow.CollectorCount.GetValueOrDefault(); results.Items.Add(mostCollectedShow); } } return(results); }
public void TestTraktShowFilterToString() { var filter = new TraktShowFilter(); filter.ToString().Should().NotBeNull().And.BeEmpty(); filter.WithQuery("query"); filter.ToString().Should().Be("query=query"); var year = 2016; filter.WithYears(year); filter.ToString().Should().Be($"years={year}&query=query"); filter.WithGenres("action", "drama", "fantasy"); filter.ToString().Should().Be($"years={year}&genres=action,drama,fantasy&query=query"); filter.WithLanguages("de", "en", "es"); filter.ToString().Should().Be($"years={year}&genres=action,drama,fantasy&languages=de,en,es&query=query"); filter.WithCountries("gb", "us", "fr"); filter.ToString().Should().Be($"years={year}&genres=action,drama,fantasy&languages=de,en,es&countries=gb,us,fr&query=query"); var runtimeBegin = 50; var runtimeEnd = 100; filter.WithRuntimes(runtimeBegin, runtimeEnd); filter.ToString().Should().Be($"years={year}&genres=action,drama,fantasy&languages=de,en,es&countries=gb,us,fr" + $"&runtimes={runtimeBegin}-{runtimeEnd}&query=query"); var ratingBegin = 70; var ratingEnd = 90; filter.WithRatings(ratingBegin, ratingEnd); filter.ToString().Should().Be($"years={year}&genres=action,drama,fantasy&languages=de,en,es&countries=gb,us,fr" + $"&runtimes={runtimeBegin}-{runtimeEnd}&ratings={ratingBegin}-{ratingEnd}&query=query"); filter.WithCertifications("cert1", "cert2", "cert3"); filter.ToString().Should().Be($"years={year}&genres=action,drama,fantasy&languages=de,en,es&countries=gb,us,fr" + $"&runtimes={runtimeBegin}-{runtimeEnd}&ratings={ratingBegin}-{ratingEnd}&query=query" + $"&certifications=cert1,cert2,cert3"); filter.WithNetworks("network1", "network2"); filter.ToString().Should().Be($"years={year}&genres=action,drama,fantasy&languages=de,en,es&countries=gb,us,fr" + $"&runtimes={runtimeBegin}-{runtimeEnd}&ratings={ratingBegin}-{ratingEnd}&query=query" + $"&certifications=cert1,cert2,cert3" + $"&networks=network1,network2"); var state1 = TraktShowStatus.ReturningSeries; var state2 = TraktShowStatus.InProduction; filter.WithStates(state1, state2); filter.ToString().Should().Be($"years={year}&genres=action,drama,fantasy&languages=de,en,es&countries=gb,us,fr" + $"&runtimes={runtimeBegin}-{runtimeEnd}&ratings={ratingBegin}-{ratingEnd}&query=query" + $"&certifications=cert1,cert2,cert3" + $"&networks=network1,network2" + $"&status={state1.UriName},{state2.UriName}"); }
public void TestTraktShowFilterClear() { var filter = new TraktShowFilter(); filter.WithQuery("query"); filter.Query.Should().Be("query"); filter.WithYears(2016); filter.Years.Should().Be(2016); filter.WithGenres("action", "drama"); filter.Genres.Should().NotBeNull().And.HaveCount(2); filter.WithLanguages("de", "en"); filter.Languages.Should().NotBeNull().And.HaveCount(2); filter.WithCountries("gb", "us"); filter.Countries.Should().NotBeNull().And.HaveCount(2); filter.WithRuntimes(30, 180); filter.Runtimes.Should().NotBeNull(); filter.Runtimes.Value.Begin.Should().Be(30); filter.Runtimes.Value.End.Should().Be(180); filter.WithRatings(60, 90); filter.Ratings.Should().NotBeNull(); filter.Ratings.Value.Begin.Should().Be(60); filter.Ratings.Value.End.Should().Be(90); filter.WithCertifications("cert1", "cert2"); filter.Certifications.Should().NotBeNull().And.HaveCount(2); filter.WithNetworks("network1", "network2"); filter.Networks.Should().NotBeNull().And.HaveCount(2); var state1 = TraktShowStatus.ReturningSeries; var state2 = TraktShowStatus.InProduction; filter.WithStates(state1, state2); filter.States.Should().NotBeNull().And.HaveCount(2); filter.Clear(); filter.Query.Should().BeNull(); filter.Years.Should().Be(0); filter.Genres.Should().BeNull(); filter.Languages.Should().BeNull(); filter.Countries.Should().BeNull(); filter.Runtimes.Should().BeNull(); filter.Ratings.Should().BeNull(); filter.Certifications.Should().BeNull(); filter.Networks.Should().BeNull(); filter.States.Should().BeNull(); filter.ToString().Should().NotBeNull().And.BeEmpty(); }
/// <summary> /// Gets popular shows. /// <para>OAuth authorization not required.</para> /// <para> /// See <a href="http://docs.trakt.apiary.io/#reference/shows/popular/get-popular-shows">"Trakt API Doc - Shows: Popular"</a> for more information. /// </para> /// </summary> /// <param name="extendedInfo"> /// The extended info, which determines how much data about the shows should be queried. /// See also <seealso cref="TraktExtendedInfo" />. /// </param> /// <param name="filter">Optional filters for genres, languages, year, runtimes, ratings, etc. See also <seealso cref="TraktShowFilter" />.</param> /// <param name="pagedParameters"></param> /// <param name="cancellationToken"></param> /// <returns> /// An <see cref="TraktPagedResponse{ITraktShow}"/> instance containing the queried popular shows and which also /// contains the queried page number, the page's item count, maximum page count and maximum item count. /// <para> /// See also <seealso cref="TraktPagedResponse{ListItem}" /> and <seealso cref="ITraktShow" />. /// </para> /// </returns> /// <exception cref="TraktException">Thrown, if the request fails.</exception> public Task <TraktPagedResponse <ITraktShow> > GetPopularShowsAsync(TraktExtendedInfo extendedInfo = null, TraktShowFilter filter = null, TraktPagedParameters pagedParameters = null, CancellationToken cancellationToken = default) { var requestHandler = new RequestHandler(Client); return(requestHandler.ExecutePagedRequestAsync(new ShowsPopularRequest { ExtendedInfo = extendedInfo, Filter = filter, Page = pagedParameters?.Page, Limit = pagedParameters?.Limit }, cancellationToken)); }
public void TestTraktShowFilterDefaultConstructor() { var filter = new TraktShowFilter(); filter.Query.Should().BeNull(); filter.Years.Should().Be(0); filter.Genres.Should().BeNull(); filter.Languages.Should().BeNull(); filter.Countries.Should().BeNull(); filter.Runtimes.Should().BeNull(); filter.Ratings.Should().BeNull(); filter.Certifications.Should().BeNull(); filter.Networks.Should().BeNull(); filter.States.Should().BeNull(); filter.ToString().Should().NotBeNull().And.BeEmpty(); }
/// <summary> /// Gets the most collected shows. /// <para>OAuth authorization not required.</para> /// <para> /// See <a href="http://docs.trakt.apiary.io/#reference/shows/collected/get-the-most-collected-shows">"Trakt API Doc - Shows: Collected"</a> for more information. /// </para> /// </summary> /// <param name="period">The time period, for which the most collected shows should be queried. See also <seealso cref="TraktTimePeriod" />.</param> /// <param name="extendedInfo"> /// The extended info, which determines how much data about the shows should be queried. /// See also <seealso cref="TraktExtendedInfo" />. /// </param> /// <param name="filter">Optional filters for genres, languages, year, runtimes, ratings, etc. See also <seealso cref="TraktShowFilter" />.</param> /// <param name="pagedParameters"></param> /// <param name="cancellationToken"></param> /// <returns> /// An <see cref="TraktPagedResponse{ITraktMostPWCShow}"/> instance containing the queried most collected shows and which also /// contains the queried page number, the page's item count, maximum page count and maximum item count. /// <para> /// See also <seealso cref="TraktPagedResponse{ListItem}" /> and <seealso cref="ITraktMostPWCShow" />. /// </para> /// </returns> /// <exception cref="TraktException">Thrown, if the request fails.</exception> public Task <TraktPagedResponse <ITraktMostPWCShow> > GetMostCollectedShowsAsync(TraktTimePeriod period = null, TraktExtendedInfo extendedInfo = null, TraktShowFilter filter = null, TraktPagedParameters pagedParameters = null, CancellationToken cancellationToken = default) { var requestHandler = new RequestHandler(Client); return(requestHandler.ExecutePagedRequestAsync(new ShowsMostCollectedRequest { Period = period, ExtendedInfo = extendedInfo, Filter = filter, Page = pagedParameters?.Page, Limit = pagedParameters?.Limit }, cancellationToken)); }
public async Task <TraktPaginationListResult <TraktMostAnticipatedShow> > GetMostAnticipatedShowsAsync(TraktExtendedInfo extendedInfo = null, TraktShowFilter filter = null, int?page = null, int?limitPerPage = null) => await QueryAsync(new TraktShowsMostAnticipatedRequest(Client) { ExtendedInfo = extendedInfo, Filter = filter, PaginationOptions = new TraktPaginationOptions(page, limitPerPage) });
public void TestTraktShowFilterGetParameters() { var filter = new TraktShowFilter(); filter.GetParameters().Should().NotBeNull().And.BeEmpty(); filter.WithQuery("query"); filter.GetParameters().Should().NotBeNull().And.HaveCount(1); filter.GetParameters().Should().Contain(new Dictionary <string, object>() { { "query", "query" } }); var year = 2016; filter.WithYears(year); filter.GetParameters().Should().NotBeNull().And.HaveCount(2); filter.GetParameters().Should().Contain(new Dictionary <string, object>() { { "query", "query" }, { "years", "2016" } }); filter.WithGenres("action", "drama", "fantasy"); filter.GetParameters().Should().NotBeNull().And.HaveCount(3); filter.GetParameters().Should().Contain(new Dictionary <string, object>() { { "query", "query" }, { "years", "2016" }, { "genres", "action,drama,fantasy" } }); filter.WithLanguages("de", "en", "es"); filter.GetParameters().Should().NotBeNull().And.HaveCount(4); filter.GetParameters().Should().Contain(new Dictionary <string, object>() { { "query", "query" }, { "years", "2016" }, { "genres", "action,drama,fantasy" }, { "languages", "de,en,es" } }); filter.WithCountries("gb", "us", "fr"); filter.GetParameters().Should().NotBeNull().And.HaveCount(5); filter.GetParameters().Should().Contain(new Dictionary <string, object>() { { "query", "query" }, { "years", "2016" }, { "genres", "action,drama,fantasy" }, { "languages", "de,en,es" }, { "countries", "gb,us,fr" } }); var runtimeBegin = 50; var runtimeEnd = 100; filter.WithRuntimes(runtimeBegin, runtimeEnd); filter.GetParameters().Should().NotBeNull().And.HaveCount(6); filter.GetParameters().Should().Contain(new Dictionary <string, object>() { { "query", "query" }, { "years", "2016" }, { "genres", "action,drama,fantasy" }, { "languages", "de,en,es" }, { "countries", "gb,us,fr" }, { "runtimes", $"{runtimeBegin}-{runtimeEnd}" } }); var ratingBegin = 70; var ratingEnd = 90; filter.WithRatings(ratingBegin, ratingEnd); filter.GetParameters().Should().NotBeNull().And.HaveCount(7); filter.GetParameters().Should().Contain(new Dictionary <string, object>() { { "query", "query" }, { "years", "2016" }, { "genres", "action,drama,fantasy" }, { "languages", "de,en,es" }, { "countries", "gb,us,fr" }, { "runtimes", $"{runtimeBegin}-{runtimeEnd}" }, { "ratings", $"{ratingBegin}-{ratingEnd}" } }); filter.WithCertifications("cert1", "cert2", "cert3"); filter.GetParameters().Should().NotBeNull().And.HaveCount(8); filter.GetParameters().Should().Contain(new Dictionary <string, object>() { { "query", "query" }, { "years", "2016" }, { "genres", "action,drama,fantasy" }, { "languages", "de,en,es" }, { "countries", "gb,us,fr" }, { "runtimes", $"{runtimeBegin}-{runtimeEnd}" }, { "ratings", $"{ratingBegin}-{ratingEnd}" }, { "certifications", "cert1,cert2,cert3" } }); filter.WithNetworks("network1", "network2"); filter.GetParameters().Should().NotBeNull().And.HaveCount(9); filter.GetParameters().Should().Contain(new Dictionary <string, object>() { { "query", "query" }, { "years", "2016" }, { "genres", "action,drama,fantasy" }, { "languages", "de,en,es" }, { "countries", "gb,us,fr" }, { "runtimes", $"{runtimeBegin}-{runtimeEnd}" }, { "ratings", $"{ratingBegin}-{ratingEnd}" }, { "certifications", "cert1,cert2,cert3" }, { "networks", "network1,network2" } }); var state1 = TraktShowStatus.ReturningSeries; var state2 = TraktShowStatus.InProduction; filter.WithStates(state1, state2); filter.GetParameters().Should().NotBeNull().And.HaveCount(10); filter.GetParameters().Should().Contain(new Dictionary <string, object>() { { "query", "query" }, { "years", "2016" }, { "genres", "action,drama,fantasy" }, { "languages", "de,en,es" }, { "countries", "gb,us,fr" }, { "runtimes", $"{runtimeBegin}-{runtimeEnd}" }, { "ratings", $"{ratingBegin}-{ratingEnd}" }, { "certifications", "cert1,cert2,cert3" }, { "networks", "network1,network2" }, { "status", $"{state1.UriName},{state2.UriName}" } }); }