From 3ce67c63c5bd74a74270d7ded7c0291a623ccc99 Mon Sep 17 00:00:00 2001 From: Tobias Karlsson Date: Wed, 29 Mar 2023 21:34:33 +0200 Subject: [PATCH] Use union types for Region, Language, and Page options --- src/endpoints/movies.ts | 21 +++++++++++---------- src/endpoints/people.ts | 19 ++++++++++++++++--- src/endpoints/tv-shows.ts | 17 +++++++++-------- src/types/index.ts | 1 - src/types/page.ts | 8 -------- 5 files changed, 36 insertions(+), 30 deletions(-) delete mode 100644 src/types/page.ts diff --git a/src/endpoints/movies.ts b/src/endpoints/movies.ts index e32b682..ca57ac3 100644 --- a/src/endpoints/movies.ts +++ b/src/endpoints/movies.ts @@ -6,15 +6,16 @@ import { ExternalIds, Images, Keywords, + LanguageOption, LatestMovie, - LocaleOptions, MovieChanges, MovieDetails, MovieLists, MoviesPlayingNow, - PageOptions, + PageOption, PopularMovies, Recommendations, + RegionOption, ReleaseDates, Reviews, SimilarMovies, @@ -62,14 +63,14 @@ export class MoviesEndpoint extends BaseEndpoint{ return await this.api.get(`${BASE_MOVIE}/${id}/keywords`); } - async lists(id: number, options?: PageOptions): Promise{ + async lists(id: number, options?: LanguageOption | PageOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; return await this.api.get(`${BASE_MOVIE}/${id}/lists?${params}`); } - async recommendations(id: number, options?: PageOptions): Promise{ + async recommendations(id: number, options?: PageOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; @@ -80,14 +81,14 @@ export class MoviesEndpoint extends BaseEndpoint{ return await this.api.get(`${BASE_MOVIE}/${id}/release_dates`); } - async reviews(id: number, options?: PageOptions): Promise{ + async reviews(id: number, options?: PageOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; return await this.api.get(`${BASE_MOVIE}/${id}/reviews?${params}`); } - async similar(id: number, options?: PageOptions): Promise{ + async similar(id: number, options?: PageOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; @@ -114,28 +115,28 @@ export class MoviesEndpoint extends BaseEndpoint{ return await this.api.get(`${BASE_MOVIE}/latest`); } - async nowPlaying(options?: LocaleOptions): Promise{ + async nowPlaying(options?: PageOption & LanguageOption & RegionOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; return await this.api.get(`${BASE_MOVIE}/now_playing?${params}`); } - async popular(options?: PageOptions): Promise{ + async popular(options?: PageOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; return await this.api.get(`${BASE_MOVIE}/popular?${params}`); } - async topRated(options?: LocaleOptions): Promise{ + async topRated(options?: PageOption & LanguageOption & RegionOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; return await this.api.get(`${BASE_MOVIE}/top_rated?${params}`); } - async upcoming(options?: LocaleOptions): Promise{ + async upcoming(options?: PageOption & LanguageOption & RegionOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; diff --git a/src/endpoints/people.ts b/src/endpoints/people.ts index d3bbbc9..6787d9b 100644 --- a/src/endpoints/people.ts +++ b/src/endpoints/people.ts @@ -1,4 +1,17 @@ -import { ChangeOptions, ExternalIds, Image, PageOptions, PeopleTranslations, PersonChanges, PersonCombinedCredits, PersonDetail, PersonMovieCredit, PersonTvShowCredit, PopularPersons, TaggedImages } from '../types'; +import { + ChangeOptions, + ExternalIds, + Image, + PageOption, + PeopleTranslations, + PersonChanges, + PersonCombinedCredits, + PersonDetail, + PersonMovieCredit, + PersonTvShowCredit, + PopularPersons, + TaggedImages +} from '../types'; import { BaseEndpoint } from './base'; const BASE_PERSON = '/person'; @@ -39,7 +52,7 @@ export class PeopleEndpoint extends BaseEndpoint { return await this.api.get<{id: number, profiles: Image[]}>(`${BASE_PERSON}/${id}/images`) } - async taggedImages(id: number, options?: PageOptions): Promise{ + async taggedImages(id: number, options?: PageOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; @@ -54,7 +67,7 @@ export class PeopleEndpoint extends BaseEndpoint { return await this.api.get(`${BASE_PERSON}/latest`); } - async popular(options?: PageOptions): Promise{ + async popular(options?: PageOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; diff --git a/src/endpoints/tv-shows.ts b/src/endpoints/tv-shows.ts index 48de437..b2f5444 100644 --- a/src/endpoints/tv-shows.ts +++ b/src/endpoints/tv-shows.ts @@ -8,12 +8,13 @@ import { ExternalIds, Images, Keywords, + LanguageOption, LatestTvShows, - LocaleOptions, OnTheAir, - PageOptions, + PageOption, PopularTvShows, Recommendations, + RegionOption, Reviews, ScreenedTheatrically, SeasonDetails, @@ -77,14 +78,14 @@ export class TvShowsEndpoint extends BaseEndpoint{ return await this.api.get(`${BASE_TV}/${id}/keywords`); } - async recommendations(id: number, options?: PageOptions): Promise{ + async recommendations(id: number, options?: PageOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; return await this.api.get(`${BASE_TV}/${id}/recommendations?${params}`); } - async reviews(id: number, options?: PageOptions): Promise{ + async reviews(id: number, options?: PageOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; @@ -95,7 +96,7 @@ export class TvShowsEndpoint extends BaseEndpoint{ return await this.api.get(`${BASE_TV}/${id}/screened_theatrically`); } - async similar(id: number, options?: PageOptions): Promise{ + async similar(id: number, options?: PageOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; @@ -126,21 +127,21 @@ export class TvShowsEndpoint extends BaseEndpoint{ return await this.api.get(`${BASE_TV}/on_the_air`); } - async airingToday(options?: LocaleOptions): Promise{ + async airingToday(options?: PageOption & LanguageOption & RegionOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; return await this.api.get(`${BASE_TV}/airing_today?${params}`); } - async popular(options?: PageOptions): Promise{ + async popular(options?: PageOption & LanguageOption & RegionOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; return await this.api.get(`${BASE_TV}/popular?${params}`); } - async topRated(options?: LocaleOptions): Promise{ + async topRated(options?: PageOption & LanguageOption & RegionOption): Promise{ const params = options ? new URLSearchParams(Object.entries(options)).toString() : ''; diff --git a/src/types/index.ts b/src/types/index.ts index c395a2b..003d1c8 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -7,7 +7,6 @@ export * from './movies'; export * from './search'; export * from './tv-shows'; export * from './watch-providers'; -export * from './page'; export * from './people'; export * from './discover'; export * from './review'; diff --git a/src/types/page.ts b/src/types/page.ts deleted file mode 100644 index 5d27852..0000000 --- a/src/types/page.ts +++ /dev/null @@ -1,8 +0,0 @@ -export interface PageOptions { - page?: number; -} - -export interface LocaleOptions extends PageOptions { - region?: string; - language?: string; -}