public void Test_TraktSearchFilterBuilder_GetParameters()
        {
            TraktShowStatus state1 = TraktShowStatus.ReturningSeries;
            TraktShowStatus state2 = TraktShowStatus.InProduction;

            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter
                                        .WithQuery("query")
                                        .WithYears(2016, 2018)
                                        .WithGenres("action", "drama")
                                        .WithLanguages("de", "en")
                                        .WithCountries("gb", "us")
                                        .WithRuntimes(30, 180)
                                        .WithRatings(60, 90)
                                        .WithCertifications("pg-13", "nr")
                                        .WithNetworks("abc", "fox")
                                        .WithStates(state1, state2)
                                        .Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(10);

            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "query", "query" },
                { "years", "2016-2018" },
                { "genres", "action,drama" },
                { "languages", "de,en" },
                { "countries", "gb,us" },
                { "runtimes", "30-180" },
                { "ratings", "60-90" },
                { "certifications", "pg-13,nr" },
                { "networks", "abc,fox" },
                { "status", $"{state1.UriName},{state2.UriName}" }
            });
        }
        public void Test_TraktSearchFilterBuilder_ToString_With_States()
        {
            TraktShowStatus state1 = TraktShowStatus.ReturningSeries;
            TraktShowStatus state2 = TraktShowStatus.InProduction;

            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithStates(state1, state2).Build();

            filter.ToString().Should().Be($"status={state1.UriName},{state2.UriName}");
        }
        public void Test_TraktSearchFilterBuilder_GetParameters_With_Genres()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithGenres("action", "drama").Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(1);
            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "genres", "action,drama" }
            });
        }
        public void Test_TraktSearchFilterBuilder_GetParameters_With_Query()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithQuery("query").Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(1);
            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "query", "query" }
            });
        }
        public void Test_TraktSearchFilterBuilder_GetParameters_With_Networks()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithNetworks("abc", "fox").Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(1);
            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "networks", "abc,fox" }
            });
        }
        public void Test_TraktSearchFilterBuilder_GetParameters_With_Certifications()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithCertifications("pg-13", "nr").Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(1);
            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "certifications", "pg-13,nr" }
            });
        }
        public void Test_TraktSearchFilterBuilder_GetParameters_With_Ratings()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithRatings(60, 90).Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(1);
            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "ratings", "60-90" }
            });
        }
        public void Test_TraktSearchFilterBuilder_GetParameters_With_Runtimes()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithRuntimes(30, 180).Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(1);
            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "runtimes", "30-180" }
            });
        }
        public void Test_TraktSearchFilterBuilder_GetParameters_With_Countries()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithCountries("gb", "us").Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(1);
            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "countries", "gb,us" }
            });
        }
        public void Test_TraktSearchFilterBuilder_GetParameters_With_Languages()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithLanguages("de", "en").Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(1);
            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "languages", "de,en" }
            });
        }
        public void Test_TraktSearchFilterBuilder_GetParameters_With_Years()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithYears(2016, 2018).Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(1);
            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "years", "2016-2018" }
            });
        }
        public void Test_TraktSearchFilterBuilder_GetParameters_With_States()
        {
            TraktShowStatus state1 = TraktShowStatus.ReturningSeries;
            TraktShowStatus state2 = TraktShowStatus.InProduction;

            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithStates(state1, state2).Build();

            filter.GetParameters().Should().NotBeNull().And.HaveCount(1);
            filter.GetParameters().Should().Contain(new Dictionary <string, object>()
            {
                { "status", $"{state1.UriName},{state2.UriName}" }
            });
        }
        public void Test_TraktSearchFilterBuilder_EmptyFilter()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.Build();

            filter.Query.Should().BeNull();
            filter.Year.Should().BeNull();
            filter.Years.Should().BeNull();
            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.HasValues.Should().BeFalse();
            filter.ToString().Should().NotBeNull().And.BeEmpty();
            filter.GetParameters().Should().NotBeNull().And.BeEmpty();
        }
        public void Test_TraktSearchFilterBuilder_ToString()
        {
            TraktShowStatus state1 = TraktShowStatus.ReturningSeries;
            TraktShowStatus state2 = TraktShowStatus.InProduction;

            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter
                                        .WithQuery("query")
                                        .WithYears(2016, 2018)
                                        .WithGenres("action", "drama")
                                        .WithLanguages("de", "en")
                                        .WithCountries("gb", "us")
                                        .WithRuntimes(30, 180)
                                        .WithRatings(60, 90)
                                        .WithCertifications("pg-13", "nr")
                                        .WithNetworks("abc", "fox")
                                        .WithStates(state1, state2)
                                        .Build();

            filter.ToString().Should().Be("query=query&years=2016-2018&genres=action,drama&languages=de,en" +
                                          "&countries=gb,us&runtimes=30-180&ratings=60-90&certifications=pg-13,nr" +
                                          $"&networks=abc,fox&status={state1.UriName},{state2.UriName}");
        }
        public void Test_TraktSearchFilterBuilder_HasValues()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.Build();

            filter.HasValues.Should().BeFalse();

            filter = TraktFilterDirectory.SearchFilter.WithQuery("query").Build();
            filter.HasValues.Should().BeTrue();

            filter = TraktFilterDirectory.SearchFilter.WithYear(2018).Build();
            filter.HasValues.Should().BeTrue();

            filter = TraktFilterDirectory.SearchFilter.WithYears(2016, 2018).Build();
            filter.HasValues.Should().BeTrue();

            filter = TraktFilterDirectory.SearchFilter.WithGenres("action", "drama").Build();
            filter.HasValues.Should().BeTrue();

            filter = TraktFilterDirectory.SearchFilter.WithLanguages("de", "en").Build();
            filter.HasValues.Should().BeTrue();

            filter = TraktFilterDirectory.SearchFilter.WithCountries("gb", "us").Build();
            filter.HasValues.Should().BeTrue();

            filter = TraktFilterDirectory.SearchFilter.WithRuntimes(30, 180).Build();
            filter.HasValues.Should().BeTrue();

            filter = TraktFilterDirectory.SearchFilter.WithRatings(60, 90).Build();
            filter.HasValues.Should().BeTrue();

            filter = TraktFilterDirectory.SearchFilter.WithCertifications("pg-13", "nr").Build();
            filter.HasValues.Should().BeTrue();

            filter = TraktFilterDirectory.SearchFilter.WithNetworks("abc", "fox").Build();
            filter.HasValues.Should().BeTrue();

            filter = TraktFilterDirectory.SearchFilter.WithStates(TraktShowStatus.ReturningSeries, TraktShowStatus.InProduction).Build();
            filter.HasValues.Should().BeTrue();
        }
        public void Test_TraktSearchFilterBuilder_ToString_With_Query()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithQuery("query").Build();

            filter.ToString().Should().Be("query=query");
        }
        public void Test_TraktSearchFilterBuilder_ToString_With_Genres()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithGenres("action", "drama").Build();

            filter.ToString().Should().Be("genres=action,drama");
        }
        public void Test_TraktSearchFilterBuilder_ToString_With_Networks()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithNetworks("abc", "fox").Build();

            filter.ToString().Should().Be("networks=abc,fox");
        }
        public void Test_TraktSearchFilterBuilder_ToString_With_Certifications()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithCertifications("pg-13", "nr").Build();

            filter.ToString().Should().Be("certifications=pg-13,nr");
        }
        public void Test_TraktSearchFilterBuilder_ToString_With_Ratings()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithRatings(60, 90).Build();

            filter.ToString().Should().Be("ratings=60-90");
        }
        public void Test_TraktSearchFilterBuilder_ToString_With_Runtimes()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithRuntimes(30, 180).Build();

            filter.ToString().Should().Be("runtimes=30-180");
        }
        public void Test_TraktSearchFilterBuilder_ToString_With_Countries()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithCountries("gb", "us").Build();

            filter.ToString().Should().Be("countries=gb,us");
        }
        public void Test_TraktSearchFilterBuilder_ToString_With_Languages()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithLanguages("de", "en").Build();

            filter.ToString().Should().Be("languages=de,en");
        }
        public void Test_TraktSearchFilterBuilder_ToString_With_Years_Reversed()
        {
            ITraktSearchFilter filter = TraktFilterDirectory.SearchFilter.WithYears(2018, 2016).Build();

            filter.ToString().Should().Be("years=2016-2018");
        }
