Rewrote the movie & show list controller to be more abstract and easier to extend later

This commit is contained in:
2019-10-04 21:21:52 +02:00
parent 0ca3f81bf8
commit 90aa4d2485

View File

@@ -17,79 +17,39 @@ const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
// + movie/latest
//
function getTmdbMovieList(res, listname, page) {
Promise.resolve()
.then(() => tmdb.movieList(listname, page))
.then((response) => res.send(response))
.catch((error) => {
res.status(500).send({ success: false, error: error.message });
})
}
function getTmdbShowList(res, listname, page) {
Promise.resolve()
.then(() => tmdb.showList(listname, page))
.then((response) => res.send(response))
.catch((error) => {
res.status(500).send({ success: false, error: error.message });
})
}
const respondWithErrorMessage = (res, error) => {
const status = error.status || 500
const message = error.message || 'Unhandled error occured'
const success = error.success || false
const respondWithUnknownError = (res, error) => {
// console.log('Unknown error:', error)
res.status(500).send({ success: false, error: 'Unhandled error occured'})
return res.status(status).send({ success: success, error: message})
}
const nowPlayingMovies = (req, res) => {
function fetchTmdbMovieList(req, res, listName, tmdbListFunction) {
const { page } = req.query;
const listname = 'miscNowPlayingMovies'
return tmdb.movieList(listname, page)
return tmdb.movieList(listName, page)
.then(nowPlayingMovieList => res.send(nowPlayingMovieList))
.catch(error => respondUnknownError(res, error))
.catch(error => respondWithErrorMessage(res, error))
}
const popularMovies = (req, res) => {
function fetchTmdbShowList(req, res, listName, tmdbListFunction) {
const { page } = req.query;
const listname = 'miscPopularMovies'
getTmdbMovieList(res, listname, page);
return tmdb.showList(listName, page)
.then(nowPlayingMovieList => res.send(nowPlayingMovieList))
.catch(error => respondWithErrorMessage(res, error))
}
const topRatedMovies = (req, res) => {
const { page } = req.query;
const listname = 'miscTopRatedMovies'
getTmdbMovieList(res, listname, page);
}
const upcomingMovies = (req, res) => {
const { page } = req.query;
const listname = 'miscUpcomingMovies'
getTmdbMovieList(res, listname, page);
}
const nowPlayingShows = (req, res) => {
const { page } = req.query;
const listname = 'tvOnTheAir'
getTmdbShowList(res, listname, page);
}
const popularShows = (req, res) => {
const { page } = req.query;
const listname = 'miscPopularTvs'
getTmdbShowList(res, listname, page);
}
const topRatedShows = (req, res) => {
const { page } = req.query;
const listname = 'miscTopRatedTvs'
getTmdbShowList(res, listname, page);
}
const nowPlayingMovies = (req, res) => fetchTmdbMovieList(req, res, 'miscNowPlayingMovies')
const popularMovies = (req, res) => fetchTmdbMovieList(req, res, 'miscPopularMovies')
const topRatedMovies = (req, res) => fetchTmdbMovieList(req, res, 'miscTopRatedMovies')
const upcomingMovies = (req, res) => fetchTmdbMovieList(req, res, 'miscUpcomingMovies')
const nowPlayingShows = (req, res) => fetchTmdbShowList(req, res, 'tvOnTheAir')
const popularShows = (req, res) => fetchTmdbShowList(req, res, 'miscPopularTvs')
const topRatedShows = (req, res) => fetchTmdbShowList(req, res, 'miscTopRatedTvs')
module.exports = {
nowPlayingMovies,