Moved, renamed, re-did and added a lot of stuff. Getting ready for the v2 upgrade
This commit is contained in:
@@ -1,38 +0,0 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
const Plex = require('src/plex/plex');
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
const plex = new Plex(configuration.get('plex', 'ip'));
|
||||
|
||||
/**
|
||||
* Controller: Retrieve information for a movie
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
async function movieInfoController(req, res) {
|
||||
const movieId = req.params.id;
|
||||
const queryCredits = req.query.credits;
|
||||
const queryReleaseDates = req.query.release_dates;
|
||||
let credits = undefined
|
||||
let releaseDates = undefined
|
||||
|
||||
if (queryCredits && queryCredits.toLowerCase() === 'true')
|
||||
credits = true
|
||||
if (queryReleaseDates && queryReleaseDates.toLowerCase() === 'true')
|
||||
releaseDates = true
|
||||
|
||||
const movie = await tmdb.movieInfo(movieId, credits, releaseDates);
|
||||
|
||||
plex.existsInPlex(movie)
|
||||
.catch((error) => { console.log('Error when searching plex'); })
|
||||
.then(() => {
|
||||
res.send(movie);
|
||||
}).catch((error) => {
|
||||
res.status(404).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = movieInfoController;
|
||||
@@ -1,31 +0,0 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
const Plex = require('src/plex/plex');
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
const plex = new Plex(configuration.get('plex', 'ip'));
|
||||
|
||||
/**
|
||||
* Controller: Retrieve information for a show
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
|
||||
async function showInfoController(req, res) {
|
||||
const showId = req.params.id;
|
||||
const { credits } = req.query;
|
||||
const show = await tmdb.showInfo(showId, credits);
|
||||
|
||||
plex.existsInPlex(show)
|
||||
.catch((error) => { console.log('Error when searching plex'); })
|
||||
.then(() => {
|
||||
console.log('show', show)
|
||||
res.send(show);
|
||||
}).catch((error) => {
|
||||
res.status(404).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = showInfoController;
|
||||
@@ -16,40 +16,48 @@ const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
// + newly created (tv/latest).
|
||||
// + movie/latest
|
||||
//
|
||||
function handleError(error, res) {
|
||||
const { status, message } = error;
|
||||
|
||||
|
||||
const respondWithErrorMessage = (res, error) => {
|
||||
const status = error.status || 500
|
||||
const message = error.message || 'Unhandled error occured'
|
||||
const success = error.success || false
|
||||
|
||||
// console.log('Unknown error:', error)
|
||||
return res.status(status).send({ success: success, error: message})
|
||||
if (status && message) {
|
||||
res.status(error.status).send({ success: false, error: error.message })
|
||||
} else {
|
||||
console.log('caught list controller error', error)
|
||||
res.status(500).send({ message: 'An unexpected error occured while requesting list'})
|
||||
}
|
||||
}
|
||||
|
||||
function fetchTmdbMovieList(req, res, listName, tmdbListFunction) {
|
||||
function handleListResponse(response, res) {
|
||||
return res.send(response)
|
||||
.catch(error => handleError(error, res))
|
||||
}
|
||||
|
||||
function fetchTmdbList(req, res, listName, type) {
|
||||
const { page } = req.query;
|
||||
|
||||
return tmdb.movieList(listName, page)
|
||||
.then(nowPlayingMovieList => res.send(nowPlayingMovieList))
|
||||
.catch(error => respondWithErrorMessage(res, error))
|
||||
if (type === 'movie') {
|
||||
return tmdb.movieList(listName, page)
|
||||
.then(listResponse => res.send(listResponse))
|
||||
.catch(error => handleError(error, res))
|
||||
} else if (type === 'show') {
|
||||
return tmdb.showList(listname, page)
|
||||
.then(listResponse => res.send(listResponse))
|
||||
.catch(error => handleError(error, res))
|
||||
}
|
||||
|
||||
handleError({
|
||||
status: 400,
|
||||
message: `'${type}' is not a valid list type.`
|
||||
}, res)
|
||||
}
|
||||
|
||||
function fetchTmdbShowList(req, res, listName, tmdbListFunction) {
|
||||
const { page } = req.query;
|
||||
|
||||
return tmdb.showList(listName, page)
|
||||
.then(nowPlayingMovieList => res.send(nowPlayingMovieList))
|
||||
.catch(error => respondWithErrorMessage(res, error))
|
||||
}
|
||||
|
||||
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')
|
||||
const nowPlayingMovies = (req, res) => fetchTmdbList(req, res, 'miscNowPlayingMovies', 'movie')
|
||||
const popularMovies = (req, res) => fetchTmdbList(req, res, 'miscPopularMovies', 'movie')
|
||||
const topRatedMovies = (req, res) => fetchTmdbList(req, res, 'miscTopRatedMovies', 'movie')
|
||||
const upcomingMovies = (req, res) => fetchTmdbList(req, res, 'miscUpcomingMovies', 'movie')
|
||||
const nowPlayingShows = (req, res) => fetchTmdbList(req, res, 'tvOnTheAir', 'show')
|
||||
const popularShows = (req, res) => fetchTmdbList(req, res, 'miscPopularTvs', 'show')
|
||||
const topRatedShows = (req, res) => fetchTmdbList(req, res, 'miscTopRatedTvs', 'show')
|
||||
|
||||
module.exports = {
|
||||
nowPlayingMovies,
|
||||
|
||||
@@ -17,7 +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)
|
||||
console.log('caugth movie credits controller error', error)
|
||||
res.status(500).send({ message: 'An unexpected error occured while requesting movie credits' })
|
||||
}
|
||||
})
|
||||
|
||||
58
seasoned_api/src/webserver/controllers/movie/info.js
Normal file
58
seasoned_api/src/webserver/controllers/movie/info.js
Normal file
@@ -0,0 +1,58 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
const Plex = require('src/plex/plex');
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
const plex = new Plex(configuration.get('plex', 'ip'));
|
||||
|
||||
function handleError(error, res) {
|
||||
const { status, message } = error;
|
||||
|
||||
if (status && message) {
|
||||
res.status(error.status).send({ success: false, error: error.message })
|
||||
} else {
|
||||
console.log('caught movieinfo controller error', error)
|
||||
res.status(500).send({ message: 'An unexpected error occured while requesting movie info'})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Controller: Retrieve information for a movie
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
async function movieInfoController(req, res) {
|
||||
const movieId = req.params.id;
|
||||
let { credits, release_dates, check_existance } = req.query;
|
||||
|
||||
credits && credits.toLowerCase() === 'true' ? credits = true : credits = false
|
||||
release_dates && release_dates.toLowerCase() === 'true' ? release_dates = true : release_dates = false
|
||||
check_existance && check_existance.toLowerCase() === 'true' ? check_existance = true : check_existance = false
|
||||
|
||||
let tmdbQueue = [tmdb.movieInfo(movieId)]
|
||||
if (credits)
|
||||
tmdbQueue.push(tmdb.movieCredits(movieId))
|
||||
if (release_dates)
|
||||
tmdbQueue.push(tmdb.movieReleaseDates(movieId))
|
||||
|
||||
try {
|
||||
const [ Movie, Credits, ReleaseDates ] = await Promise.all(tmdbQueue)
|
||||
|
||||
const movie = Movie.createJsonResponse()
|
||||
if (Credits)
|
||||
movie.credits = Credits.createJsonResponse()
|
||||
if (ReleaseDates)
|
||||
movie.release_dates = ReleaseDates.createJsonResponse().results
|
||||
|
||||
if (check_existance)
|
||||
movie.exists_in_plex = await plex.existsInPlex(movie)
|
||||
|
||||
res.send(movie)
|
||||
} catch(error) {
|
||||
handleError(error, res)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = movieInfoController;
|
||||
@@ -13,10 +13,11 @@ const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
|
||||
function personInfoController(req, res) {
|
||||
const personId = req.params.id;
|
||||
|
||||
|
||||
tmdb.personInfo(personId)
|
||||
.then((person) => {
|
||||
res.send(person);
|
||||
}).catch((error) => {
|
||||
.then(person => res.send(person.createJsonResponse()))
|
||||
.catch(error => {
|
||||
res.status(404).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
@@ -11,10 +11,9 @@ function fetchAllRequests(req, res) {
|
||||
const id = req.params.id;
|
||||
const { type } = req.query;
|
||||
|
||||
Promise.resolve()
|
||||
.then(() => request.getRequestByIdAndType(id, type))
|
||||
.then((result) => res.send(result))
|
||||
.catch((error) => {
|
||||
request.getRequestByIdAndType(id, type)
|
||||
.then(result => res.send(result))
|
||||
.catch(error => {
|
||||
res.status(404).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const SearchHistory = require('src/searchHistory/searchHistory');
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
const SearchHistory = require('src/searchHistory/searchHistory');
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
const searchHistory = new SearchHistory();
|
||||
@@ -16,20 +16,25 @@ function movieSearchController(req, res) {
|
||||
const user = req.loggedInUser;
|
||||
const { query, page } = req.query;
|
||||
|
||||
Promise.resolve()
|
||||
.then(() => {
|
||||
if (user) {
|
||||
return searchHistory.create(user, query);
|
||||
}
|
||||
return null
|
||||
})
|
||||
.then(() => tmdb.movieSearch(query, page))
|
||||
.then((movies) => {
|
||||
res.send(movies);
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({ success: false, error: error.message });
|
||||
});
|
||||
if (user) {
|
||||
return searchHistory.create(user, query);
|
||||
}
|
||||
|
||||
tmdb.movieSearch(query, page)
|
||||
.then(movieSearchResults => res.send(movieSearchResults))
|
||||
.catch(error => {
|
||||
const { status, message } = error;
|
||||
|
||||
if (status && message) {
|
||||
res.status(error.status).send({ success: false, error: error.message })
|
||||
} else {
|
||||
// TODO log unhandled errors
|
||||
console.log('caugth movie search controller error', error)
|
||||
res.status(500).send({
|
||||
message: `An unexpected error occured while searching movies with query: ${query}`
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = movieSearchController;
|
||||
|
||||
@@ -1,11 +1,18 @@
|
||||
const SearchHistory = require('src/searchHistory/searchHistory');
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
const SearchHistory = require('src/searchHistory/searchHistory');
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
const searchHistory = new SearchHistory();
|
||||
|
||||
function checkAndCreateJsonResponse(result) {
|
||||
if (typeof result['createJsonResponse'] === 'function') {
|
||||
return result.createJsonResponse()
|
||||
}
|
||||
return result
|
||||
}
|
||||
|
||||
/**
|
||||
* Controller: Search for multi (movies, shows and people by query and pagey
|
||||
* @param {Request} req http request variable
|
||||
@@ -16,20 +23,23 @@ function multiSearchController(req, res) {
|
||||
const user = req.loggedInUser;
|
||||
const { query, page } = req.query;
|
||||
|
||||
Promise.resolve()
|
||||
.then(() => {
|
||||
if (user) {
|
||||
return searchHistory.create(user, query);
|
||||
if (user) {
|
||||
searchHistory.create(user, query)
|
||||
}
|
||||
|
||||
return tmdb.multiSearch(query, page)
|
||||
.then(multiSearchResults => res.send(multiSearchResults))
|
||||
.catch(error => {
|
||||
const { status, message } = error;
|
||||
|
||||
if (status && message) {
|
||||
res.status(error.status).send({ success: false, error: error.message })
|
||||
} else {
|
||||
// TODO log unhandled errors
|
||||
console.log('caugth multi search controller error', error)
|
||||
res.status(500).send({ message: `An unexpected error occured while searching with query: ${query}` })
|
||||
}
|
||||
return null
|
||||
})
|
||||
.then(() => tmdb.multiSearch(query, page))
|
||||
.then((result) => {
|
||||
res.send(result);
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = multiSearchController;
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
const SearchHistory = require('src/searchHistory/searchHistory');
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
const SearchHistory = require('src/searchHistory/searchHistory');
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
const searchHistory = new SearchHistory();
|
||||
@@ -16,20 +16,27 @@ function personSearchController(req, res) {
|
||||
const user = req.loggedInUser;
|
||||
const { query, page } = req.query;
|
||||
|
||||
Promise.resolve()
|
||||
.then(() => {
|
||||
if (user) {
|
||||
return searchHistory.create(user, query);
|
||||
}
|
||||
return null
|
||||
})
|
||||
.then(() => tmdb.personSearch(query, page))
|
||||
.then((person) => {
|
||||
res.send(person);
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({ success: false, error: error.message });
|
||||
});
|
||||
if (user) {
|
||||
return searchHistory.create(user, query);
|
||||
}
|
||||
|
||||
tmdb.personSearch(query, page)
|
||||
.then((person) => {
|
||||
res.send(person);
|
||||
})
|
||||
.catch(error => {
|
||||
const { status, message } = error;
|
||||
|
||||
if (status && message) {
|
||||
res.status(error.status).send({ success: false, error: error.message })
|
||||
} else {
|
||||
// TODO log unhandled errors
|
||||
console.log('caugth person search controller error', error)
|
||||
res.status(500).send({
|
||||
message: `An unexpected error occured while searching people with query: ${query}`
|
||||
})
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = personSearchController;
|
||||
|
||||
26
seasoned_api/src/webserver/controllers/show/credits.js
Normal file
26
seasoned_api/src/webserver/controllers/show/credits.js
Normal file
@@ -0,0 +1,26 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
|
||||
const showCreditsController = (req, res) => {
|
||||
const showId = req.params.id;
|
||||
|
||||
tmdb.showCredits(showId)
|
||||
.then(credits => res.send(credits.createJsonResponse()))
|
||||
.catch(error => {
|
||||
const { status, message } = error;
|
||||
|
||||
if (status && message) {
|
||||
res.status(error.status).send({ success: false, error: error.message })
|
||||
} else {
|
||||
// TODO log unhandled errors
|
||||
console.log('caugth show credits controller error', error)
|
||||
res.status(500).send({ message: 'An unexpected error occured while requesting show credits' })
|
||||
}
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = showCreditsController;
|
||||
54
seasoned_api/src/webserver/controllers/show/info.js
Normal file
54
seasoned_api/src/webserver/controllers/show/info.js
Normal file
@@ -0,0 +1,54 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
const Plex = require('src/plex/plex');
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
const plex = new Plex(configuration.get('plex', 'ip'));
|
||||
|
||||
function handleError(error, res) {
|
||||
const { status, message } = error;
|
||||
|
||||
if (status && message) {
|
||||
res.status(error.status).send({ success: false, error: error.message })
|
||||
} else {
|
||||
console.log('caught showinfo controller error', error)
|
||||
res.status(500).send({ message: 'An unexpected error occured while requesting show info'})
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Controller: Retrieve information for a show
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
|
||||
async function showInfoController(req, res) {
|
||||
const showId = req.params.id;
|
||||
let { credits, check_existance } = req.query;
|
||||
|
||||
credits && credits.toLowerCase() === 'true' ? credits = true : credits = false
|
||||
check_existance && check_existance.toLowerCase() === 'true' ? check_existance = true : check_existance = false
|
||||
|
||||
let tmdbQueue = [tmdb.showInfo(showId)]
|
||||
if (credits)
|
||||
tmdbQueue.push(tmdb.showCredits(showId))
|
||||
|
||||
try {
|
||||
const [Show, Credits] = await Promise.all(tmdbQueue)
|
||||
|
||||
const show = Show.createJsonResponse()
|
||||
if (credits)
|
||||
show.credits = Credits.createJsonResponse()
|
||||
|
||||
if (check_existance)
|
||||
show.exists_in_plex = await plex.existsInPlex(show)
|
||||
|
||||
res.send(show)
|
||||
} catch(error) {
|
||||
handleError(error, res)
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = showInfoController;
|
||||
@@ -1,25 +0,0 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
|
||||
/**
|
||||
* Controller: Retrieve nowplaying movies / now airing shows
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
function listSearchController(req, res) {
|
||||
const listname = req.params.listname;
|
||||
const { type, page } = req.query;
|
||||
tmdb.listSearch(listname, type, page)
|
||||
.then((results) => {
|
||||
res.send(results);
|
||||
}).catch((error) => {
|
||||
res.status(404).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = listSearchController;
|
||||
@@ -1,25 +0,0 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
|
||||
/**
|
||||
* Controller: Retrieve information for a movie
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
function readMediaController(req, res) {
|
||||
const mediaId = req.params.mediaId;
|
||||
const { type } = req.query;
|
||||
tmdb.lookup(mediaId, type)
|
||||
.then((movies) => {
|
||||
res.send(movies);
|
||||
}).catch((error) => {
|
||||
res.status(404).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = readMediaController;
|
||||
@@ -1,31 +0,0 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const Cache = require('src/tmdb/cache');
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
|
||||
const cache = new Cache();
|
||||
const tmdb = new TMDB(cache, configuration.get('tmdb', 'apiKey'));
|
||||
|
||||
/**
|
||||
* Controller: Search for movies by query, page and optional type
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
function searchMediaController(req, res) {
|
||||
const { query, page, type } = req.query;
|
||||
|
||||
Promise.resolve()
|
||||
.then(() => tmdb.search(query, page, type))
|
||||
.then((movies) => {
|
||||
if (movies !== undefined || movies.length > 0) {
|
||||
res.send(movies);
|
||||
} else {
|
||||
res.status(404).send({ success: false, error: 'Search query did not return any results.' });
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = searchMediaController;
|
||||
Reference in New Issue
Block a user