diff --git a/src/endpoints/find.ts b/src/endpoints/find.ts new file mode 100644 index 0000000..4df537d --- /dev/null +++ b/src/endpoints/find.ts @@ -0,0 +1,14 @@ +import { BaseEndpoint } from './base'; +import querystring from 'querystring'; +import { ExternalIdOptions, FindResult } from '../types'; + +export class FindEndpoint extends BaseEndpoint { + constructor(accessToken: string) { + super(accessToken); + } + + async byId(externalId: string, options: ExternalIdOptions): Promise { + const params = querystring.encode(options); + return await this.api.get(`/find/${externalId}?${params}`); + } +} diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index d100360..afa61d5 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -13,4 +13,5 @@ export * from './discover'; export * from './people'; export * from './review'; export * from './trending'; +export * from './find'; diff --git a/src/types/find.ts b/src/types/find.ts new file mode 100644 index 0000000..a4a3b8f --- /dev/null +++ b/src/types/find.ts @@ -0,0 +1,29 @@ +import { ParsedUrlQueryInput } from 'querystring'; +import { Episode, Media, MediaType, Movie, Person, Season, TV } from '.'; + +export type ExternalSource = + | 'imdb_id' + | 'freebase_mid' + | 'freebase_id' + | 'tvdb_id' + | 'tvrage_id' + | 'facebook_id' + | 'twitter_id' + | 'instagram_id'; + +export interface ExternalIdOptions extends ParsedUrlQueryInput { + external_source: ExternalSource; + language?: string; +} + +type MediaTagged = T & { + media_type: MediaType; +}; + +export interface FindResult { + movie_results: MediaTagged[]; + person_results: MediaTagged[]; + tv_results: MediaTagged[]; + tv_episode_results: MediaTagged[]; + tv_season_results: MediaTagged[]; +} diff --git a/src/types/index.ts b/src/types/index.ts index 954d913..783be6b 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -10,6 +10,7 @@ export * from './people'; export * from './discover'; export * from './review'; export * from './trending'; +export * from './find'; export interface AuthorDetails { name: string; diff --git a/src/types/tv-shows.ts b/src/types/tv-shows.ts index aff729a..81b223a 100644 --- a/src/types/tv-shows.ts +++ b/src/types/tv-shows.ts @@ -100,6 +100,8 @@ export interface Episode { still_path: string vote_average: number vote_count: number + show_id: number; + runtime: number; } export interface SeasonDetails {