From 2dc22b386d60aa17d1cc03f14e1f2f52d733085b Mon Sep 17 00:00:00 2001 From: KevinMidboe Date: Sun, 3 Sep 2017 17:02:02 +0200 Subject: [PATCH] Added endpoints for discover media (either movie or show), getUpcoming movies, nowPlaying (movies or shows), popular (movie or show) and search similar where the type movie/show must be defined --- seasoned_api/src/webserver/app.js | 6 +++++ .../controllers/tmdb/discoverMedia.js | 21 ++++++++++++++++++ .../webserver/controllers/tmdb/getUpcoming.js | 21 ++++++++++++++++++ .../controllers/tmdb/nowPlayingMedia.js | 21 ++++++++++++++++++ .../controllers/tmdb/popularMedia.js | 21 ++++++++++++++++++ .../controllers/tmdb/searchSimilar.js | 22 +++++++++++++++++++ 6 files changed, 112 insertions(+) create mode 100644 seasoned_api/src/webserver/controllers/tmdb/discoverMedia.js create mode 100644 seasoned_api/src/webserver/controllers/tmdb/getUpcoming.js create mode 100644 seasoned_api/src/webserver/controllers/tmdb/nowPlayingMedia.js create mode 100644 seasoned_api/src/webserver/controllers/tmdb/popularMedia.js create mode 100644 seasoned_api/src/webserver/controllers/tmdb/searchSimilar.js diff --git a/seasoned_api/src/webserver/app.js b/seasoned_api/src/webserver/app.js index 63dde87..5d56fab 100644 --- a/seasoned_api/src/webserver/app.js +++ b/seasoned_api/src/webserver/app.js @@ -40,6 +40,12 @@ router.post('/v1/plex/request/:mediaId', require('./controllers/plex/submitReque router.get('/v1/plex/hook', require('./controllers/plex/hookDump.js')); router.get('/v1/tmdb/search', require('./controllers/tmdb/searchMedia.js')); +router.get('/v1/tmdb/discover', require('./controllers/tmdb/discoverMedia.js')); +router.get('/v1/tmdb/popular', require('./controllers/tmdb/popularMedia.js')); +router.get('/v1/tmdb/nowplaying', require('./controllers/tmdb/nowPlayingMedia.js')); +router.get('/v1/tmdb/upcoming', require('./controllers/tmdb/getUpcoming.js')); + +router.get('/v1/tmdb/similar/:mediaId', require('./controllers/tmdb/searchSimilar.js')); router.get('/v1/tmdb/:mediaId', require('./controllers/tmdb/readMedia.js')); router.post('/v1/git/dump', require('./controllers/git/dumpHook.js')); diff --git a/seasoned_api/src/webserver/controllers/tmdb/discoverMedia.js b/seasoned_api/src/webserver/controllers/tmdb/discoverMedia.js new file mode 100644 index 0000000..3669035 --- /dev/null +++ b/seasoned_api/src/webserver/controllers/tmdb/discoverMedia.js @@ -0,0 +1,21 @@ +const configuration = require('src/config/configuration').getInstance(); +const TMDB = require('src/tmdb/tmdb'); +const tmdb = new TMDB(configuration.get('tmdb', 'apiKey')); + +/** + * Controller: Retrieve a list of movies or shows in discover section in TMDB + * @param {Request} req http request variable + * @param {Response} res + * @returns {Callback} + */ +function discoverMediaController(req, res) { + const { page, type } = req.query; + tmdb.discover(page, type) + .then((results) => { + res.send(results); + }).catch((error) => { + res.status(404).send({ success: false, error: error.message }); + }); +} + +module.exports = discoverMediaController; diff --git a/seasoned_api/src/webserver/controllers/tmdb/getUpcoming.js b/seasoned_api/src/webserver/controllers/tmdb/getUpcoming.js new file mode 100644 index 0000000..9c9e049 --- /dev/null +++ b/seasoned_api/src/webserver/controllers/tmdb/getUpcoming.js @@ -0,0 +1,21 @@ +const configuration = require('src/config/configuration').getInstance(); +const TMDB = require('src/tmdb/tmdb'); +const tmdb = new TMDB(configuration.get('tmdb', 'apiKey')); + +/** + * Controller: Retrieve upcoming movies + * @param {Request} req http request variable + * @param {Response} res + * @returns {Callback} + */ +function getUpcomingController(req, res) { + const { page } = req.query; + tmdb.upcoming(page) + .then((results) => { + res.send(results); + }).catch((error) => { + res.status(404).send({ success: false, error: error.message }); + }); +} + +module.exports = getUpcomingController; diff --git a/seasoned_api/src/webserver/controllers/tmdb/nowPlayingMedia.js b/seasoned_api/src/webserver/controllers/tmdb/nowPlayingMedia.js new file mode 100644 index 0000000..5e67db8 --- /dev/null +++ b/seasoned_api/src/webserver/controllers/tmdb/nowPlayingMedia.js @@ -0,0 +1,21 @@ +const configuration = require('src/config/configuration').getInstance(); +const TMDB = require('src/tmdb/tmdb'); +const tmdb = new TMDB(configuration.get('tmdb', 'apiKey')); + +/** + * Controller: Retrieve nowplaying movies / now airing shows + * @param {Request} req http request variable + * @param {Response} res + * @returns {Callback} + */ +function nowPlayingMediaController(req, res) { + const { page, type } = req.query; + tmdb.nowplaying(page, type) + .then((results) => { + res.send(results); + }).catch((error) => { + res.status(404).send({ success: false, error: error.message }); + }); +} + +module.exports = nowPlayingMediaController; diff --git a/seasoned_api/src/webserver/controllers/tmdb/popularMedia.js b/seasoned_api/src/webserver/controllers/tmdb/popularMedia.js new file mode 100644 index 0000000..963d553 --- /dev/null +++ b/seasoned_api/src/webserver/controllers/tmdb/popularMedia.js @@ -0,0 +1,21 @@ +const configuration = require('src/config/configuration').getInstance(); +const TMDB = require('src/tmdb/tmdb'); +const tmdb = new TMDB(configuration.get('tmdb', 'apiKey')); + +/** + * Controller: Retrieve information for a movie + * @param {Request} req http request variable + * @param {Response} res + * @returns {Callback} + */ +function popularMediaController(req, res) { + const { page, type } = req.query; + tmdb.popular(page, type) + .then((results) => { + res.send(results); + }).catch((error) => { + res.status(404).send({ success: false, error: error.message }); + }); +} + +module.exports = popularMediaController; diff --git a/seasoned_api/src/webserver/controllers/tmdb/searchSimilar.js b/seasoned_api/src/webserver/controllers/tmdb/searchSimilar.js new file mode 100644 index 0000000..bc2383f --- /dev/null +++ b/seasoned_api/src/webserver/controllers/tmdb/searchSimilar.js @@ -0,0 +1,22 @@ +const configuration = require('src/config/configuration').getInstance(); +const TMDB = require('src/tmdb/tmdb'); +const tmdb = new TMDB(configuration.get('tmdb', 'apiKey')); + +/** + * Controller: Retrieve similar movies or shows + * @param {Request} req http request variable + * @param {Response} res + * @returns {Callback} + */ +function similarMediaController(req, res) { + const mediaId = req.params.mediaId; + const { type } = req.query; + tmdb.similar(mediaId, type) + .then((results) => { + res.send(results); + }).catch((error) => { + res.status(404).send({ success: false, error: error.message }); + }); +} + +module.exports = similarMediaController;