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) {
|
movieCredits(identifier) {
|
||||||
const query = { id: identifier }
|
const query = { id: identifier }
|
||||||
const cacheKey = `${this.cacheTags.movieCredits}:${identifier}`
|
const cacheKey = `${this.cacheTags.movieCredits}:${identifier}`
|
||||||
@@ -160,6 +165,11 @@ class TMDB {
|
|||||||
.then(credits => Credits.convertFromTmdbResponse(credits))
|
.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) {
|
movieReleaseDates(identifier) {
|
||||||
const query = { id: identifier }
|
const query = { id: identifier }
|
||||||
const cacheKey = `${this.cacheTags.movieReleaseDates}:${identifier}`
|
const cacheKey = `${this.cacheTags.movieReleaseDates}:${identifier}`
|
||||||
@@ -167,7 +177,7 @@ class TMDB {
|
|||||||
return this.cache.get(cacheKey)
|
return this.cache.get(cacheKey)
|
||||||
.catch(() => this.tmdb('movieReleaseDates', query))
|
.catch(() => this.tmdb('movieReleaseDates', query))
|
||||||
.catch(tmdbError => this.tmdbRelaseDatesError(tmdbError))
|
.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))
|
.then(releaseDates => ReleaseDates.convertFromTmdbResponse(releaseDates))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -4,4 +4,4 @@ import Person from './types/person.js'
|
|||||||
import Credits from './types/credits.js'
|
import Credits from './types/credits.js'
|
||||||
import ReleaseDates from './types/releaseDates.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() {
|
createJsonResponse() {
|
||||||
return {
|
return {
|
||||||
id: this.id,
|
id: this.id,
|
||||||
cast: this.cast,
|
cast: this.cast.map(cast => cast.createJsonResponse()),
|
||||||
crew: this.crew
|
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 {
|
class ReleaseDate {
|
||||||
constructor(certification, language, releaseDate, type, note) {
|
constructor(certification, language, releaseDate, type, note) {
|
||||||
this.certification = certification;
|
this.certification = certification;
|
||||||
@@ -23,39 +63,15 @@ class ReleaseDate {
|
|||||||
return null
|
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() {
|
createJsonResponse() {
|
||||||
return JSON.stringify({
|
return {
|
||||||
id: this.id,
|
certification: this.certification,
|
||||||
release_dates: this.releases
|
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 })
|
res.status(error.status).send({ success: false, error: error.message })
|
||||||
} else {
|
} else {
|
||||||
// TODO log unhandled errors
|
// TODO log unhandled errors
|
||||||
|
console.log('caugth credits controller error', error)
|
||||||
res.status(500).send({ message: 'An unexpected error occured while requesting movie credits' })
|
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;
|
const movieId = req.params.id;
|
||||||
|
|
||||||
tmdb.movieReleaseDates(movieId)
|
tmdb.movieReleaseDates(movieId)
|
||||||
.then(releaseDates => res.send(releaseDates))
|
.then(releaseDates => res.send(releaseDates.createJsonResponse()))
|
||||||
.catch(error => {
|
.catch(error => {
|
||||||
const { status, message } = error;
|
const { status, message } = error;
|
||||||
|
|
||||||
@@ -17,7 +17,7 @@ const movieReleaseDatesController = (req, res) => {
|
|||||||
res.status(error.status).send({ success: false, error: error.message })
|
res.status(error.status).send({ success: false, error: error.message })
|
||||||
} else {
|
} else {
|
||||||
// TODO log unhandled errors : here our at tmdbReleaseError ?
|
// 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' })
|
res.status(500).send({ message: 'An unexpected error occured while requesting movie credits' })
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|||||||
Reference in New Issue
Block a user