added trending endpoint and types

This commit is contained in:
DerPenz
2023-02-23 18:03:38 +01:00
parent 3c31ab3374
commit c45e74db13
4 changed files with 35 additions and 0 deletions

View File

@@ -12,4 +12,5 @@ export * from './tv-shows';
export * from './discover';
export * from './people';
export * from './review';
export * from './trending';

14
src/endpoints/trending.ts Normal file
View File

@@ -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<T extends MediaType>(mediaType : T, timeWindow: TimeWindow): Promise<TrendingResults<T>> {
return await this.api.get<TrendingResults<T>>(`/trending/${mediaType}/${timeWindow}`);
}
}

View File

@@ -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;

19
src/types/trending.ts Normal file
View File

@@ -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 MediaType> = T extends 'tv'
? TV
: T extends 'movie'
? Movie
: T extends 'person'
? Person
: TV | Movie | Person;
export interface TrendingResults<T extends MediaType> {
page: number;
results: (TrendingResult<T> & {media_type: MediaType})[];
total_pages: number;
total_results: number;
}