import { AppendToResponse, AppendToResponsePersonKey, ChangeOption, ExternalIds, PageOption, PeopleImages, PersonTranslations, PersonCombinedCredits, PersonDetails, PersonMovieCredit, PersonTvShowCredit, PopularPersons, TaggedImages, Changes, PersonChangeValue, LanguageOption, } from '../types'; import { BaseEndpoint } from './base'; const BASE_PERSON = '/person'; export class PeopleEndpoint extends BaseEndpoint { constructor(accessToken: string) { super(accessToken); } async details( id: number, appendToResponse?: T, language?: string ) { const options = { append_to_response: appendToResponse ? appendToResponse.join(',') : undefined, language: language }; return await this.api.get>( `${BASE_PERSON}/${id}`, options ); } async changes( id: number, options?: ChangeOption ): Promise> { return await this.api.get>( `${BASE_PERSON}/${id}/changes`, options ); } async movieCredits(id: number, options?: LanguageOption): Promise { return await this.api.get( `${BASE_PERSON}/${id}/movie_credits`, options ); } async tvShowCredits(id: number, options?: LanguageOption): Promise { return await this.api.get( `${BASE_PERSON}/${id}/tv_credits`, options ); } async combinedCredits(id: number, options?: LanguageOption): Promise { return await this.api.get( `${BASE_PERSON}/${id}/combined_credits`, options ); } async externalId(id: number): Promise { return await this.api.get(`${BASE_PERSON}/${id}/external_ids`); } async images(id: number): Promise { return await this.api.get(`${BASE_PERSON}/${id}/images`); } async taggedImages(id: number, options?: PageOption): Promise { return await this.api.get( `${BASE_PERSON}/${id}/tagged_images`, options ); } async translation(id: number): Promise { return await this.api.get( `${BASE_PERSON}/${id}/translations` ); } async latest(): Promise { return await this.api.get(`${BASE_PERSON}/latest`); } async popular(options?: LanguageOption & PageOption): Promise { return await this.api.get( `${BASE_PERSON}/popular`, options ); } }