diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index afa61d5..8f22f9b 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -14,4 +14,5 @@ export * from './people'; export * from './review'; export * from './trending'; export * from './find'; +export * from './keywords'; diff --git a/src/endpoints/keywords.ts b/src/endpoints/keywords.ts new file mode 100644 index 0000000..818189e --- /dev/null +++ b/src/endpoints/keywords.ts @@ -0,0 +1,20 @@ +import { BaseEndpoint } from './base'; +import querystring from 'querystring'; +import { BelongingMovies, Keyword, KeywordsOptions } from '../types'; + +const BASE_Keyword = '/keyword'; + +export class KeywordsEndpoint extends BaseEndpoint { + constructor(accessToken: string) { + super(accessToken); + } + + async details(keywordId : number): Promise { + return await this.api.get(`${BASE_Keyword}/${keywordId}`); + } + + async belongingMovies(keywordId : number, options?: KeywordsOptions): Promise { + const params = querystring.encode(options); + return await this.api.get(`${BASE_Keyword}/${keywordId}/movies?${params}`); + } +} diff --git a/src/types/index.ts b/src/types/index.ts index 783be6b..f086a0c 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -11,6 +11,7 @@ export * from './discover'; export * from './review'; export * from './trending'; export * from './find'; +export * from './keywords'; export interface AuthorDetails { name: string; diff --git a/src/types/keywords.ts b/src/types/keywords.ts new file mode 100644 index 0000000..9edccd9 --- /dev/null +++ b/src/types/keywords.ts @@ -0,0 +1,19 @@ +import { ParsedUrlQueryInput } from 'querystring'; +import { Movie } from '.'; + +export interface KeywordsOptions extends ParsedUrlQueryInput { + include_adult?: boolean; + language?: string; +} + +export interface BelongingMovies{ + page: number; + results: Movie[]; + total_results: number; + total_pages: number; +} + +export interface Keyword{ + id: number; + name: string; +} \ No newline at end of file