From c45e74db135b611be4be1b9c9613065cd17f7e55 Mon Sep 17 00:00:00 2001 From: DerPenz Date: Thu, 23 Feb 2023 18:03:38 +0100 Subject: [PATCH] added trending endpoint and types --- src/endpoints/index.ts | 1 + src/endpoints/trending.ts | 14 ++++++++++++++ src/types/index.ts | 1 + src/types/trending.ts | 19 +++++++++++++++++++ 4 files changed, 35 insertions(+) create mode 100644 src/endpoints/trending.ts create mode 100644 src/types/trending.ts 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