From 4838b41b24ec8cf41dd1d757eb943414f32d5e22 Mon Sep 17 00:00:00 2001 From: Michael Bisbjerg Date: Wed, 1 Jul 2020 00:33:15 +0200 Subject: [PATCH] Add missing overloads for SearchMovies Add other missing Search overloads Add obsolete marker for old search method Fixes #337 --- TMDbLib/Client/TMDbClientSearch.cs | 98 ++++++++++++++++++------------ 1 file changed, 59 insertions(+), 39 deletions(-) diff --git a/TMDbLib/Client/TMDbClientSearch.cs b/TMDbLib/Client/TMDbClientSearch.cs index 8070f94..a5dbbcc 100644 --- a/TMDbLib/Client/TMDbClientSearch.cs +++ b/TMDbLib/Client/TMDbClientSearch.cs @@ -1,4 +1,5 @@ -using System.Threading; +using System; +using System.Threading; using System.Threading.Tasks; using TMDbLib.Objects.General; using TMDbLib.Objects.Search; @@ -8,32 +9,7 @@ namespace TMDbLib.Client { public partial class TMDbClient { - public async Task> SearchCollectionAsync(string query, int page = 0, CancellationToken cancellationToken = default(CancellationToken)) - { - return await SearchCollectionAsync(query, DefaultLanguage, page, cancellationToken).ConfigureAwait(false); - } - - public async Task> SearchCollectionAsync(string query, string language, int page = 0, CancellationToken cancellationToken = default(CancellationToken)) - { - return await SearchMethod>("collection", query, page, language, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - public async Task> SearchCompanyAsync(string query, int page = 0, CancellationToken cancellationToken = default(CancellationToken)) - { - return await SearchMethod>("company", query, page, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - public async Task> SearchKeywordAsync(string query, int page = 0, CancellationToken cancellationToken = default(CancellationToken)) - { - return await SearchMethod>("keyword", query, page, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - public async Task> SearchListAsync(string query, int page = 0, bool includeAdult = false, CancellationToken cancellationToken = default(CancellationToken)) - { - return await SearchMethod>("list", query, page, includeAdult: includeAdult, cancellationToken: cancellationToken).ConfigureAwait(false); - } - - private async Task SearchMethod(string method, string query, int page, string language = null, bool? includeAdult = null, int year = 0, string dateFormat = null, CancellationToken cancellationToken = default(CancellationToken)) where T : new() + private async Task SearchMethod(string method, string query, int page, string language = null, bool? includeAdult = null, int year = 0, string dateFormat = null, string region = null, int primaryReleaseYear = 0, int firstAirDateYear = 0, CancellationToken cancellationToken = default(CancellationToken)) where T : new() { RestRequest req = _client.Create("search/{method}"); req.AddUrlSegment("method", method); @@ -54,39 +30,83 @@ namespace TMDbLib.Client //if (dateFormat != null) // req.DateFormat = dateFormat; + if (!string.IsNullOrWhiteSpace(region)) + req.AddParameter("region", region); + + if (primaryReleaseYear >= 1) + req.AddParameter("primary_release_year", primaryReleaseYear.ToString()); + if (firstAirDateYear >= 1) + req.AddParameter("first_air_date_year", firstAirDateYear.ToString()); + RestResponse resp = await req.ExecuteGet(cancellationToken).ConfigureAwait(false); return resp; } - public async Task> SearchMovieAsync(string query, int page = 0, bool includeAdult = false, int year = 0, CancellationToken cancellationToken = default(CancellationToken)) + public async Task> SearchCollectionAsync(string query, int page = 0, CancellationToken cancellationToken = default(CancellationToken)) { - return await SearchMovieAsync(query, DefaultLanguage, page, includeAdult, year, cancellationToken).ConfigureAwait(false); + return await SearchCollectionAsync(query, DefaultLanguage, page, cancellationToken).ConfigureAwait(false); } - public async Task> SearchMovieAsync(string query, string language, int page = 0, bool includeAdult = false, int year = 0, CancellationToken cancellationToken = default(CancellationToken)) + public async Task> SearchCollectionAsync(string query, string language, int page = 0, CancellationToken cancellationToken = default(CancellationToken)) { - return await SearchMethod>("movie", query, page, language, includeAdult, year, "yyyy-MM-dd", cancellationToken).ConfigureAwait(false); + return await SearchMethod>("collection", query, page, language, cancellationToken: cancellationToken).ConfigureAwait(false); } - public async Task> SearchMultiAsync(string query, int page = 0, bool includeAdult = false, int year = 0, CancellationToken cancellationToken = default(CancellationToken)) + public async Task> SearchCompanyAsync(string query, int page = 0, CancellationToken cancellationToken = default(CancellationToken)) { - return await SearchMultiAsync(query, DefaultLanguage, page, includeAdult, year, cancellationToken).ConfigureAwait(false); + return await SearchMethod>("company", query, page, cancellationToken: cancellationToken).ConfigureAwait(false); } - public async Task> SearchMultiAsync(string query, string language, int page = 0, bool includeAdult = false, int year = 0, CancellationToken cancellationToken = default(CancellationToken)) + public async Task> SearchKeywordAsync(string query, int page = 0, CancellationToken cancellationToken = default(CancellationToken)) { - return await SearchMethod>("multi", query, page, language, includeAdult, year, "yyyy-MM-dd", cancellationToken).ConfigureAwait(false); + return await SearchMethod>("keyword", query, page, cancellationToken: cancellationToken).ConfigureAwait(false); } - public async Task> SearchPersonAsync(string query, int page = 0, bool includeAdult = false, CancellationToken cancellationToken = default(CancellationToken)) + [Obsolete("20200701 No longer present in public API")] + public async Task> SearchListAsync(string query, int page = 0, bool includeAdult = false, CancellationToken cancellationToken = default(CancellationToken)) { - return await SearchMethod>("person", query, page, includeAdult: includeAdult, cancellationToken: cancellationToken).ConfigureAwait(false); + return await SearchMethod>("list", query, page, includeAdult: includeAdult, cancellationToken: cancellationToken).ConfigureAwait(false); } - public async Task> SearchTvShowAsync(string query, int page = 0, CancellationToken cancellationToken = default(CancellationToken)) + public async Task> SearchMovieAsync(string query, int page = 0, bool includeAdult = false, int year = 0, string region = null, int primaryReleaseYear = 0, CancellationToken cancellationToken = default(CancellationToken)) { - return await SearchMethod>("tv", query, page, cancellationToken: cancellationToken).ConfigureAwait(false); + return await SearchMovieAsync(query, DefaultLanguage, page, includeAdult, year, region, primaryReleaseYear, cancellationToken).ConfigureAwait(false); + } + + public async Task> SearchMovieAsync(string query, string language, int page = 0, bool includeAdult = false, int year = 0, string region = null, int primaryReleaseYear = 0, CancellationToken cancellationToken = default(CancellationToken)) + { + return await SearchMethod>("movie", query, page, language, includeAdult, year, "yyyy-MM-dd", region, primaryReleaseYear, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + public async Task> SearchMultiAsync(string query, int page = 0, bool includeAdult = false, int year = 0, string region = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return await SearchMultiAsync(query, DefaultLanguage, page, includeAdult, year, region, cancellationToken).ConfigureAwait(false); + } + + public async Task> SearchMultiAsync(string query, string language, int page = 0, bool includeAdult = false, int year = 0, string region = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return await SearchMethod>("multi", query, page, language, includeAdult, year, "yyyy-MM-dd", region, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + public async Task> SearchPersonAsync(string query, int page = 0, bool includeAdult = false, string region = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return await SearchPersonAsync(query, DefaultLanguage, page, includeAdult, region, cancellationToken).ConfigureAwait(false); + } + + public async Task> SearchPersonAsync(string query, string language, int page = 0, bool includeAdult = false, string region = null, CancellationToken cancellationToken = default(CancellationToken)) + { + return await SearchMethod>("person", query, page, language, includeAdult, region: region, cancellationToken: cancellationToken).ConfigureAwait(false); + } + + public async Task> SearchTvShowAsync(string query, int page = 0, bool includeAdult = false, int firstAirDateYear = 0, CancellationToken cancellationToken = default(CancellationToken)) + { + return await SearchTvShowAsync(query, DefaultLanguage, page, includeAdult, firstAirDateYear, cancellationToken).ConfigureAwait(false); + } + + public async Task> SearchTvShowAsync(string query, string language, int page = 0, bool includeAdult = false, int firstAirDateYear = 0, CancellationToken cancellationToken = default(CancellationToken)) + { + return await SearchMethod>("tv", query, page, language, includeAdult, firstAirDateYear: firstAirDateYear, cancellationToken: cancellationToken).ConfigureAwait(false); } } } \ No newline at end of file