From 6b768c673ae4f74597788b7f3ce99cf66f9eb8d0 Mon Sep 17 00:00:00 2001 From: Shrikant Date: Wed, 10 Aug 2022 11:08:33 +0200 Subject: [PATCH] Updating the discover api --- lib/utils/enums.dart | 19 ++++++ lib/versions/v3/category/discover.dart | 90 ++++++++++++++++++++++++++ 2 files changed, 109 insertions(+) diff --git a/lib/utils/enums.dart b/lib/utils/enums.dart index 4f20310..4d20d2b 100644 --- a/lib/utils/enums.dart +++ b/lib/utils/enums.dart @@ -65,6 +65,25 @@ enum SortTvShowsBy { firstAirDateDesc } +enum FilterTvShowsByStatus { + returningSeries, + planned, + inProduction, + ended, + cancelled, + pilot +} + +enum FilterTvShowsByType { + documentary, + news, + miniseries, + reality, + scripted, + talkShow, + video, +} + //find.dart enum ExternalId { imdbId, tvdbId, facebookId, twitterId, instagramId } diff --git a/lib/versions/v3/category/discover.dart b/lib/versions/v3/category/discover.dart index 6404569..060909e 100644 --- a/lib/versions/v3/category/discover.dart +++ b/lib/versions/v3/category/discover.dart @@ -54,6 +54,10 @@ class Discover extends Category { int? withRunTimeGreaterThan, int? withRuntimeLessThan, String? withOrginalLanguage, + String? withWatchProviders, + String? watchRegion, + String? withWatchMonetizationTypes, + String? withoutCompanies, }) { //all the default values final queries = [ @@ -170,6 +174,22 @@ class Discover extends Category { queries.add('with_original_language=$withOrginalLanguage'); } + if (withWatchProviders != null) { + queries.add('with_watch_providers=$withWatchProviders'); + } + + if (watchRegion != null) { + queries.add('watch_region=$watchRegion'); + } + + if (withWatchMonetizationTypes != null) { + queries.add('with_watch_monetization_types=$withWatchMonetizationTypes'); + } + + if (withoutCompanies != null) { + queries.add('without_companies=$withoutCompanies'); + } + return _v._query('$_endPoint/movie', optionalQueries: queries); } @@ -212,6 +232,12 @@ class Discover extends Category { String? withoutKeywords, bool? screenedTheatrically, String? withCompanies, + String? withWatchProviders, + String? watchRegion, + String? withWatchMonetizationTypes, + String? withoutCompanies, + FilterTvShowsByStatus? withStatus, + FilterTvShowsByType? withType, }) { //all the default values final queries = [ @@ -297,6 +323,30 @@ class Discover extends Category { queries.add('without_keywords=$withoutKeywords'); } + if (withWatchProviders != null) { + queries.add('with_watch_providers=$withWatchProviders'); + } + + if (watchRegion != null) { + queries.add('watch_region=$watchRegion'); + } + + if (withWatchMonetizationTypes != null) { + queries.add('with_watch_monetization_types=$withWatchMonetizationTypes'); + } + + if (withoutCompanies != null) { + queries.add('without_companies=$withoutCompanies'); + } + + if (withStatus != null) { + queries.add('with_status=${_getFilterTvShowsByStatus(withStatus)}'); + } + + if (withType != null) { + queries.add('with_status=${_getFilterTvShowsByType(withType)}'); + } + return _v._query('$_endPoint/tv', optionalQueries: queries); } @@ -353,4 +403,44 @@ class Discover extends Category { return 'popularity.asc'; } } + + String _getFilterTvShowsByStatus(FilterTvShowsByStatus filter) { + switch (filter) { + case FilterTvShowsByStatus.returningSeries: + return '0'; + case FilterTvShowsByStatus.planned: + return '1'; + case FilterTvShowsByStatus.inProduction: + return '2'; + case FilterTvShowsByStatus.ended: + return '3'; + case FilterTvShowsByStatus.cancelled: + return '4'; + case FilterTvShowsByStatus.pilot: + return '5'; + default: + return '0'; + } + } + + String _getFilterTvShowsByType(FilterTvShowsByType filter) { + switch (filter) { + case FilterTvShowsByType.documentary: + return '0'; + case FilterTvShowsByType.news: + return '1'; + case FilterTvShowsByType.miniseries: + return '2'; + case FilterTvShowsByType.reality: + return '3'; + case FilterTvShowsByType.scripted: + return '4'; + case FilterTvShowsByType.talkShow: + return '5'; + case FilterTvShowsByType.video: + return '6'; + default: + return '0'; + } + } }