support for most of the append_to_response options
This commit is contained in:
@@ -1,6 +1,8 @@
|
|||||||
import { BaseEndpoint } from './base';
|
import { BaseEndpoint } from './base';
|
||||||
import {
|
import {
|
||||||
AlternativeTitles,
|
AlternativeTitles,
|
||||||
|
AppendToResponse,
|
||||||
|
AppendToResponseKeys,
|
||||||
ChangeOptions,
|
ChangeOptions,
|
||||||
Credits,
|
Credits,
|
||||||
ExternalIds,
|
ExternalIds,
|
||||||
@@ -33,8 +35,18 @@ export class MoviesEndpoint extends BaseEndpoint {
|
|||||||
super(accessToken);
|
super(accessToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
async details(id: number): Promise<MovieDetails> {
|
async details<T extends AppendToResponseKeys[]>(
|
||||||
return await this.api.get<MovieDetails>(`${BASE_MOVIE}/${id}`);
|
id: number,
|
||||||
|
appendToResponse?: T
|
||||||
|
) {
|
||||||
|
const options = {
|
||||||
|
append_to_response: appendToResponse ? appendToResponse.join(',') : undefined,
|
||||||
|
};
|
||||||
|
|
||||||
|
return await this.api.get<AppendToResponse<MovieDetails, T>>(
|
||||||
|
`${BASE_MOVIE}/${id}`,
|
||||||
|
options
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async alternativeTitles(id: number): Promise<AlternativeTitles> {
|
async alternativeTitles(id: number): Promise<AlternativeTitles> {
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
import { BaseEndpoint } from './base';
|
import { BaseEndpoint } from './base';
|
||||||
import {
|
import {
|
||||||
AlternativeTitles,
|
AlternativeTitles,
|
||||||
|
AppendToResponse,
|
||||||
|
AppendToResponseKeys,
|
||||||
ChangeOptions,
|
ChangeOptions,
|
||||||
ContentRatings,
|
ContentRatings,
|
||||||
Credits,
|
Credits,
|
||||||
@@ -35,8 +37,19 @@ export class TvShowsEndpoint extends BaseEndpoint {
|
|||||||
super(accessToken);
|
super(accessToken);
|
||||||
}
|
}
|
||||||
|
|
||||||
async details(id: number): Promise<TvShowDetails> {
|
async details<T extends AppendToResponseKeys[]>(
|
||||||
return await this.api.get<TvShowDetails>(`${BASE_TV}/${id}`);
|
id: number,
|
||||||
|
appendToResponse?: T
|
||||||
|
) {
|
||||||
|
const options = {
|
||||||
|
append_to_response: appendToResponse
|
||||||
|
? appendToResponse.join(',')
|
||||||
|
: undefined,
|
||||||
|
};
|
||||||
|
return await this.api.get<AppendToResponse<TvShowDetails, T>>(
|
||||||
|
`${BASE_TV}/${id}`,
|
||||||
|
options
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
async alternativeTitles(id: number): Promise<AlternativeTitles> {
|
async alternativeTitles(id: number): Promise<AlternativeTitles> {
|
||||||
|
|||||||
@@ -1,3 +1,13 @@
|
|||||||
|
import {
|
||||||
|
Credits,
|
||||||
|
Images,
|
||||||
|
Keywords,
|
||||||
|
Recommendations,
|
||||||
|
Reviews,
|
||||||
|
Translations,
|
||||||
|
Videos,
|
||||||
|
} from '.';
|
||||||
|
|
||||||
export interface LanguageOption {
|
export interface LanguageOption {
|
||||||
language?: string;
|
language?: string;
|
||||||
}
|
}
|
||||||
@@ -9,3 +19,31 @@ export interface RegionOption {
|
|||||||
export interface PageOption {
|
export interface PageOption {
|
||||||
page?: number;
|
page?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export type AppendToResponseKeys =
|
||||||
|
| 'images'
|
||||||
|
| 'videos'
|
||||||
|
| 'credits'
|
||||||
|
| 'recommendations'
|
||||||
|
| 'reviews'
|
||||||
|
| 'keywords';
|
||||||
|
|
||||||
|
export type AppendToResponse<
|
||||||
|
K,
|
||||||
|
T extends AppendToResponseKeys[] | undefined
|
||||||
|
> = K &
|
||||||
|
(T extends undefined
|
||||||
|
? object
|
||||||
|
: T extends Array<unknown>
|
||||||
|
? ('credits' extends T[number] ? { credits: Omit<Credits, 'id'> } : object) &
|
||||||
|
('videos' extends T[number] ? { videos: Omit<Videos, 'id'> } : object) &
|
||||||
|
('images' extends T[number] ? { images: Omit<Images, 'id'> } : object) &
|
||||||
|
('recommendations' extends T[number]
|
||||||
|
? { recommendations: Recommendations }
|
||||||
|
: object) &
|
||||||
|
('reviews' extends T[number] ? { reviews: Omit<Reviews, 'id'> } : object) &
|
||||||
|
('reviews' extends T[number]
|
||||||
|
? { reviews: Omit<Translations, 'id'> }
|
||||||
|
: object) &
|
||||||
|
('keywords' extends T[number] ? { keywords: Omit<Keywords, 'id'> } : object)
|
||||||
|
: never);
|
||||||
|
|||||||
Reference in New Issue
Block a user