Exemple #25
0
        /// <summary>
        /// Searches for movies, shows, episodes, people and / or lists with the given search query.
        /// <para>OAuth authorization not required.</para>
        /// <para>
        /// See <a href="http://docs.trakt.apiary.io/#reference/search/text-query/get-text-query-results">"Trakt API Doc - Search: Text Query"</a> for more information.
        /// </para>
        /// </summary>
        /// <param name="searchResultTypes">
        /// The object type(s), for which will be searched. See also <seealso cref="TraktSearchResultType" />.
        /// Multiple <see cref="TraktSearchResultType" /> values can be combined with a binary operator, like this: TraktSearchResultType.Movie | TraktSearchResultType.Show.
        /// </param>
        /// <param name="searchQuery">The query, for which will be searched.</param>
        /// <param name="searchFields">Determines the text fields, which will be searched. See also <seealso cref="TraktSearchField" />.</param>
        /// <param name="filter">Optional filter for genres, year, runtimes, ratings, etc. See also <seealso cref="ITraktSearchFilter" />.</param>
        /// <param name="extendedInfo">
        /// The extended info, which determines how much data about the movies, shows, episodes, people and / or lists should be queried.
        /// See also <seealso cref="TraktExtendedInfo" />.
        /// </param>
        /// <param name="pagedParameters">Specifies pagination parameters. <see cref="TraktPagedParameters" />.</param>
        /// <param name="cancellationToken">
        /// Propagates notification that the request should be canceled.<para/>
        /// If provided, the exception <see cref="OperationCanceledException" /> should be catched.
        /// </param>
        /// <returns>
        /// An <see cref="TraktPagedResponse{ITraktSearchResult}"/> instance containing the found movies, shows, episodes, people and / or lists 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="ITraktSearchResult" />.
        /// </para>
        /// </returns>
        /// <exception cref="TraktException">Thrown, if the request fails.</exception>
        /// <exception cref="ArgumentException">
        /// Thrown, if the given searchQuery is null, empty or contains spaces.
        /// Thrown, if the given searchResultType is unspecified.
        /// </exception>
        /// <exception cref="ArgumentNullException">Thrown, if the given searchResultType is null</exception>
        public Task <TraktPagedResponse <ITraktSearchResult> > GetTextQueryResultsAsync(TraktSearchResultType searchResultTypes, string searchQuery,
                                                                                        TraktSearchField searchFields        = null, ITraktSearchFilter filter = null,
                                                                                        TraktExtendedInfo extendedInfo       = null,
                                                                                        TraktPagedParameters pagedParameters = null,
                                                                                        CancellationToken cancellationToken  = default)
        {
            var requestHandler = new RequestHandler(Client);

            return(requestHandler.ExecutePagedRequestAsync(new SearchTextQueryRequest
            {
                ResultTypes = searchResultTypes,
                Query = searchQuery,
                SearchFields = searchFields,
                Filter = filter,
                ExtendedInfo = extendedInfo,
                Page = pagedParameters?.Page,
                Limit = pagedParameters?.Limit
            },
                                                           cancellationToken));
        }