Finished movie credits and release dates
This commit is contained in:
		| @@ -149,6 +149,11 @@ class TMDB { | ||||
|     } | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Retrieve credits for a movie | ||||
|    * @param {Number} identifier of the movie to get credits for | ||||
|    * @returns {Promise} movie cast object | ||||
|    */ | ||||
|   movieCredits(identifier) { | ||||
|     const query = { id: identifier } | ||||
|     const cacheKey = `${this.cacheTags.movieCredits}:${identifier}` | ||||
| @@ -160,6 +165,11 @@ class TMDB { | ||||
|       .then(credits => Credits.convertFromTmdbResponse(credits)) | ||||
|   } | ||||
|  | ||||
|   /** | ||||
|    * Retrieve release dates for a movie | ||||
|    * @param {Number} identifier of the movie to get release dates for | ||||
|    * @returns {Promise} movie release dates object | ||||
|    */ | ||||
|   movieReleaseDates(identifier) { | ||||
|     const query = { id: identifier } | ||||
|     const cacheKey = `${this.cacheTags.movieReleaseDates}:${identifier}` | ||||
| @@ -167,7 +177,7 @@ class TMDB { | ||||
|     return this.cache.get(cacheKey) | ||||
|       .catch(() => this.tmdb('movieReleaseDates', query)) | ||||
|       .catch(tmdbError => this.tmdbRelaseDatesError(tmdbError)) | ||||
|       .then(releaseDates => this.cache.set(cacheKey, releaseDates, 1)) | ||||
|       .then(releaseDates => this.cache.set(cacheKey, releaseDates, 86400)) | ||||
|       .then(releaseDates => ReleaseDates.convertFromTmdbResponse(releaseDates)) | ||||
|   } | ||||
|   | ||||
|   | ||||
| @@ -4,4 +4,4 @@ import Person from './types/person.js' | ||||
| import Credits from './types/credits.js' | ||||
| import ReleaseDates from './types/releaseDates.js' | ||||
|  | ||||
| module.exports = { Movie, Show, Person, ReleaseDates } | ||||
| module.exports = { Movie, Show, Person, Credits, ReleaseDates } | ||||
|   | ||||
| @@ -20,8 +20,8 @@ class Credits { | ||||
|   createJsonResponse() { | ||||
|     return { | ||||
|       id: this.id, | ||||
|       cast: this.cast, | ||||
|       crew: this.crew | ||||
|       cast: this.cast.map(cast => cast.createJsonResponse()), | ||||
|       crew: this.crew.map(crew => crew.createJsonResponse()) | ||||
|     } | ||||
|   } | ||||
| } | ||||
|   | ||||
| @@ -1,3 +1,43 @@ | ||||
| class ReleaseDates {  | ||||
|   constructor(id, releases) { | ||||
|     this.id = id; | ||||
|     this.releases = releases; | ||||
|   } | ||||
|  | ||||
|   static convertFromTmdbResponse(response) { | ||||
|     const { id, results } = response; | ||||
|  | ||||
|     const releases = results.map(countryRelease =>  | ||||
|       new Release( | ||||
|         countryRelease.iso_3166_1,  | ||||
|         countryRelease.release_dates.map(rd => new ReleaseDate(rd.certification, rd.iso_639_1, rd.release_date, rd.type, rd.note)) | ||||
|       )) | ||||
|  | ||||
|     return new ReleaseDates(id, releases) | ||||
|   } | ||||
|  | ||||
|   createJsonResponse() { | ||||
|     return { | ||||
|       id: this.id, | ||||
|       results: this.releases.map(release => release.createJsonResponse()) | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| class Release {  | ||||
|   constructor(country, releaseDates) { | ||||
|     this.country = country; | ||||
|     this.releaseDates = releaseDates; | ||||
|   } | ||||
|  | ||||
|   createJsonResponse() { | ||||
|     return { | ||||
|       country: this.country, | ||||
|       release_dates: this.releaseDates.map(releaseDate => releaseDate.createJsonResponse()) | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| class ReleaseDate { | ||||
|   constructor(certification, language, releaseDate, type, note) { | ||||
|     this.certification = certification; | ||||
| @@ -23,39 +63,15 @@ class ReleaseDate { | ||||
|       return null | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
| class Release {  | ||||
|   constructor(country, releaseDates) { | ||||
|     this.country = country; | ||||
|     this.releaseDates = releaseDates; | ||||
|   } | ||||
| } | ||||
|  | ||||
| class ReleaseDates {  | ||||
|   constructor(id, releases) { | ||||
|     this.id = id; | ||||
|     this.releases = releases; | ||||
|   } | ||||
|  | ||||
|   static convertFromTmdbResponse(response) { | ||||
|     console.log('this is relese dates response') | ||||
|     const { id, results } = response; | ||||
|  | ||||
|     const releases = results.map(countryRelease =>  | ||||
|       new Release( | ||||
|         countryRelease.iso_3166_1,  | ||||
|         countryRelease.release_dates.map(rd => new ReleaseDate(rd.certification, rd.iso_639_1, rd.release_date, rd.type, rd.note)) | ||||
|       )) | ||||
|  | ||||
|     return new ReleaseDates(id, releases) | ||||
|   } | ||||
|  | ||||
|   createJsonResponse() { | ||||
|     return JSON.stringify({ | ||||
|       id: this.id, | ||||
|       release_dates: this.releases | ||||
|     }) | ||||
|     return { | ||||
|       certification: this.certification, | ||||
|       language: this.language, | ||||
|       releaseDate: this.releaseDate, | ||||
|       type: this.type, | ||||
|       note: this.note | ||||
|     } | ||||
|   } | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -17,6 +17,7 @@ const movieCreditsController = (req, res) => { | ||||
|         res.status(error.status).send({ success: false, error: error.message }) | ||||
|       } else { | ||||
|         // TODO log unhandled errors | ||||
|         console.log('caugth credits controller error', error) | ||||
|         res.status(500).send({ message: 'An unexpected error occured while requesting movie credits' }) | ||||
|       } | ||||
|     }) | ||||
|   | ||||
| @@ -9,7 +9,7 @@ const movieReleaseDatesController = (req, res) => { | ||||
|   const movieId = req.params.id; | ||||
|  | ||||
|   tmdb.movieReleaseDates(movieId) | ||||
|     .then(releaseDates => res.send(releaseDates)) | ||||
|     .then(releaseDates => res.send(releaseDates.createJsonResponse())) | ||||
|     .catch(error => { | ||||
|       const { status, message } = error; | ||||
|  | ||||
| @@ -17,7 +17,7 @@ const movieReleaseDatesController = (req, res) => { | ||||
|         res.status(error.status).send({ success: false, error: error.message }) | ||||
|       } else { | ||||
|         // TODO log unhandled errors : here our at tmdbReleaseError ? | ||||
|         console.log('error', error) | ||||
|         console.log('caugth release dates controller error', error) | ||||
|         res.status(500).send({ message: 'An unexpected error occured while requesting movie credits' }) | ||||
|       } | ||||
|     }) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user