Finished movie credits and release dates

This commit is contained in:
2019-11-03 16:01:19 +01:00
parent bc3d4881bd
commit 879a02b388
6 changed files with 65 additions and 38 deletions

View File

@@ -3,7 +3,7 @@ const convertTmdbToMovie = require('src/tmdb/convertTmdbToMovie');
const convertTmdbToShow = require('src/tmdb/convertTmdbToShow');
const convertTmdbToPerson = require('src/tmdb/convertTmdbToPerson');
const { Credits, ReleaseDates} = require('src/tmdb/types');
const { Credits, ReleaseDates } = require('src/tmdb/types');
// const { tmdbInfo } = require('src/tmdb/types')
class TMDB {
@@ -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))
}

View File

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

View File

@@ -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())
}
}
}

View File

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

View File

@@ -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' })
}
})

View File

@@ -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' })
}
})