diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index ccab30d..d100360 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -12,4 +12,5 @@ export * from './tv-shows'; export * from './discover'; export * from './people'; export * from './review'; +export * from './trending'; diff --git a/src/endpoints/trending.ts b/src/endpoints/trending.ts new file mode 100644 index 0000000..5cdc79f --- /dev/null +++ b/src/endpoints/trending.ts @@ -0,0 +1,14 @@ +import { MediaType, TimeWindow, TrendingResults, } from '../types'; +import { BaseEndpoint } from './base'; + +export class TrendingEndpoint extends BaseEndpoint { + constructor(accessToken: string) { + super(accessToken); + } + + async trending(mediaType : T, timeWindow: TimeWindow): Promise> { + return await this.api.get>(`/trending/${mediaType}/${timeWindow}`); + } +} + + diff --git a/src/types/index.ts b/src/types/index.ts index 856e318..954d913 100644 --- a/src/types/index.ts +++ b/src/types/index.ts @@ -9,6 +9,7 @@ export * from './watch-providers'; export * from './people'; export * from './discover'; export * from './review'; +export * from './trending'; export interface AuthorDetails { name: string; diff --git a/src/types/trending.ts b/src/types/trending.ts new file mode 100644 index 0000000..b295ced --- /dev/null +++ b/src/types/trending.ts @@ -0,0 +1,19 @@ +import { Movie, Person, TV } from '.'; +export type MediaType = 'all' | 'movie' | 'tv' | 'person'; + +export type TimeWindow = 'day' | 'week'; + +type TrendingResult = T extends 'tv' +? TV +: T extends 'movie' +? Movie +: T extends 'person' +? Person +: TV | Movie | Person; + +export interface TrendingResults { + page: number; + results: (TrendingResult & {media_type: MediaType})[]; + total_pages: number; + total_results: number; +} \ No newline at end of file