From 99372777521e6e1281b15d235d212465d81fb85f Mon Sep 17 00:00:00 2001 From: Blake Joynes Date: Sat, 15 May 2021 11:44:02 -0400 Subject: [PATCH] update readme, started movie endpoints --- README.md | 12 ++++++- src/endpoints/certification.ts | 2 +- src/endpoints/genre.ts | 19 +++++++++++ src/endpoints/index.ts | 2 ++ src/endpoints/movies.ts | 19 +++++++++++ src/tmdb.ts | 10 ++++++ src/types/index.d.ts | 11 +++++-- src/types/movie.d.ts | 58 ++++++++++++++++++++++++++++++++++ 8 files changed, 128 insertions(+), 5 deletions(-) create mode 100644 src/endpoints/genre.ts create mode 100644 src/endpoints/movies.ts create mode 100644 src/types/movie.d.ts diff --git a/README.md b/README.md index 0037231..8f08028 100644 --- a/README.md +++ b/README.md @@ -4,4 +4,14 @@ Typescript library wrapper of [TMDB API](https://developers.themoviedb.org/) v3 . -This uses authentication token for requests so there is no need to append api key to the url. +This uses new jwt authentication token for requests so there is no need to append api key to the url. +Once you have registered for access to the api you can use your access token as follows: + +`import TMDB from 'tmdb-ts';` + +`const tmdb = new TMDB(accessToken);` + +`tmdb.search.movies({query: 'American Pie'})` + + + diff --git a/src/endpoints/certification.ts b/src/endpoints/certification.ts index c947570..eea43f0 100644 --- a/src/endpoints/certification.ts +++ b/src/endpoints/certification.ts @@ -1,4 +1,4 @@ -import { BaseEndpoint } from './base'; +import { BaseEndpoint } from './base'; import { Certifications } from '../types/certification'; export class CertificationEndpoint extends BaseEndpoint { diff --git a/src/endpoints/genre.ts b/src/endpoints/genre.ts new file mode 100644 index 0000000..a003fe6 --- /dev/null +++ b/src/endpoints/genre.ts @@ -0,0 +1,19 @@ +import { BaseEndpoint } from './base'; + +export interface Genres { + genres: Array<{id: number, name: string}> +} + +export class GenreEndpoint extends BaseEndpoint { + constructor(protected readonly accessToken: string) { + super(accessToken); + } + + async movies(): Promise { + return await this.api.get('/genre/movie/list'); + } + + async tvShows(): Promise { + return await this.api.get('/genre/tv/list'); + } +} diff --git a/src/endpoints/index.ts b/src/endpoints/index.ts index e0f774e..9420b5d 100644 --- a/src/endpoints/index.ts +++ b/src/endpoints/index.ts @@ -5,3 +5,5 @@ export * from './certification'; export * from './changes'; export * from './credits'; export * from './search'; +export * from './genre'; +export * from './movies'; diff --git a/src/endpoints/movies.ts b/src/endpoints/movies.ts new file mode 100644 index 0000000..d360a29 --- /dev/null +++ b/src/endpoints/movies.ts @@ -0,0 +1,19 @@ +import { BaseEndpoint } from './base'; +import { AlternativeTitles, MovieDetails } from '../types/movie'; + +const BASE_MOVIE = '/movie'; + +export class MoviesEndpoint extends BaseEndpoint{ + constructor(protected readonly accessToken: string) { + super(accessToken); + } + + async details(id: number): Promise{ + return await this.api.get(`${BASE_MOVIE}/${id}`); + } + + async alternativeTitles(id: number): Promise{ + return await this.api.get(`${BASE_MOVIE}/${id}/alternative_titles`); + } + +} diff --git a/src/tmdb.ts b/src/tmdb.ts index 922cea2..e735b17 100644 --- a/src/tmdb.ts +++ b/src/tmdb.ts @@ -3,6 +3,8 @@ import { CertificationEndpoint, ChangeEndpoint, CreditsEndpoint, + GenreEndpoint, + MoviesEndpoint, SearchEndpoint, } from './endpoints'; @@ -28,8 +30,16 @@ export default class TMDB { get credits(): CreditsEndpoint { return new CreditsEndpoint(this.accessToken); } + get search(): SearchEndpoint{ return new SearchEndpoint(this.accessToken); } + get genres(): GenreEndpoint{ + return new GenreEndpoint(this.accessToken); + } + + get movies(): MoviesEndpoint{ + return new MoviesEndpoint(this.accessToken); + } } diff --git a/src/types/index.d.ts b/src/types/index.d.ts index 755245e..118d132 100644 --- a/src/types/index.d.ts +++ b/src/types/index.d.ts @@ -1,6 +1,7 @@ -import * as certs from './certification'; -import * as credits from './credits'; -import * as changes from './changes'; +export * from './certification'; +export * from './credits'; +export * from './changes'; + export interface KnownFor { id: number; @@ -80,6 +81,10 @@ export interface TV { vote_average: number; } +export interface Genre { + id: number; + name: string; +} export { certs, diff --git a/src/types/movie.d.ts b/src/types/movie.d.ts new file mode 100644 index 0000000..062aa91 --- /dev/null +++ b/src/types/movie.d.ts @@ -0,0 +1,58 @@ +import { Genre } from './index'; + +export interface ProductionCompany { + id: number; + logo_path: string; + name: string; + origin_country: string; +} + +export interface ProductionCountry { + iso_3166_1: string; + name: string; +} + +export interface SpokenLanguage { + iso_639_1: string; + name: string; +} + +export interface MovieDetails { + adult: boolean; + backdrop_path: string; + belongs_to_collection?: any; + budget: number; + genres: Genre[]; + homepage: string; + id: number; + imdb_id: string; + original_language: string; + original_title: string; + overview: string; + popularity: number; + poster_path?: any; + production_companies: ProductionCompany[]; + production_countries: ProductionCountry[]; + release_date: string; + revenue: number; + runtime: number; + spoken_languages: SpokenLanguage[]; + status: string; + tagline: string; + title: string; + video: boolean; + vote_average: number; + vote_count: number; +} + + +export interface Title { + iso_3166_1: string; + title: string; + type: string; +} + +export interface AlternativeTitles { + id: number; + titles: Title[]; +}