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);
        }
Exemplo n.º 5
0
        // -------------------------------------------------------------
        // 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);
        }
Exemplo n.º 6
0
        // -------------------------------------------------------------
        // 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();
        }
Exemplo n.º 9
0
        /// <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));
        }
Exemplo n.º 10
0
        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();
        }
Exemplo n.º 11
0
        /// <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));
        }
Exemplo n.º 12
0
 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)
 });
Exemplo n.º 13
0
        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}" }
            });
        }