Use union types for Region, Language, and Page options

This commit is contained in:
Tobias Karlsson
2023-03-29 21:34:33 +02:00
parent d19e6f3be9
commit 3ce67c63c5
5 changed files with 36 additions and 30 deletions

View File

@@ -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<Keywords>(`${BASE_MOVIE}/${id}/keywords`);
}
async lists(id: number, options?: PageOptions): Promise<MovieLists>{
async lists(id: number, options?: LanguageOption | PageOption): Promise<MovieLists>{
const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
return await this.api.get<MovieLists>(`${BASE_MOVIE}/${id}/lists?${params}`);
}
async recommendations(id: number, options?: PageOptions): Promise<Recommendations>{
async recommendations(id: number, options?: PageOption): Promise<Recommendations>{
const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
@@ -80,14 +81,14 @@ export class MoviesEndpoint extends BaseEndpoint{
return await this.api.get<ReleaseDates>(`${BASE_MOVIE}/${id}/release_dates`);
}
async reviews(id: number, options?: PageOptions): Promise<Reviews>{
async reviews(id: number, options?: PageOption): Promise<Reviews>{
const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
return await this.api.get<Reviews>(`${BASE_MOVIE}/${id}/reviews?${params}`);
}
async similar(id: number, options?: PageOptions): Promise<SimilarMovies>{
async similar(id: number, options?: PageOption): Promise<SimilarMovies>{
const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
@@ -114,28 +115,28 @@ export class MoviesEndpoint extends BaseEndpoint{
return await this.api.get<LatestMovie>(`${BASE_MOVIE}/latest`);
}
async nowPlaying(options?: LocaleOptions): Promise<MoviesPlayingNow>{
async nowPlaying(options?: PageOption & LanguageOption & RegionOption): Promise<MoviesPlayingNow>{
const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
return await this.api.get<MoviesPlayingNow>(`${BASE_MOVIE}/now_playing?${params}`);
}
async popular(options?: PageOptions): Promise<PopularMovies>{
async popular(options?: PageOption): Promise<PopularMovies>{
const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
return await this.api.get<PopularMovies>(`${BASE_MOVIE}/popular?${params}`);
}
async topRated(options?: LocaleOptions): Promise<TopRatedMovies>{
async topRated(options?: PageOption & LanguageOption & RegionOption): Promise<TopRatedMovies>{
const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';
return await this.api.get<TopRatedMovies>(`${BASE_MOVIE}/top_rated?${params}`);
}
async upcoming(options?: LocaleOptions): Promise<UpcomingMovies>{
async upcoming(options?: PageOption & LanguageOption & RegionOption): Promise<UpcomingMovies>{
const params = options
? new URLSearchParams(Object.entries(options)).toString()
: '';