19
seasoned_api/src/media_classes/media.js
Normal file
19
seasoned_api/src/media_classes/media.js
Normal file
@@ -0,0 +1,19 @@
|
||||
|
||||
class Media {
|
||||
constructor(title, year, type) {
|
||||
this.title = title;
|
||||
this.year = year;
|
||||
this.type = type;
|
||||
}
|
||||
|
||||
toString() {
|
||||
return `N: ${this.title} | Y: ${this.year} | T: ${this.type}`;
|
||||
}
|
||||
|
||||
print() {
|
||||
/* eslint-disable no-console */
|
||||
console.log(this.toString());
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Media;
|
||||
@@ -1,21 +0,0 @@
|
||||
class Movie {
|
||||
constructor(title, year, type) {
|
||||
this.id = undefined;
|
||||
this.title = title;
|
||||
this.year = year;
|
||||
this.type = type;
|
||||
this.release_date = undefined;
|
||||
this.summary = undefined;
|
||||
this.rating = undefined;
|
||||
this.poster_path = undefined;
|
||||
this.background = undefined;
|
||||
this.genre = undefined;
|
||||
this.date_added = undefined;
|
||||
|
||||
this.mediaInfo = undefined;
|
||||
|
||||
this.matchedInPlex = false;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Movie;
|
||||
22
seasoned_api/src/media_classes/plex.js
Normal file
22
seasoned_api/src/media_classes/plex.js
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
const Media = require('src/media_classes/media');
|
||||
|
||||
class Plex extends Media {
|
||||
constructor(title, year, type, summary, poster_path, background_path, added, seasons, episodes) {
|
||||
super(title, year, type);
|
||||
|
||||
this.summary = summary;
|
||||
this.poster_path = poster_path;
|
||||
this.background_path = background_path;
|
||||
this.added = added;
|
||||
|
||||
this.seasons = seasons;
|
||||
this.episodes = episodes;
|
||||
}
|
||||
|
||||
print() {
|
||||
super.print();
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Plex;
|
||||
@@ -1,22 +0,0 @@
|
||||
class Movie {
|
||||
constructor(title, year, type) {
|
||||
this.id = undefined;
|
||||
this.title = title;
|
||||
this.year = year;
|
||||
this.type = type;
|
||||
this.release_date = undefined;
|
||||
this.summary = undefined;
|
||||
this.rating = undefined;
|
||||
this.poster = undefined;
|
||||
this.background = undefined;
|
||||
this.genre = undefined;
|
||||
this.added = undefined;
|
||||
|
||||
this.seasons = undefined;
|
||||
this.episodes = undefined;
|
||||
|
||||
this.matchedInPlex = false;
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = Movie;
|
||||
33
seasoned_api/src/media_classes/tmdb.js
Normal file
33
seasoned_api/src/media_classes/tmdb.js
Normal file
@@ -0,0 +1,33 @@
|
||||
|
||||
const Media = require('src/media_classes/media');
|
||||
|
||||
class TMDB extends Media {
|
||||
// constructor(...args) {
|
||||
constructor(title, year, type, id, summary, poster_path, background_path, popularity, score, release_status, tagline, seasons, episodes) {
|
||||
super(title, year, type);
|
||||
|
||||
this.id = id;
|
||||
this.summary = summary;
|
||||
this.poster_path = poster_path;
|
||||
this.background_path = background_path;
|
||||
this.popularity = popularity;
|
||||
this.score = score;
|
||||
|
||||
this.release_status = release_status;
|
||||
this.tagline = tagline;
|
||||
|
||||
this.seasons = seasons;
|
||||
this.episodes = episodes;
|
||||
}
|
||||
|
||||
toString() {
|
||||
return `${super.toString()} | ID: ${this.id}`;
|
||||
}
|
||||
|
||||
print() {
|
||||
/* eslint-disable no-console */
|
||||
console.log(this.toString());
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = TMDB;
|
||||
@@ -1,48 +1,24 @@
|
||||
const Movie = require('src/media_classes/movie');
|
||||
const Show = require('src/media_classes/show');
|
||||
const Plex = require('src/media_classes/plex');
|
||||
|
||||
function convertPlexToSeasoned(plexObject) {
|
||||
function translateAdded(date_string) {
|
||||
return new Date(date_string * 1000);
|
||||
}
|
||||
|
||||
const mediaType = plexObject.type;
|
||||
// There are many diff types of content, we only want to look at movies and tv shows
|
||||
if (mediaType === 'movie') {
|
||||
const movie = new Movie(plexObject.title, plexObject.year, mediaType);
|
||||
function convertPlexToSeasoned(plex) {
|
||||
const title = plex.title;
|
||||
const year = plex.year;
|
||||
const type = plex.type;
|
||||
const summary = plex.summary;
|
||||
const poster_path = plex.thumb;
|
||||
const background_path = plex.art;
|
||||
const added = translateAdded(plex.addedAt);
|
||||
// const genre = plex.genre;
|
||||
const seasons = plex.childCount;
|
||||
const episodes = plex.leafCount;
|
||||
|
||||
movie.summary = plexObject.summary;
|
||||
movie.rating = plexObject.rating;
|
||||
movie.poster = plexObject.thumb;
|
||||
movie.background = plexObject.art;
|
||||
movie.genre = plexObject.genre;
|
||||
movie.added = new Date(plexObject.addedAt * 1000);
|
||||
|
||||
movie.mediaInfo = plexObject.Media;
|
||||
|
||||
// Don't need a for-loop when we have it in json format
|
||||
file_sizes = []
|
||||
for (let movie_info of plexObject.Media) {
|
||||
for (let file_data of movie_info.Part) {
|
||||
file_sizes.push(file_data.size)
|
||||
}
|
||||
}
|
||||
movie.size = file_sizes;
|
||||
|
||||
return movie;
|
||||
}
|
||||
else if (mediaType === 'show') {
|
||||
const show = new Show(plexObject.title, plexObject.year, mediaType);
|
||||
|
||||
show.summary = plexObject.summary;
|
||||
show.rating = plexObject.rating;
|
||||
show.poster = plexObject.thumb;
|
||||
show.background = plexObject.art;
|
||||
show.genre = plexObject.genre;
|
||||
show.added = new Date(plexObject.addedAt * 1000);
|
||||
|
||||
show.seasons = plexObject.childCount;
|
||||
show.episodes = plexObject.leafCount;
|
||||
|
||||
return show;
|
||||
}
|
||||
const seasoned = new Plex(title, year, type, summary, poster_path, background_path, added, seasons, episodes);
|
||||
// seasoned.print();
|
||||
return seasoned;
|
||||
}
|
||||
|
||||
module.exports = convertPlexToSeasoned;
|
||||
|
||||
@@ -1,57 +1,39 @@
|
||||
const Movie = require('src/media_classes/movie');
|
||||
const Show = require('src/media_classes/show');
|
||||
|
||||
function convertTmdbToSeasoned(tmdbObject, strictType=undefined) {
|
||||
// TODO create a default fallback class to set the when falls to else as both are undefined
|
||||
if (tmdbObject.media_type !== undefined)
|
||||
var mediaType = tmdbObject.media_type;
|
||||
else if (strictType !== undefined)
|
||||
var mediaType = strictType;
|
||||
else
|
||||
var mediaType = 'movie';
|
||||
const TMDB = require('src/media_classes/tmdb');
|
||||
|
||||
// There are many diff types of content, we only want to look at movies and tv shows
|
||||
if (mediaType === 'movie') {
|
||||
const year = new Date(tmdbObject.release_date).getFullYear();
|
||||
function translateYear(tmdbReleaseDate) {
|
||||
return new Date(tmdbReleaseDate).getFullYear();
|
||||
}
|
||||
|
||||
if (tmdbObject.title !== undefined) {
|
||||
var title = tmdbObject.title;
|
||||
} else if (tmdbObject.name !== undefined) {
|
||||
var title = tmdbObject.name;
|
||||
}
|
||||
function translateGenre(tmdbGenres) {
|
||||
return tmdbGenres.map(genre => genre.name);
|
||||
}
|
||||
|
||||
const movie = new Movie(title, year, mediaType);
|
||||
function convertTmdbToSeasoned(tmdb, manualType = undefined) {
|
||||
const title = tmdb.title || tmdb.name;
|
||||
const year = translateYear(tmdb.release_date || tmdb.first_air_date);
|
||||
const type = tmdb.media_type || manualType;
|
||||
|
||||
movie.id = tmdbObject.id;
|
||||
movie.summary = tmdbObject.overview;
|
||||
movie.rating = tmdbObject.vote_average;
|
||||
movie.poster_path = tmdbObject.poster_path;
|
||||
movie.background_path = tmdbObject.backdrop_path;
|
||||
movie.genre = tmdbObject.genre_ids;
|
||||
const id = tmdb.id;
|
||||
const summary = tmdb.overview;
|
||||
const poster_path = tmdb.poster_path;
|
||||
const background_path = tmdb.backdrop_path;
|
||||
const popularity = tmdb.popularity;
|
||||
const score = tmdb.vote_average;
|
||||
// const genres = translateGenre(tmdb.genres);
|
||||
const release_status = tmdb.status;
|
||||
const tagline = tmdb.tagline;
|
||||
|
||||
movie.popularity = tmdbObject.popularity;
|
||||
movie.vote_count = tmdbObject.vote_count;
|
||||
const seasons = tmdb.number_of_seasons;
|
||||
const episodes = tmdb.episodes;
|
||||
|
||||
return movie;
|
||||
}
|
||||
else if (mediaType === 'tv' || mediaType === 'show') {
|
||||
const year = new Date(tmdbObject.first_air_date).getFullYear();
|
||||
const seasoned = new TMDB(
|
||||
title, year, type, id, summary, poster_path, background_path,
|
||||
popularity, score, release_status, tagline, seasons, episodes,
|
||||
);
|
||||
|
||||
const show = new Show(tmdbObject.name, year, 'show');
|
||||
|
||||
show.id = tmdbObject.id;
|
||||
show.summary = tmdbObject.overview;
|
||||
show.rating = tmdbObject.vote_average;
|
||||
show.poster_path = tmdbObject.poster_path;
|
||||
show.background_path = tmdbObject.backdrop_path;
|
||||
show.genre = tmdbObject.genre_ids;
|
||||
|
||||
show.popularity = tmdbObject.popularity;
|
||||
show.vote_count = tmdbObject.vote_count;
|
||||
|
||||
return show;
|
||||
}
|
||||
// seasoned.print()
|
||||
return seasoned;
|
||||
}
|
||||
|
||||
module.exports = convertTmdbToSeasoned;
|
||||
|
||||
|
||||
@@ -1,172 +1,134 @@
|
||||
const moviedb = require('moviedb');
|
||||
const convertTmdbToSeasoned = require('src/tmdb/convertTmdbToSeasoned');
|
||||
var methodTypes = { 'movie': 'searchMovie', 'show': 'searchTv', 'multi': 'searchMulti', 'movieInfo': 'movieInfo',
|
||||
'tvInfo': 'tvInfo', 'upcomingMovies': 'miscUpcomingMovies', 'discoverMovie': 'discoverMovie',
|
||||
'discoverShow': 'discoverTv', 'popularMovies': 'miscPopularMovies', 'popularShows': 'miscPopularTvs',
|
||||
'nowPlayingMovies': 'miscNowPlayingMovies', 'nowAiringShows': 'tvOnTheAir', 'movieSimilar': 'movieSimilar',
|
||||
'showSimilar': 'tvSimilar' };
|
||||
|
||||
|
||||
const TYPE_LIST = ['upcoming', 'discover', 'popular', 'nowplaying', 'similar']
|
||||
const TMDB_TYPE_LIST = {
|
||||
'upcomingmovie': 'miscUpcomingMovies', 'discovermovie': 'discoverMovie',
|
||||
'discovershow': 'discoverTv', 'popularmovie': 'miscPopularMovies',
|
||||
'popularshow': 'miscPopularTvs', 'nowplayingmovie': 'miscNowPlayingMovies',
|
||||
'nowplayingshow': 'tvOnTheAir', 'similarmovie': 'movieSimilar', 'similarshow': 'tvSimilar',
|
||||
const TMDB_METHODS = {
|
||||
upcoming: { movie: 'miscUpcomingMovies' },
|
||||
discover: { movie: 'discoverMovie', show: 'discoverTv' },
|
||||
popular: { movie: 'miscPopularMovies', show: 'miscPopularTvs' },
|
||||
nowplaying: { movie: 'miscNowPlayingMovies', show: 'tvOnTheAir' },
|
||||
similar: { movie: 'movieSimilar', show: 'tvSimilar' },
|
||||
search: { movie: 'searchMovie', show: 'searchTv', multi: 'searchMulti' },
|
||||
info: { movie: 'movieInfo', show: 'tvInfo' },
|
||||
};
|
||||
|
||||
class TMDB {
|
||||
constructor(cache, apiKey, tmdbLibrary) {
|
||||
this.cache = cache
|
||||
this.tmdbLibrary = tmdbLibrary || moviedb(apiKey);
|
||||
this.cacheTags = {
|
||||
'search': 'se',
|
||||
'info': 'i',
|
||||
'upcoming': 'u',
|
||||
'discover': 'd',
|
||||
'popular': 'p',
|
||||
'nowplaying': 'n',
|
||||
'similar': 'si',
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrive list of of items from TMDB matching the query and/or type given.
|
||||
* @param {queryText, page, type} the page number to specify in the request for discover,
|
||||
* @returns {Promise} dict with query results, current page and total_pages
|
||||
*/
|
||||
search(text, page = 1, type = 'multi') {
|
||||
const query = { 'query': text, 'page': page };
|
||||
const cacheKey = `${this.cacheTags.search}:${page}:${type}:${text}`;
|
||||
return Promise.resolve()
|
||||
.then(() => this.cache.get(cacheKey))
|
||||
.catch(() => this.tmdb(methodTypes[type], query))
|
||||
.catch(() => { throw new Error('Could not search for movies/shows at tmdb.'); })
|
||||
.then((response) => this.cache.set(cacheKey, response))
|
||||
.then((response) => this.mapResults(response))
|
||||
.catch((error) => { throw new Error(error); })
|
||||
.then(([mappedResults, pagenumber, totalpages, total_results]) => {
|
||||
return {'results': mappedResults, 'page': pagenumber, 'total_results': total_results, 'total_pages': totalpages}
|
||||
})
|
||||
}
|
||||
constructor(cache, apiKey, tmdbLibrary) {
|
||||
this.cache = cache;
|
||||
this.tmdbLibrary = tmdbLibrary || moviedb(apiKey);
|
||||
this.cacheTags = {
|
||||
search: 'se',
|
||||
info: 'i',
|
||||
upcoming: 'u',
|
||||
discover: 'd',
|
||||
popular: 'p',
|
||||
nowplaying: 'n',
|
||||
similar: 'si',
|
||||
};
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a specific movie by id from TMDB.
|
||||
* @param {Number} identifier of the movie you want to retrieve
|
||||
* @returns {Promise} succeeds if movie was found
|
||||
*/
|
||||
lookup(identifier, type = 'movie') {
|
||||
const query = { id: identifier };
|
||||
const cacheKey = `${this.cacheTags.info}:${type}:${identifier}`;
|
||||
return Promise.resolve()
|
||||
.then(() => this.cache.get(cacheKey))
|
||||
.catch(() => this.tmdb(this.tmdbMethod('info', type), query))
|
||||
.catch(() => { throw new Error('Could not find a movie with that id.'); })
|
||||
.then(response => this.cache.set(cacheKey, response))
|
||||
.then((response) => {
|
||||
try {
|
||||
return convertTmdbToSeasoned(response, type);
|
||||
} catch (parseError) {
|
||||
console.error(parseError);
|
||||
throw new Error('Could not parse movie.');
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrive list of of items from TMDB matching the query and/or type given.
|
||||
* @param {queryText, page, type} the page number to specify in the request for discover,
|
||||
* @returns {Promise} dict with query results, current page and total_pages
|
||||
*/
|
||||
search(text, page = 1, type = 'multi') {
|
||||
const query = { query: text, page };
|
||||
const cacheKey = `${this.cacheTags.search}:${page}:${type}:${text}`;
|
||||
return Promise.resolve()
|
||||
.then(() => this.cache.get(cacheKey))
|
||||
.catch(() => this.tmdb(this.tmdbMethod('search', type), query))
|
||||
.catch(() => { throw new Error('Could not search for movies/shows at tmdb.'); })
|
||||
.then(response => this.cache.set(cacheKey, response))
|
||||
.then(response => this.mapResults(response, type))
|
||||
.catch((error) => { throw new Error(error); })
|
||||
.then(([mappedResults, pagenumber, totalpages, total_results]) => ({
|
||||
results: mappedResults, page: pagenumber, total_results, total_pages: totalpages,
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* Retrieve a specific movie by id from TMDB.
|
||||
* @param {Number} identifier of the movie you want to retrieve
|
||||
* @returns {Promise} succeeds if movie was found
|
||||
*/
|
||||
lookup(identifier, queryType = 'movie') {
|
||||
var type, tmdbType;
|
||||
if (queryType === 'movie' || queryType === 'movieInfo') { type = 'movie', tmdbType = 'movieInfo' }
|
||||
else if (queryType === 'show' || queryType === 'tvInfo') { type = 'show', tmdbType = 'tvInfo' }
|
||||
else {
|
||||
return Promise.resolve()
|
||||
.then(() => {
|
||||
throw new Error('Invalid type declaration.')
|
||||
})
|
||||
}
|
||||
const query = { id: identifier };
|
||||
const cacheKey = `${this.cacheTags.lookup}:${type}:${identifier}`;
|
||||
return Promise.resolve()
|
||||
.then(() => this.cache.get(cacheKey))
|
||||
.catch(() => this.tmdb(tmdbType, query))
|
||||
.catch(() => { throw new Error('Could not find a movie with that id.'); })
|
||||
.then((response) => this.cache.set(cacheKey, response))
|
||||
.then((response) => {
|
||||
try {
|
||||
return convertTmdbToSeasoned(response, type);
|
||||
} catch (parseError) {
|
||||
throw new Error('Could not parse movie.');
|
||||
}
|
||||
});
|
||||
}
|
||||
/**
|
||||
* Fetches a given list from tmdb.
|
||||
* @param {listName} List we want to fetch.
|
||||
* @param {type} The to specify in the request for discover (default 'movie').
|
||||
* @param {id} When finding similar a id can be added to query
|
||||
* @param {page} Page number we want to fetch.
|
||||
* @returns {Promise} dict with query results, current page and total_pages
|
||||
*/
|
||||
listSearch(listName, type = 'movie', id, page = '1') {
|
||||
const params = { id, page };
|
||||
const cacheKey = `${this.cacheTags[listName]}:${type}:${id}:${page}`;
|
||||
return Promise.resolve()
|
||||
.then(() => this.cache.get(cacheKey))
|
||||
.catch(() => this.tmdb(this.tmdbMethod(listName, type), params))
|
||||
.then(response => this.cache.set(cacheKey, response))
|
||||
.then(response => this.mapResults(response, type))
|
||||
.catch((error) => { throw new Error(error); })
|
||||
.then(([mappedResults, pagenumber, totalpages, total_results]) => ({
|
||||
results: mappedResults, page: pagenumber, total_pages: totalpages, total_results,
|
||||
}));
|
||||
}
|
||||
|
||||
/**
|
||||
* Verifies that a list_name corresponds to a tmdb list and calls the tmdb
|
||||
* api with list name and paramters.
|
||||
* @param {list_name} The name of a list we want to search for.
|
||||
* @param {media_type} The type declared in listSearch.
|
||||
* @param {params} Params is page and id given as parameters in listSearch.
|
||||
* @returns {Promise} dict with raw tmdb results.
|
||||
*/
|
||||
searchTmdbList(list_name, media_type, params) {
|
||||
return new Promise((resolve, reject) => {
|
||||
if (TYPE_LIST.includes(list_name) && ['movie', 'show'].includes(media_type)) {
|
||||
const searchQuery = list_name.toLowerCase() + media_type.toLowerCase();
|
||||
const tmdbList = TMDB_TYPE_LIST[searchQuery]
|
||||
|
||||
return Promise.resolve()
|
||||
.then(() => this.tmdb(tmdbList, params))
|
||||
.then((response) => {
|
||||
resolve(response)
|
||||
})
|
||||
.catch(() => {
|
||||
return reject('Error while fetching from tmdb list.')
|
||||
})
|
||||
}
|
||||
return reject('Did not find tmdb list matching query.')
|
||||
})
|
||||
}
|
||||
tmdbMethod(apiMethod, type) {
|
||||
const method = TMDB_METHODS[apiMethod][type];
|
||||
if (method !== undefined) return method;
|
||||
throw new Error('Could not find tmdb api method.');
|
||||
}
|
||||
|
||||
/**
|
||||
* Maps our response from tmdb api to a movie/show object.
|
||||
* @param {response} JSON response from tmdb.
|
||||
* @param {type} The type declared in listSearch.
|
||||
* @returns {Promise} dict with tmdb results, mapped as movie/show objects.
|
||||
*/
|
||||
mapResults(response, type) {
|
||||
return Promise.resolve()
|
||||
.then(() => {
|
||||
const mappedResults = response.results.map((result) => {
|
||||
return convertTmdbToSeasoned(result, type)
|
||||
})
|
||||
return [mappedResults, response.page, response.total_pages, response.total_results]
|
||||
})
|
||||
.catch((error) => { throw new Error(error)})
|
||||
/**
|
||||
* Maps our response from tmdb api to a movie/show object.
|
||||
* @param {response} JSON response from tmdb.
|
||||
* @param {type} The type declared in listSearch.
|
||||
* @returns {Promise} dict with tmdb results, mapped as movie/show objects.
|
||||
*/
|
||||
mapResults(response, type) {
|
||||
return Promise.resolve()
|
||||
.then(() => {
|
||||
const mappedResults = response.results.map(result => convertTmdbToSeasoned(result, type));
|
||||
return [mappedResults, response.page, response.total_pages, response.total_results];
|
||||
})
|
||||
.catch((error) => { throw new Error(error); });
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
tmdb(method, argument) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const callback = (error, reponse) => {
|
||||
if (error) {
|
||||
return reject(error);
|
||||
}
|
||||
return resolve(reponse);
|
||||
};
|
||||
|
||||
/**
|
||||
* Fetches a given list from tmdb.
|
||||
* @param {list_name} List we want to fetch.
|
||||
* @param {media_type} The to specify in the request for discover (default 'movie').
|
||||
* @param {id} When finding similar a id can be added to query
|
||||
* @param {page} Page number we want to fetch.
|
||||
* @returns {Promise} dict with query results, current page and total_pages
|
||||
*/
|
||||
listSearch(list_name, media_type='movie', id, page='1') {
|
||||
const params = {'id': id, 'page': page}
|
||||
const cacheKey = `${this.cacheTags[list_name]}:${media_type}:${id}:${page}`;
|
||||
return Promise.resolve()
|
||||
.then(() => this.cache.get(cacheKey))
|
||||
.catch(() => this.searchTmdbList(list_name, media_type, params))
|
||||
.then((response) => this.cache.set(cacheKey, response))
|
||||
.then((response) => this.mapResults(response, media_type))
|
||||
.catch((error) => { throw new Error(error); })
|
||||
.then(([mappedResults, pagenumber, totalpages, total_results]) => {
|
||||
return {'results': mappedResults, 'page': pagenumber, 'total_pages': totalpages, 'total_results': total_results}
|
||||
})
|
||||
}
|
||||
|
||||
tmdb(method, argument) {
|
||||
return new Promise((resolve, reject) => {
|
||||
const callback = (error, reponse) => {
|
||||
if (error) {
|
||||
return reject(error);
|
||||
}
|
||||
resolve(reponse);
|
||||
};
|
||||
|
||||
if (!argument) {
|
||||
this.tmdbLibrary[method](callback);
|
||||
} else {
|
||||
this.tmdbLibrary[method](argument, callback);
|
||||
}
|
||||
})
|
||||
}
|
||||
if (!argument) {
|
||||
this.tmdbLibrary[method](callback);
|
||||
} else {
|
||||
this.tmdbLibrary[method](argument, callback);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
|
||||
module.exports = TMDB;
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -8,7 +8,7 @@ describe('As a user I want a forbidden error if the token is malformed', () => {
|
||||
|
||||
it('should return 401', () =>
|
||||
request(app)
|
||||
.get('/api/v1/plex/requests/all')
|
||||
.get('/api/v1/pirate/search?query=test')
|
||||
.set('Authorization', 'maLfOrMed TOKEN')
|
||||
.expect(401)
|
||||
.then(response => assert.equal(response.body.error, 'You must be logged in.'))
|
||||
|
||||
@@ -10,7 +10,7 @@ describe('As a user I want to request a movie', () => {
|
||||
|
||||
it('should return 200 when item is requested', () =>
|
||||
request(app)
|
||||
.post('/api/v1/plex/request/31749')
|
||||
.post('/api/v1/plex/request/329865')
|
||||
.set('Authorization', createToken('test_user', 'secret'))
|
||||
.expect(200)
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user