From 912a91e8dc04ef6e01f338be2d0bdb7de3001ea2 Mon Sep 17 00:00:00 2001 From: DerPenz Date: Tue, 7 Feb 2023 17:07:15 +0100 Subject: [PATCH] added people endpoint with details, credits --- src/endpoints/index.ts | 2 + src/endpoints/people.ts | 32 +++++++++++++++ src/types/index.ts | 1 + src/types/people.ts | 89 +++++++++++++++++++++++++++++++++++++++++ 4 files changed, 124 insertions(+) create mode 100644 src/endpoints/people.ts create mode 100644 src/types/people.ts diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index e613363..1b48033 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -9,3 +9,5 @@ export * from './genre'; export * from './movies'; export * from './configuration'; export * from './tv-shows'; +export * from './people'; + diff --git a/src/endpoints/people.ts b/src/endpoints/people.ts new file mode 100644 index 0000000..92fcdd6 --- /dev/null +++ b/src/endpoints/people.ts @@ -0,0 +1,32 @@ +import { PersonDetail, PersonMovieCredit, PersonTvShowCredit } from '../types'; +import { BaseEndpoint } from './base'; + +const BASE_PERSON = '/person'; + + + +export class PeopleEndpoint extends BaseEndpoint { + constructor(accessToken: string) { + super(accessToken); + } + + async details(id: number): Promise { + return await this.api.get(`${BASE_PERSON}/${id}`); + } + + async movieCredits( + id: number + ): Promise { + return await this.api.get( + `${BASE_PERSON}/${id}/movie_credits` + ); + } + + async tvShowCredits( + id: number + ): Promise { + return await this.api.get( + `${BASE_PERSON}/${id}/tv_credits` + ); + } +} diff --git a/src/types/index.ts b/src/types/index.ts index 4e294c0..f3fb230 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -6,6 +6,7 @@ export * from './movies'; export * from './search'; export * from './tv-shows'; export * from './watch-providers'; +export * from './people'; export interface AuthorDetails { name: string; diff --git a/src/types/people.ts b/src/types/people.ts new file mode 100644 index 0000000..a19c509 --- /dev/null +++ b/src/types/people.ts @@ -0,0 +1,89 @@ +interface Cast { + character: string; + credit_id: string; + vote_count: number; + id: number; + backdrop_path: string; + poster_path: string; + original_language: string; + vote_average: number; + genre_ids: number[]; + popularity: number; + overview: string; +} + +interface Crew { + id: number; + department: string; + original_language: string; + credit_id: string; + overview: string; + vote_count: number; + poster_path: string; + backdrop_path: string; + popularity: number; + genre_ids: number[]; + job: string; + vote_average: number; +} + +export interface PersonMovieCast extends Cast { + release_date: string; + video: boolean; + adult: boolean; + title: string; + original_title: string; +} + +export interface PersonMovieCrew extends Crew { + original_title: string; + video: boolean; + title: string; + adult: boolean; + release_date: string; +} + +export interface PersonTvShowCrew extends Crew { + episode_count: number; + origin_country: string[]; + original_name: string; + name: string; + first_air_date: string; +} + +export interface PersonTvShowCast extends Cast { + original_name: string; + name: string; + episode_count: number; + first_air_date: string; + origin_country: string[]; +} + +export interface PersonMovieCredit { + cast: PersonMovieCast[]; + crew: PersonMovieCrew[]; + id: number; +} + +export interface PersonTvShowCredit { + cast: PersonTvShowCast[]; + crew: PersonTvShowCrew[]; + id: number; +} + +export interface PersonDetail { + birthday: string, + known_for_department: string, + deathday: string, + id: number, + name: string, + also_known_as: string[] + gender: number, + biography: string, + popularity: number, + place_of_birth: string, + profile_path: string, + adult: boolean, + imdb_id: string, + homepage: string + } \ No newline at end of file