Automaticly fixable eslint issues, mostly 3 -> 2 space indentation

This commit is contained in:
2022-08-19 10:41:44 +02:00
parent 11fb803838
commit 2aace85418
62 changed files with 498 additions and 375 deletions

4
src/cache/redis.js vendored
View File

@@ -21,11 +21,11 @@ try {
console.error("Unable to connect to redis, setting up redis-mock."); console.error("Unable to connect to redis, setting up redis-mock.");
client = { client = {
get: function () { get() {
console.log("redis-dummy get", arguments[0]); console.log("redis-dummy get", arguments[0]);
return Promise.resolve(); return Promise.resolve();
}, },
set: function () { set() {
console.log("redis-dummy set", arguments[0]); console.log("redis-dummy set", arguments[0]);
return Promise.resolve(); return Promise.resolve();
} }

View File

@@ -1,15 +1,15 @@
class EnvironmentVariables { class EnvironmentVariables {
constructor(variables) { constructor(variables) {
this.variables = variables || process.env; this.variables = variables || process.env;
} }
get(variable) { get(variable) {
return this.variables[variable]; return this.variables[variable];
} }
has(variable) { has(variable) {
return this.get(variable) !== undefined; return this.get(variable) !== undefined;
} }
} }
module.exports = EnvironmentVariables; module.exports = EnvironmentVariables;

View File

@@ -1,49 +1,53 @@
const Filters = require('./filters.js'); const Filters = require("./filters.js");
const EnvironmentVariables = require('./environmentVariables.js'); const EnvironmentVariables = require("./environmentVariables.js");
class Field { class Field {
constructor(rawValue, environmentVariables) { constructor(rawValue, environmentVariables) {
this.rawValue = rawValue; this.rawValue = rawValue;
this.filters = new Filters(rawValue); this.filters = new Filters(rawValue);
this.valueWithoutFilters = this.filters.removeFiltersFromValue(); this.valueWithoutFilters = this.filters.removeFiltersFromValue();
this.environmentVariables = new EnvironmentVariables(environmentVariables); this.environmentVariables = new EnvironmentVariables(environmentVariables);
} }
get value() {
if (this.filters.isEmpty()) {
return this.valueWithoutFilters;
}
if (this.filters.has('base64') && !this.filters.has('env')) {
return Field.base64Decode(this.valueWithoutFilters);
}
if (this.environmentVariables.has(this.valueWithoutFilters) &&
this.environmentVariables.get(this.valueWithoutFilters) === '') {
return undefined;
}
if (!this.filters.has('base64') && this.filters.has('env')) {
if (this.environmentVariables.has(this.valueWithoutFilters)) {
return this.environmentVariables.get(this.valueWithoutFilters);
}
return undefined;
}
if (this.filters.has('env') && this.filters.has('base64')) {
if (this.environmentVariables.has(this.valueWithoutFilters)) {
const encodedEnvironmentVariable = this.environmentVariables.get(this.valueWithoutFilters);
return Field.base64Decode(encodedEnvironmentVariable);
}
return undefined;
}
get value() {
if (this.filters.isEmpty()) {
return this.valueWithoutFilters; return this.valueWithoutFilters;
} }
static base64Decode(string) { if (this.filters.has("base64") && !this.filters.has("env")) {
return new Buffer(string, 'base64').toString('utf-8'); return Field.base64Decode(this.valueWithoutFilters);
} }
if (
this.environmentVariables.has(this.valueWithoutFilters) &&
this.environmentVariables.get(this.valueWithoutFilters) === ""
) {
return undefined;
}
if (!this.filters.has("base64") && this.filters.has("env")) {
if (this.environmentVariables.has(this.valueWithoutFilters)) {
return this.environmentVariables.get(this.valueWithoutFilters);
}
return undefined;
}
if (this.filters.has("env") && this.filters.has("base64")) {
if (this.environmentVariables.has(this.valueWithoutFilters)) {
const encodedEnvironmentVariable = this.environmentVariables.get(
this.valueWithoutFilters
);
return Field.base64Decode(encodedEnvironmentVariable);
}
return undefined;
}
return this.valueWithoutFilters;
}
static base64Decode(string) {
return new Buffer(string, "base64").toString("utf-8");
}
} }
module.exports = Field; module.exports = Field;

View File

@@ -1,34 +1,34 @@
class Filters { class Filters {
constructor(value) { constructor(value) {
this.value = value; this.value = value;
this.delimiter = '|'; this.delimiter = "|";
} }
get filters() { get filters() {
return this.value.split(this.delimiter).slice(0, -1); return this.value.split(this.delimiter).slice(0, -1);
} }
isEmpty() { isEmpty() {
return !this.hasValidType() || this.value.length === 0; return !this.hasValidType() || this.value.length === 0;
} }
has(filter) { has(filter) {
return this.filters.includes(filter); return this.filters.includes(filter);
} }
hasValidType() { hasValidType() {
return (typeof this.value === 'string'); return typeof this.value === "string";
} }
removeFiltersFromValue() { removeFiltersFromValue() {
if (this.hasValidType() === false) { if (this.hasValidType() === false) {
return this.value; return this.value;
} }
let filtersCombined = this.filters.join(this.delimiter); let filtersCombined = this.filters.join(this.delimiter);
filtersCombined += this.filters.length >= 1 ? this.delimiter : ''; filtersCombined += this.filters.length >= 1 ? this.delimiter : "";
return this.value.replace(filtersCombined, ''); return this.value.replace(filtersCombined, "");
} }
} }
module.exports = Filters; module.exports = Filters;

View File

@@ -1,9 +1,8 @@
class GitRepository { class GitRepository {
static dumpHook(body) { static dumpHook(body) {
/* eslint-disable no-console */ /* eslint-disable no-console */
console.log(body); console.log(body);
} }
} }
module.exports = GitRepository; module.exports = GitRepository;

View File

@@ -1,19 +1,18 @@
class Media { class Media {
constructor(title, year, type) { constructor(title, year, type) {
this.title = title; this.title = title;
this.year = year; this.year = year;
this.type = type; this.type = type;
} }
toString() { toString() {
return `N: ${this.title} | Y: ${this.year} | T: ${this.type}`; return `N: ${this.title} | Y: ${this.year} | T: ${this.type}`;
} }
print() { print() {
/* eslint-disable no-console */ /* eslint-disable no-console */
console.log(this.toString()); console.log(this.toString());
} }
} }
module.exports = Media; module.exports = Media;

View File

@@ -1,15 +1,15 @@
class MediaInfo { class MediaInfo {
constructor() { constructor() {
this.duration = undefined; this.duration = undefined;
this.height = undefined; this.height = undefined;
this.width = undefined; this.width = undefined;
this.bitrate = undefined; this.bitrate = undefined;
this.resolution = undefined; this.resolution = undefined;
this.framerate = undefined; this.framerate = undefined;
this.protocol = undefined; this.protocol = undefined;
this.container = undefined; this.container = undefined;
this.audioCodec = undefined; this.audioCodec = undefined;
} }
} }
module.exports = MediaInfo; module.exports = MediaInfo;

View File

@@ -1,12 +1,12 @@
class Player { class Player {
constructor(device, address) { constructor(device, address) {
this.device = device; this.device = device;
this.ip = address; this.ip = address;
this.platform = undefined; this.platform = undefined;
this.product = undefined; this.product = undefined;
this.title = undefined; this.title = undefined;
this.state = undefined; this.state = undefined;
} }
} }
module.exports = Player; module.exports = Player;

View File

@@ -1,8 +1,8 @@
class User { class User {
constructor(id, title) { constructor(id, title) {
this.id = id; this.id = id;
this.title = title; this.title = title;
} }
} }
module.exports = User; module.exports = User;

View File

@@ -24,7 +24,7 @@ const sendSMS = message => {
} }
}, },
function (err, r, body) { function (err, r, body) {
console.log(err ? err : body); console.log(err || body);
console.log("sms provider response:", body); console.log("sms provider response:", body);
resolve(); resolve();
} }

View File

@@ -92,8 +92,8 @@ async function AddMagnet(magnet, name, tmdb_id) {
"INSERT INTO requested_torrent(magnet,torrent_name,tmdb_id) \ "INSERT INTO requested_torrent(magnet,torrent_name,tmdb_id) \
VALUES (?,?,?)"; VALUES (?,?,?)";
let response = database.run(insert_query, [magnet, name, tmdb_id]); const response = database.run(insert_query, [magnet, name, tmdb_id]);
console.log("Response from requsted_torrent insert: " + response); console.log(`Response from requsted_torrent insert: ${response}`);
resolve({ success: true }); resolve({ success: true });
}) })

View File

@@ -5,10 +5,10 @@ function translateAdded(date_string) {
} }
function convertPlexToSeasoned(plex) { function convertPlexToSeasoned(plex) {
const title = plex.title; const { title } = plex;
const year = plex.year; const { year } = plex;
const type = plex.type; const { type } = plex;
const summary = plex.summary; const { summary } = plex;
const poster_path = plex.thumb; const poster_path = plex.thumb;
const background_path = plex.art; const background_path = plex.art;
const added = translateAdded(plex.addedAt); const added = translateAdded(plex.addedAt);

View File

@@ -1,25 +1,25 @@
class mailTemplate { class mailTemplate {
constructor(mediaItem) { constructor(mediaItem) {
this.mediaItem = mediaItem; this.mediaItem = mediaItem;
this.posterURL = 'https://image.tmdb.org/t/p/w600'; this.posterURL = "https://image.tmdb.org/t/p/w600";
} }
toText() { toText() {
return `${this.mediaItem.title} (${this.mediaItem.year})`; // plain text body return `${this.mediaItem.title} (${this.mediaItem.year})`; // plain text body
} }
toHTML() { toHTML() {
const info = { const info = {
name: this.mediaItem.title, name: this.mediaItem.title,
year: `(${this.mediaItem.year})`, year: `(${this.mediaItem.year})`,
poster: this.posterURL + this.mediaItem.poster, poster: this.posterURL + this.mediaItem.poster
}; };
return ` return `
<h1>${info.name} ${info.year}</h1> <h1>${info.name} ${info.year}</h1>
<img src="${info.poster}"> <img src="${info.poster}">
`; `;
} }
} }
module.exports = mailTemplate; module.exports = mailTemplate;

View File

@@ -11,23 +11,22 @@ const sanitize = string => string.toLowerCase().replace(/[^\w]/gi, "");
function fixedEncodeURIComponent(str) { function fixedEncodeURIComponent(str) {
return encodeURIComponent(str).replace(/[!'()*]/g, function (c) { return encodeURIComponent(str).replace(/[!'()*]/g, function (c) {
return "%" + c.charCodeAt(0).toString(16).toUpperCase(); return `%${c.charCodeAt(0).toString(16).toUpperCase()}`;
}); });
} }
const matchingTitleAndYear = (plex, tmdb) => { const matchingTitleAndYear = (plex, tmdb) => {
let matchingTitle, matchingYear; let matchingTitle;
let matchingYear;
if (plex["title"] != null && tmdb["title"] != null) { if (plex.title != null && tmdb.title != null) {
const plexTitle = sanitize(plex.title); const plexTitle = sanitize(plex.title);
const tmdbTitle = sanitize(tmdb.title); const tmdbTitle = sanitize(tmdb.title);
matchingTitle = plexTitle == tmdbTitle; matchingTitle = plexTitle == tmdbTitle;
matchingTitle = matchingTitle matchingTitle = matchingTitle || plexTitle.startsWith(tmdbTitle);
? matchingTitle
: plexTitle.startsWith(tmdbTitle);
} else matchingTitle = false; } else matchingTitle = false;
if (plex["year"] != null && tmdb["year"] != null) if (plex.year != null && tmdb.year != null)
matchingYear = plex.year == tmdb.year; matchingYear = plex.year == tmdb.year;
else matchingYear = false; else matchingYear = false;
@@ -35,12 +34,12 @@ const matchingTitleAndYear = (plex, tmdb) => {
}; };
const successfullResponse = response => { const successfullResponse = response => {
if (response && response["MediaContainer"]) return response; if (response && response.MediaContainer) return response;
if ( if (
response == null || response == null ||
response["status"] == null || response.status == null ||
response["statusText"] == null response.statusText == null
) { ) {
throw Error("Unable to decode response"); throw Error("Unable to decode response");
} }
@@ -49,9 +48,8 @@ const successfullResponse = response => {
if (status === 200) { if (status === 200) {
return response.json(); return response.json();
} else {
throw { message: statusText, status: status };
} }
throw { message: statusText, status };
}; };
class Plex { class Plex {
@@ -77,13 +75,13 @@ class Plex {
return new Promise((resolve, reject) => return new Promise((resolve, reject) =>
this.cache this.cache
.get(cacheKey) .get(cacheKey)
.then(machineInfo => resolve(machineInfo["machineIdentifier"])) .then(machineInfo => resolve(machineInfo.machineIdentifier))
.catch(() => fetch(url, options)) .catch(() => fetch(url, options))
.then(response => response.json()) .then(response => response.json())
.then(machineInfo => .then(machineInfo =>
this.cache.set(cacheKey, machineInfo["MediaContainer"], 2628000) this.cache.set(cacheKey, machineInfo.MediaContainer, 2628000)
) )
.then(machineInfo => resolve(machineInfo["machineIdentifier"])) .then(machineInfo => resolve(machineInfo.machineIdentifier))
.catch(error => { .catch(error => {
if (error != undefined && error.type === "request-timeout") { if (error != undefined && error.type === "request-timeout") {
reject({ reject({
@@ -104,7 +102,7 @@ class Plex {
if (plex == null || tmdb == null) return false; if (plex == null || tmdb == null) return false;
if (plex instanceof Array) { if (plex instanceof Array) {
let possibleMatches = plex.map(plexItem => const possibleMatches = plex.map(plexItem =>
matchingTitleAndYear(plexItem, tmdb) matchingTitleAndYear(plexItem, tmdb)
); );
match = possibleMatches.includes(true); match = possibleMatches.includes(true);
@@ -120,7 +118,7 @@ class Plex {
tmdb.title, tmdb.title,
tmdb.year tmdb.year
); );
return plexMatch ? true : false; return !!plexMatch;
} }
findPlexItemByTitleAndYear(title, year) { findPlexItemByTitleAndYear(title, year) {
@@ -149,7 +147,7 @@ class Plex {
if ( if (
matchingObjectInPlex == false || matchingObjectInPlex == false ||
matchingObjectInPlex == null || matchingObjectInPlex == null ||
matchingObjectInPlex["key"] == null || matchingObjectInPlex.key == null ||
machineIdentifier == null machineIdentifier == null
) )
return false; return false;
@@ -227,9 +225,11 @@ class Plex {
.map(category => { .map(category => {
if (category.type === "movie") { if (category.type === "movie") {
return category.Metadata; return category.Metadata;
} else if (category.type === "show") { }
if (category.type === "show") {
return category.Metadata.map(convertPlexToShow); return category.Metadata.map(convertPlexToShow);
} else if (category.type === "episode") { }
if (category.type === "episode") {
return category.Metadata.map(convertPlexToEpisode); return category.Metadata.map(convertPlexToEpisode);
} }
}) })

View File

@@ -1,6 +1,6 @@
const rp = require("request-promise");
const convertPlexToSeasoned = require("./convertPlexToSeasoned"); const convertPlexToSeasoned = require("./convertPlexToSeasoned");
const convertPlexToStream = require("./convertPlexToStream"); const convertPlexToStream = require("./convertPlexToStream");
const rp = require("request-promise");
class PlexRepository { class PlexRepository {
constructor(plexIP) { constructor(plexIP) {
@@ -24,7 +24,7 @@ class PlexRepository {
`http://${this.plexIP}:32400/search?query=${queryUri}` `http://${this.plexIP}:32400/search?query=${queryUri}`
); );
const options = { const options = {
uri: uri, uri,
headers: { headers: {
Accept: "application/json" Accept: "application/json"
}, },

View File

@@ -56,7 +56,7 @@ class RequestRepository {
if (error) { if (error) {
throw new Error(error); throw new Error(error);
} }
tmdbMovie.requested = result ? true : false; tmdbMovie.requested = !!result;
return tmdbMovie; return tmdbMovie;
}); });
} }
@@ -98,7 +98,7 @@ class RequestRepository {
type, type,
page page
]); ]);
else return this.database.all(this.queries.fetchRequestedItems, page); return this.database.all(this.queries.fetchRequestedItems, page);
}); });
} }

View File

@@ -1,14 +1,14 @@
class convertStreamToPlayback { class convertStreamToPlayback {
constructor(plexStream) { constructor(plexStream) {
this.bitrate = plexStream.bitrate; this.bitrate = plexStream.bitrate;
this.width = plexStream.width; this.width = plexStream.width;
this.height = plexStream.height; this.height = plexStream.height;
this.decision = plexStream.decision; this.decision = plexStream.decision;
this.audioProfile = plexStream.audioProfile; this.audioProfile = plexStream.audioProfile;
this.videoProfile = plexStream.videoProfile; this.videoProfile = plexStream.videoProfile;
this.duration = plexStream.duration; this.duration = plexStream.duration;
this.container = plexStream.container; this.container = plexStream.container;
} }
} }
module.exports = convertStreamToPlayback; module.exports = convertStreamToPlayback;

View File

@@ -8,9 +8,9 @@ class Episode {
this.summary = null; this.summary = null;
this.rating = null; this.rating = null;
this.views = null; this.views = null;
this.aired = null; this.aired = null;
this.type = 'episode'; this.type = "episode";
} }
} }
module.exports = Episode; module.exports = Episode;

View File

@@ -5,8 +5,8 @@ class Movie {
this.summary = null; this.summary = null;
this.rating = null; this.rating = null;
this.tagline = null; this.tagline = null;
this.type = 'movie'; this.type = "movie";
} }
} }
module.exports = Movie; module.exports = Movie;

View File

@@ -9,4 +9,4 @@ class Show {
} }
} }
module.exports = Show; module.exports = Show;

View File

@@ -1,6 +1,7 @@
const assert = require("assert"); const assert = require("assert");
const configuration = require("../config/configuration").getInstance(); const configuration = require("../config/configuration").getInstance();
const TMDB = require("../tmdb/tmdb"); const TMDB = require("../tmdb/tmdb");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
const establishedDatabase = require("../database/database"); const establishedDatabase = require("../database/database");
const utils = require("./utils"); const utils = require("./utils");
@@ -33,7 +34,7 @@ class RequestRepository {
} }
sortAndFilterToDbQuery(by, direction, filter, query) { sortAndFilterToDbQuery(by, direction, filter, query) {
let dbQuery = undefined; let dbQuery;
if (query !== undefined) { if (query !== undefined) {
const dbParams = [query, query]; const dbParams = [query, query];
@@ -87,7 +88,7 @@ class RequestRepository {
mapToTmdbByType(rows) { mapToTmdbByType(rows) {
return rows.map(row => { return rows.map(row => {
if (row.type === "movie") return tmdb.movieInfo(row.id); if (row.type === "movie") return tmdb.movieInfo(row.id);
else if (row.type === "show") return tmdb.showInfo(row.id); if (row.type === "show") return tmdb.showInfo(row.id);
}); });
} }
@@ -189,9 +190,9 @@ class RequestRepository {
.then(async rows => { .then(async rows => {
const sqliteResponse = await this.database.get( const sqliteResponse = await this.database.get(
fetchTotalResults, fetchTotalResults,
filter ? filter : undefined filter || undefined
); );
const totalRequests = sqliteResponse["totalRequests"]; const { totalRequests } = sqliteResponse;
const totalPages = Math.ceil(totalRequests / 26); const totalPages = Math.ceil(totalRequests / 26);
return [ return [
@@ -211,7 +212,7 @@ class RequestRepository {
Promise.resolve({ Promise.resolve({
results: result, results: result,
total_results: totalRequests, total_results: totalRequests,
page: page, page,
total_pages: totalPages total_pages: totalPages
}) })
) )

View File

@@ -1,34 +1,48 @@
// TODO : test title and date are valid matches to columns in the database // TODO : test title and date are valid matches to columns in the database
const validSortParams = ['title', 'date'] const validSortParams = ["title", "date"];
const validSortDirs = ['asc', 'desc'] const validSortDirs = ["asc", "desc"];
const validFilterParams = ['movie', 'show', 'seeding', 'downloading', 'paused', 'finished', 'downloaded'] const validFilterParams = [
"movie",
"show",
"seeding",
"downloading",
"paused",
"finished",
"downloaded"
];
function validSort(by, direction) { function validSort(by, direction) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (by === undefined) { if (by === undefined) {
resolve() resolve();
} }
if (validSortParams.includes(by) && validSortDirs.includes(direction)) { if (validSortParams.includes(by) && validSortDirs.includes(direction)) {
resolve() resolve();
} else { } else {
reject(new Error(`invalid sort parameter, must be of: ${validSortParams} with optional sort directions: ${validSortDirs} appended with ':'`)) reject(
new Error(
`invalid sort parameter, must be of: ${validSortParams} with optional sort directions: ${validSortDirs} appended with ':'`
)
);
} }
}); });
} }
function validFilter(filter_param) { function validFilter(filter_param) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
if (filter_param === undefined) { if (filter_param === undefined) {
resolve() resolve();
} }
if (filter_param && validFilterParams.includes(filter_param)) { if (filter_param && validFilterParams.includes(filter_param)) {
resolve() resolve();
} else { } else {
reject(new Error(`filter parameteres must be of type: ${validFilterParams}`)) reject(
new Error(`filter parameteres must be of type: ${validFilterParams}`)
);
} }
}); });
} }
module.exports = { validSort, validFilter } module.exports = { validSort, validFilter };

View File

@@ -1,7 +1,7 @@
class Stray { class Stray {
constructor(id) { constructor(id) {
this.id = id; this.id = id;
} }
} }
module.exports = Stray; module.exports = Stray;

View File

@@ -1,7 +1,7 @@
const assert = require("assert"); const assert = require("assert");
const pythonShell = require("python-shell");
const Stray = require("./stray"); const Stray = require("./stray");
const establishedDatabase = require("../database/database"); const establishedDatabase = require("../database/database");
const pythonShell = require("python-shell");
class StrayRepository { class StrayRepository {
constructor(database) { constructor(database) {

View File

@@ -5,11 +5,11 @@ const { Movie, Show, Person, Credits, ReleaseDates } = require("./types");
const tmdbErrorResponse = (error, typeString = undefined) => { const tmdbErrorResponse = (error, typeString = undefined) => {
if (error.status === 404) { if (error.status === 404) {
let message = error.response.body.status_message; const message = error.response.body.status_message;
throw { throw {
status: 404, status: 404,
message: message.slice(0, -1) + " in tmdb." message: `${message.slice(0, -1)} in tmdb.`
}; };
} else if (error.status === 401) { } else if (error.status === 401) {
throw { throw {
@@ -221,7 +221,7 @@ class TMDB {
} }
movieList(listname, page = 1) { movieList(listname, page = 1) {
const query = { page: page }; const query = { page };
const cacheKey = `tmdb/${this.cacheTags[listname]}:${page}`; const cacheKey = `tmdb/${this.cacheTags[listname]}:${page}`;
return this.getFromCacheOrFetchFromTmdb(cacheKey, listname, query) return this.getFromCacheOrFetchFromTmdb(cacheKey, listname, query)
@@ -230,7 +230,7 @@ class TMDB {
} }
showList(listname, page = 1) { showList(listname, page = 1) {
const query = { page: page }; const query = { page };
const cacheKey = `tmdb/${this.cacheTags[listname]}:${page}`; const cacheKey = `tmdb/${this.cacheTags[listname]}:${page}`;
return this.getFromCacheOrFetchFromTmdb(cacheKey, listName, query) return this.getFromCacheOrFetchFromTmdb(cacheKey, listName, query)
@@ -245,21 +245,23 @@ class TMDB {
* @returns {Promise} dict with tmdb results, mapped as movie/show objects. * @returns {Promise} dict with tmdb results, mapped as movie/show objects.
*/ */
mapResults(response, type = undefined) { mapResults(response, type = undefined) {
let results = response.results.map(result => { const results = response.results.map(result => {
if (type === "movie" || result.media_type === "movie") { if (type === "movie" || result.media_type === "movie") {
const movie = Movie.convertFromTmdbResponse(result); const movie = Movie.convertFromTmdbResponse(result);
return movie.createJsonResponse(); return movie.createJsonResponse();
} else if (type === "show" || result.media_type === "tv") { }
if (type === "show" || result.media_type === "tv") {
const show = Show.convertFromTmdbResponse(result); const show = Show.convertFromTmdbResponse(result);
return show.createJsonResponse(); return show.createJsonResponse();
} else if (type === "person" || result.media_type === "person") { }
if (type === "person" || result.media_type === "person") {
const person = Person.convertFromTmdbResponse(result); const person = Person.convertFromTmdbResponse(result);
return person.createJsonResponse(); return person.createJsonResponse();
} }
}); });
return { return {
results: results, results,
page: response.page, page: response.page,
total_results: response.total_results, total_results: response.total_results,
total_pages: response.total_pages total_pages: response.total_pages

View File

@@ -1,7 +1,7 @@
const Movie = require('./types/movie.js') const Movie = require("./types/movie.js");
const Show = require('./types/show.js') const Show = require("./types/show.js");
const Person = require('./types/person.js') const Person = require("./types/person.js");
const Credits = require('./types/credits.js') const Credits = require("./types/credits.js");
const ReleaseDates = require('./types/releaseDates.js') const ReleaseDates = require("./types/releaseDates.js");
module.exports = { Movie, Show, Person, Credits, ReleaseDates } module.exports = { Movie, Show, Person, Credits, ReleaseDates };

View File

@@ -13,10 +13,11 @@ class Credits {
const { id, cast, crew } = response; const { id, cast, crew } = response;
const allCast = cast.map(cast => { const allCast = cast.map(cast => {
if (cast["media_type"]) { if (cast.media_type) {
if (cast.media_type === "movie") { if (cast.media_type === "movie") {
return CreditedMovie.convertFromTmdbResponse(cast); return CreditedMovie.convertFromTmdbResponse(cast);
} else if (cast.media_type === "tv") { }
if (cast.media_type === "tv") {
return CreditedShow.convertFromTmdbResponse(cast); return CreditedShow.convertFromTmdbResponse(cast);
} }
} }
@@ -31,10 +32,11 @@ class Credits {
}); });
const allCrew = crew.map(crew => { const allCrew = crew.map(crew => {
if (cast["media_type"]) { if (cast.media_type) {
if (cast.media_type === "movie") { if (cast.media_type === "movie") {
return CreditedMovie.convertFromTmdbResponse(cast); return CreditedMovie.convertFromTmdbResponse(cast);
} else if (cast.media_type === "tv") { }
if (cast.media_type === "tv") {
return CreditedShow.convertFromTmdbResponse(cast); return CreditedShow.convertFromTmdbResponse(cast);
} }
} }

View File

@@ -1,7 +1,20 @@
class Movie { class Movie {
constructor(id, title, year=undefined, overview=undefined, poster=undefined, backdrop=undefined, constructor(
releaseDate=undefined, rating=undefined, genres=undefined, productionStatus=undefined, id,
tagline=undefined, runtime=undefined, imdb_id=undefined, popularity=undefined) { title,
year = undefined,
overview = undefined,
poster = undefined,
backdrop = undefined,
releaseDate = undefined,
rating = undefined,
genres = undefined,
productionStatus = undefined,
tagline = undefined,
runtime = undefined,
imdb_id = undefined,
popularity = undefined
) {
this.id = id; this.id = id;
this.title = title; this.title = title;
this.year = year; this.year = year;
@@ -16,27 +29,66 @@ class Movie {
this.runtime = runtime; this.runtime = runtime;
this.imdb_id = imdb_id; this.imdb_id = imdb_id;
this.popularity = popularity; this.popularity = popularity;
this.type = 'movie'; this.type = "movie";
} }
static convertFromTmdbResponse(response) { static convertFromTmdbResponse(response) {
const { id, title, release_date, overview, poster_path, backdrop_path, vote_average, genres, status, const {
tagline, runtime, imdb_id, popularity } = response; id,
title,
release_date,
overview,
poster_path,
backdrop_path,
vote_average,
genres,
status,
tagline,
runtime,
imdb_id,
popularity
} = response;
const releaseDate = new Date(release_date); const releaseDate = new Date(release_date);
const year = releaseDate.getFullYear(); const year = releaseDate.getFullYear();
const genreNames = genres ? genres.map(g => g.name) : undefined const genreNames = genres ? genres.map(g => g.name) : undefined;
return new Movie(id, title, year, overview, poster_path, backdrop_path, releaseDate, vote_average, genreNames, status, return new Movie(
tagline, runtime, imdb_id, popularity) id,
title,
year,
overview,
poster_path,
backdrop_path,
releaseDate,
vote_average,
genreNames,
status,
tagline,
runtime,
imdb_id,
popularity
);
} }
static convertFromPlexResponse(response) { static convertFromPlexResponse(response) {
// console.log('response', response) // console.log('response', response)
const { title, year, rating, tagline, summary } = response; const { title, year, rating, tagline, summary } = response;
const _ = undefined const _ = undefined;
return new Movie(null, title, year, summary, _, _, _, rating, _, _, tagline) return new Movie(
null,
title,
year,
summary,
_,
_,
_,
rating,
_,
_,
tagline
);
} }
createJsonResponse() { createJsonResponse() {
@@ -55,7 +107,7 @@ class Movie {
runtime: this.runtime, runtime: this.runtime,
imdb_id: this.imdb_id, imdb_id: this.imdb_id,
type: this.type type: this.type
} };
} }
} }

View File

@@ -1,4 +1,4 @@
class ReleaseDates { class ReleaseDates {
constructor(id, releases) { constructor(id, releases) {
this.id = id; this.id = id;
this.releases = releases; this.releases = releases;
@@ -7,24 +7,35 @@ class ReleaseDates {
static convertFromTmdbResponse(response) { static convertFromTmdbResponse(response) {
const { id, results } = response; const { id, results } = response;
const releases = results.map(countryRelease => const releases = results.map(
new Release( countryRelease =>
countryRelease.iso_3166_1, new Release(
countryRelease.release_dates.map(rd => new ReleaseDate(rd.certification, rd.iso_639_1, rd.release_date, rd.type, rd.note)) 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) return new ReleaseDates(id, releases);
} }
createJsonResponse() { createJsonResponse() {
return { return {
id: this.id, id: this.id,
results: this.releases.map(release => release.createJsonResponse()) results: this.releases.map(release => release.createJsonResponse())
} };
} }
} }
class Release { class Release {
constructor(country, releaseDates) { constructor(country, releaseDates) {
this.country = country; this.country = country;
this.releaseDates = releaseDates; this.releaseDates = releaseDates;
@@ -33,8 +44,10 @@ class Release {
createJsonResponse() { createJsonResponse() {
return { return {
country: this.country, country: this.country,
release_dates: this.releaseDates.map(releaseDate => releaseDate.createJsonResponse()) release_dates: this.releaseDates.map(releaseDate =>
} releaseDate.createJsonResponse()
)
};
} }
} }
@@ -49,19 +62,18 @@ class ReleaseDate {
releaseTypeLookup(releaseTypeKey) { releaseTypeLookup(releaseTypeKey) {
const releaseTypeEnum = { const releaseTypeEnum = {
1: 'Premier', 1: "Premier",
2: 'Limited theatrical', 2: "Limited theatrical",
3: 'Theatrical', 3: "Theatrical",
4: 'Digital', 4: "Digital",
5: 'Physical', 5: "Physical",
6: 'TV' 6: "TV"
} };
if (releaseTypeKey <= Object.keys(releaseTypeEnum).length) { if (releaseTypeKey <= Object.keys(releaseTypeEnum).length) {
return releaseTypeEnum[releaseTypeKey] return releaseTypeEnum[releaseTypeKey];
} else {
// TODO log | Release type not defined, does this need updating?
return null
} }
// TODO log | Release type not defined, does this need updating?
return null;
} }
createJsonResponse() { createJsonResponse() {
@@ -71,7 +83,7 @@ class ReleaseDate {
release_date: this.releaseDate, release_date: this.releaseDate,
type: this.type, type: this.type,
note: this.note note: this.note
} };
} }
} }

View File

@@ -1,7 +1,18 @@
class Show { class Show {
constructor(id, title, year=undefined, overview=undefined, poster=undefined, backdrop=undefined, constructor(
seasons=undefined, episodes=undefined, rank=undefined, genres=undefined, status=undefined, id,
runtime=undefined) { title,
year = undefined,
overview = undefined,
poster = undefined,
backdrop = undefined,
seasons = undefined,
episodes = undefined,
rank = undefined,
genres = undefined,
status = undefined,
runtime = undefined
) {
this.id = id; this.id = id;
this.title = title; this.title = title;
this.year = year; this.year = year;
@@ -14,18 +25,44 @@ class Show {
this.genres = genres; this.genres = genres;
this.productionStatus = status; this.productionStatus = status;
this.runtime = runtime; this.runtime = runtime;
this.type = 'show'; this.type = "show";
} }
static convertFromTmdbResponse(response) { static convertFromTmdbResponse(response) {
const { id, name, first_air_date, overview, poster_path, backdrop_path, number_of_seasons, number_of_episodes, const {
rank, genres, status, episode_run_time, popularity } = response; id,
name,
first_air_date,
overview,
poster_path,
backdrop_path,
number_of_seasons,
number_of_episodes,
rank,
genres,
status,
episode_run_time,
popularity
} = response;
const year = new Date(first_air_date).getFullYear() const year = new Date(first_air_date).getFullYear();
const genreNames = genres ? genres.map(g => g.name) : undefined const genreNames = genres ? genres.map(g => g.name) : undefined;
return new Show(id, name, year, overview, poster_path, backdrop_path, number_of_seasons, number_of_episodes, return new Show(
rank, genreNames, status, episode_run_time, popularity) id,
name,
year,
overview,
poster_path,
backdrop_path,
number_of_seasons,
number_of_episodes,
rank,
genreNames,
status,
episode_run_time,
popularity
);
} }
createJsonResponse() { createJsonResponse() {
@@ -43,7 +80,7 @@ class Show {
production_status: this.productionStatus, production_status: this.productionStatus,
runtime: this.runtime, runtime: this.runtime,
type: this.type type: this.type
} };
} }
} }

View File

@@ -1,5 +1,5 @@
const User = require("./user");
const jwt = require("jsonwebtoken"); const jwt = require("jsonwebtoken");
const User = require("./user");
class Token { class Token {
constructor(user, admin = false, settings = null) { constructor(user, admin = false, settings = null) {
@@ -16,8 +16,8 @@ class Token {
toString(secret) { toString(secret) {
const { user, admin, settings } = this; const { user, admin, settings } = this;
let data = { username: user.username, settings }; const data = { username: user.username, settings };
if (admin) data["admin"] = admin; if (admin) data.admin = admin;
return jwt.sign(data, secret, { expiresIn: "90d" }); return jwt.sign(data, secret, { expiresIn: "90d" });
} }

View File

@@ -1,8 +1,8 @@
class User { class User {
constructor(username, email=undefined) { constructor(username, email = undefined) {
this.username = username; this.username = username;
this.email = email; this.email = email;
} }
} }
module.exports = User; module.exports = User;

View File

@@ -59,7 +59,7 @@ router.get("/", (req, res) => {
app.use(Raven.errorHandler()); app.use(Raven.errorHandler());
app.use((err, req, res, next) => { app.use((err, req, res, next) => {
res.statusCode = 500; res.statusCode = 500;
res.end(res.sentry + "\n"); res.end(`${res.sentry}\n`);
}); });
/** /**
@@ -68,6 +68,7 @@ app.use((err, req, res, next) => {
router.post("/v1/user", require("./controllers/user/register.js")); router.post("/v1/user", require("./controllers/user/register.js"));
router.post("/v1/user/login", require("./controllers/user/login.js")); router.post("/v1/user/login", require("./controllers/user/login.js"));
router.post("/v1/user/logout", require("./controllers/user/logout.js")); router.post("/v1/user/logout", require("./controllers/user/logout.js"));
router.get( router.get(
"/v1/user/settings", "/v1/user/settings",
mustBeAuthenticated, mustBeAuthenticated,
@@ -88,6 +89,7 @@ router.get(
mustBeAuthenticated, mustBeAuthenticated,
require("./controllers/user/requests.js") require("./controllers/user/requests.js")
); );
router.post( router.post(
"/v1/user/link_plex", "/v1/user/link_plex",
mustBeAuthenticated, mustBeAuthenticated,

View File

@@ -1,5 +1,6 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
// there should be a translate function from query params to // there should be a translate function from query params to
@@ -39,7 +40,8 @@ function fetchTmdbList(req, res, listname, type) {
.movieList(listname, page) .movieList(listname, page)
.then(listResponse => res.send(listResponse)) .then(listResponse => res.send(listResponse))
.catch(error => handleError(error, res)); .catch(error => handleError(error, res));
} else if (type === "show") { }
if (type === "show") {
return tmdb return tmdb
.showList(listname, page) .showList(listname, page)
.then(listResponse => res.send(listResponse)) .then(listResponse => res.send(listResponse))

View File

@@ -17,12 +17,9 @@ const movieCreditsController = (req, res) => {
} else { } else {
// TODO log unhandled errors // TODO log unhandled errors
console.log("caugth movie credits controller error", error); console.log("caugth movie credits controller error", error);
res res.status(500).send({
.status(500) message: "An unexpected error occured while requesting movie credits"
.send({ });
message:
"An unexpected error occured while requesting movie credits"
});
} }
}); });
}; };

View File

@@ -17,12 +17,9 @@ const movieReleaseDatesController = (req, res) => {
} else { } else {
// TODO log unhandled errors : here our at tmdbReleaseError ? // TODO log unhandled errors : here our at tmdbReleaseError ?
console.log("caugth release dates controller error", error); console.log("caugth release dates controller error", error);
res res.status(500).send({
.status(500) message: "An unexpected error occured while requesting movie credits"
.send({ });
message:
"An unexpected error occured while requesting movie credits"
});
} }
}); });
}; };

View File

@@ -1,5 +1,6 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
const personCreditsController = (req, res) => { const personCreditsController = (req, res) => {

View File

@@ -1,5 +1,6 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
function handleError(error, res) { function handleError(error, res) {
@@ -31,7 +32,7 @@ async function personInfoController(req, res) {
? (credits = true) ? (credits = true)
: (credits = false); : (credits = false);
let tmdbQueue = [tmdb.personInfo(personId)]; const tmdbQueue = [tmdb.personInfo(personId)];
if (credits) tmdbQueue.push(tmdb.personCredits(personId)); if (credits) tmdbQueue.push(tmdb.personCredits(personId));
try { try {

View File

@@ -8,9 +8,9 @@
const PirateRepository = require("../../../pirate/pirateRepository"); const PirateRepository = require("../../../pirate/pirateRepository");
function addMagnet(req, res) { function addMagnet(req, res) {
const magnet = req.body.magnet; const { magnet } = req.body;
const name = req.body.name; const { name } = req.body;
const tmdb_id = req.body.tmdb_id; const { tmdb_id } = req.body;
PirateRepository.AddMagnet(magnet, name, tmdb_id) PirateRepository.AddMagnet(magnet, name, tmdb_id)
.then(result => { .then(result => {

View File

@@ -1,12 +1,12 @@
/* /*
* @Author: KevinMidboe * @Author: KevinMidboe
* @Date: 2017-05-03 23:26:46 * @Date: 2017-05-03 23:26:46
* @Last Modified by: KevinMidboe * @Last Modified by: KevinMidboe
* @Last Modified time: 2018-02-06 20:54:22 * @Last Modified time: 2018-02-06 20:54:22
*/ */
function hookDumpController(req, res) { function hookDumpController(req, res) {
console.log(req); console.log(req);
} }
module.exports = hookDumpController; module.exports = hookDumpController;

View File

@@ -9,7 +9,7 @@ const requestRepository = new RequestRepository();
* @returns {Callback} * @returns {Callback}
*/ */
function readRequestController(req, res) { function readRequestController(req, res) {
const mediaId = req.params.mediaId; const { mediaId } = req.params;
const { type } = req.query; const { type } = req.query;
requestRepository requestRepository
.lookup(mediaId, type) .lookup(mediaId, type)

View File

@@ -1,5 +1,6 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const Plex = require("../../../plex/plex"); const Plex = require("../../../plex/plex");
const plex = new Plex(configuration.get("plex", "ip")); const plex = new Plex(configuration.get("plex", "ip"));
/** /**
@@ -16,12 +17,10 @@ function searchPlexController(req, res) {
if (movies.length > 0) { if (movies.length > 0) {
res.send(movies); res.send(movies);
} else { } else {
res res.status(404).send({
.status(404) success: false,
.send({ message: "Search query did not give any results from plex."
success: false, });
message: "Search query did not give any results from plex."
});
} }
}) })
.catch(error => { .catch(error => {

View File

@@ -19,12 +19,10 @@ function searchMediaController(req, res) {
if (media !== undefined || media.length > 0) { if (media !== undefined || media.length > 0) {
res.send(media); res.send(media);
} else { } else {
res res.status(404).send({
.status(404) success: false,
.send({ message: "Search query did not return any results."
success: false, });
message: "Search query did not return any results."
});
} }
}) })
.catch(error => { .catch(error => {

View File

@@ -1,6 +1,7 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const RequestRepository = require("../../../request/request"); const RequestRepository = require("../../../request/request");
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
const request = new RequestRepository(); const request = new RequestRepository();
@@ -26,7 +27,7 @@ function submitRequestController(req, res) {
const user_agent = req.headers["user-agent"]; const user_agent = req.headers["user-agent"];
const username = req.loggedInUser ? req.loggedInUser.username : null; const username = req.loggedInUser ? req.loggedInUser.username : null;
let mediaFunction = undefined; let mediaFunction;
if (type === "movie") { if (type === "movie") {
console.log("movie"); console.log("movie");

View File

@@ -10,8 +10,8 @@ const requestRepository = new RequestRepository();
*/ */
function updateRequested(req, res) { function updateRequested(req, res) {
const id = req.params.requestId; const id = req.params.requestId;
const type = req.body.type; const { type } = req.body;
const status = req.body.status; const { status } = req.body;
requestRepository requestRepository
.updateRequestedById(id, type, status) .updateRequestedById(id, type, status)

View File

@@ -1,5 +1,6 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const Plex = require("../../../plex/plex"); const Plex = require("../../../plex/plex");
const plex = new Plex(configuration.get("plex", "ip")); const plex = new Plex(configuration.get("plex", "ip"));
/** /**

View File

@@ -1,4 +1,5 @@
const RequestRepository = require("../../../request/request"); const RequestRepository = require("../../../request/request");
const request = new RequestRepository(); const request = new RequestRepository();
/** /**
@@ -8,9 +9,9 @@ const request = new RequestRepository();
* @returns {Callback} * @returns {Callback}
*/ */
function fetchAllRequests(req, res) { function fetchAllRequests(req, res) {
let { page, filter, sort, query } = req.query; const { page, filter, sort, query } = req.query;
let sort_by = sort; let sort_by = sort;
let sort_direction = undefined; let sort_direction;
if (sort !== undefined && sort.includes(":")) { if (sort !== undefined && sort.includes(":")) {
[sort_by, sort_direction] = sort.split(":"); [sort_by, sort_direction] = sort.split(":");

View File

@@ -1,4 +1,5 @@
const RequestRepository = require("../../../request/request"); const RequestRepository = require("../../../request/request");
const request = new RequestRepository(); const request = new RequestRepository();
/** /**
@@ -8,7 +9,7 @@ const request = new RequestRepository();
* @returns {Callback} * @returns {Callback}
*/ */
function fetchAllRequests(req, res) { function fetchAllRequests(req, res) {
const id = req.params.id; const { id } = req.params;
const { type } = req.query; const { type } = req.query;
request request

View File

@@ -1,6 +1,7 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const RequestRepository = require("../../../request/request"); const RequestRepository = require("../../../request/request");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
const request = new RequestRepository(); const request = new RequestRepository();
// const { sendSMS } = require("src/notifications/sms"); // const { sendSMS } = require("src/notifications/sms");
@@ -26,7 +27,7 @@ function requestTmdbIdController(req, res) {
const user_agent = req.headers["user-agent"]; const user_agent = req.headers["user-agent"];
const username = req.loggedInUser ? req.loggedInUser.username : null; const username = req.loggedInUser ? req.loggedInUser.username : null;
let mediaFunction = undefined; let mediaFunction;
if (id === undefined || type === undefined) { if (id === undefined || type === undefined) {
res.status(422).send({ res.status(422).send({

View File

@@ -1,6 +1,7 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const SearchHistory = require("../../../searchHistory/searchHistory"); const SearchHistory = require("../../../searchHistory/searchHistory");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
const searchHistory = new SearchHistory(); const searchHistory = new SearchHistory();
@@ -13,7 +14,7 @@ const searchHistory = new SearchHistory();
function movieSearchController(req, res) { function movieSearchController(req, res) {
const { query, page, adult } = req.query; const { query, page, adult } = req.query;
const username = req.loggedInUser ? req.loggedInUser.username : null; const username = req.loggedInUser ? req.loggedInUser.username : null;
const includeAdult = adult == "true" ? true : false; const includeAdult = adult == "true";
if (username) { if (username) {
searchHistory.create(username, query); searchHistory.create(username, query);

View File

@@ -1,11 +1,12 @@
const configuration = require("../../..//config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const SearchHistory = require("../../../searchHistory/searchHistory"); const SearchHistory = require("../../../searchHistory/searchHistory");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
const searchHistory = new SearchHistory(); const searchHistory = new SearchHistory();
function checkAndCreateJsonResponse(result) { function checkAndCreateJsonResponse(result) {
if (typeof result["createJsonResponse"] === "function") { if (typeof result.createJsonResponse === "function") {
return result.createJsonResponse(); return result.createJsonResponse();
} }
return result; return result;

View File

@@ -1,6 +1,7 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const SearchHistory = require("../../../searchHistory/searchHistory"); const SearchHistory = require("../../../searchHistory/searchHistory");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
const searchHistory = new SearchHistory(); const searchHistory = new SearchHistory();
@@ -13,7 +14,7 @@ const searchHistory = new SearchHistory();
function personSearchController(req, res) { function personSearchController(req, res) {
const { query, page, adult } = req.query; const { query, page, adult } = req.query;
const username = req.loggedInUser ? req.loggedInUser.username : null; const username = req.loggedInUser ? req.loggedInUser.username : null;
const includeAdult = adult == "true" ? true : false; const includeAdult = adult == "true";
if (username) { if (username) {
searchHistory.create(username, query); searchHistory.create(username, query);

View File

@@ -1,6 +1,7 @@
const SearchHistory = require("../../../searchHistory/searchHistory"); const SearchHistory = require("../../../searchHistory/searchHistory");
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
const searchHistory = new SearchHistory(); const searchHistory = new SearchHistory();
@@ -13,7 +14,7 @@ const searchHistory = new SearchHistory();
function showSearchController(req, res) { function showSearchController(req, res) {
const { query, page, adult } = req.query; const { query, page, adult } = req.query;
const username = req.loggedInUser ? req.loggedInUser.username : null; const username = req.loggedInUser ? req.loggedInUser.username : null;
const includeAdult = adult == "true" ? true : false; const includeAdult = adult == "true";
if (username) { if (username) {
searchHistory.create(username, query); searchHistory.create(username, query);

View File

@@ -1,5 +1,6 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
const showCreditsController = (req, res) => { const showCreditsController = (req, res) => {
@@ -16,11 +17,9 @@ const showCreditsController = (req, res) => {
} else { } else {
// TODO log unhandled errors // TODO log unhandled errors
console.log("caugth show credits controller error", error); console.log("caugth show credits controller error", error);
res res.status(500).send({
.status(500) message: "An unexpected error occured while requesting show credits"
.send({ });
message: "An unexpected error occured while requesting show credits"
});
} }
}); });
}; };

View File

@@ -1,6 +1,7 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const TMDB = require("../../../tmdb/tmdb"); const TMDB = require("../../../tmdb/tmdb");
const Plex = require("../../../plex/plex"); const Plex = require("../../../plex/plex");
const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const tmdb = new TMDB(configuration.get("tmdb", "apiKey"));
const plex = new Plex(configuration.get("plex", "ip")); const plex = new Plex(configuration.get("plex", "ip"));
@@ -35,7 +36,7 @@ async function showInfoController(req, res) {
? (check_existance = true) ? (check_existance = true)
: (check_existance = false); : (check_existance = false);
let tmdbQueue = [tmdb.showInfo(showId)]; const tmdbQueue = [tmdb.showInfo(showId)];
if (credits) tmdbQueue.push(tmdb.showCredits(showId)); if (credits) tmdbQueue.push(tmdb.showCredits(showId));
try { try {

View File

@@ -1,4 +1,5 @@
const UserRepository = require("../../../user/userRepository"); const UserRepository = require("../../../user/userRepository");
const userRepository = new UserRepository(); const userRepository = new UserRepository();
const fetch = require("node-fetch"); const fetch = require("node-fetch");
const FormData = require("form-data"); const FormData = require("form-data");

View File

@@ -27,7 +27,7 @@ const cookieOptions = {
*/ */
async function loginController(req, res) { async function loginController(req, res) {
const user = new User(req.body.username); const user = new User(req.body.username);
const password = req.body.password; const { password } = req.body;
try { try {
const [loggedIn, isAdmin, settings] = await Promise.all([ const [loggedIn, isAdmin, settings] = await Promise.all([
@@ -43,11 +43,7 @@ async function loginController(req, res) {
}); });
} }
const token = new Token( const token = new Token(user, isAdmin === 1, settings).toString(secret);
user,
isAdmin === 1 ? true : false,
settings
).toString(secret);
return res.cookie("authorization", token, cookieOptions).status(200).send({ return res.cookie("authorization", token, cookieOptions).status(200).send({
success: true, success: true,

View File

@@ -24,7 +24,7 @@ const cookieOptions = {
*/ */
function registerController(req, res) { function registerController(req, res) {
const user = new User(req.body.username, req.body.email); const user = new User(req.body.username, req.body.email);
const password = req.body.password; const { password } = req.body;
userSecurity userSecurity
.createNewUser(user, password) .createNewUser(user, password)

View File

@@ -1,4 +1,5 @@
const UserRepository = require("../../../user/userRepository"); const UserRepository = require("../../../user/userRepository");
const userRepository = new UserRepository(); const userRepository = new UserRepository();
/** /**
* Controller: Retrieves settings of a logged in user * Controller: Retrieves settings of a logged in user

View File

@@ -1,5 +1,6 @@
const configuration = require("../../../config/configuration").getInstance(); const configuration = require("../../../config/configuration").getInstance();
const Tautulli = require("../../../tautulli/tautulli"); const Tautulli = require("../../../tautulli/tautulli");
const apiKey = configuration.get("tautulli", "apiKey"); const apiKey = configuration.get("tautulli", "apiKey");
const ip = configuration.get("tautulli", "ip"); const ip = configuration.get("tautulli", "ip");
const port = configuration.get("tautulli", "port"); const port = configuration.get("tautulli", "port");
@@ -10,12 +11,11 @@ function handleError(error, res) {
if (status && message) { if (status && message) {
return res.status(status).send({ success: false, message }); return res.status(status).send({ success: false, message });
} else {
console.log("caught view history controller error", error);
return res.status(500).send({
message: "An unexpected error occured while fetching view history"
});
} }
console.log("caught view history controller error", error);
return res.status(500).send({
message: "An unexpected error occured while fetching view history"
});
} }
function watchTimeStatsController(req, res) { function watchTimeStatsController(req, res) {

View File

@@ -1,29 +1,28 @@
const establishedDatabase = require("../../database/database"); const establishedDatabase = require("../../database/database");
const mustBeAdmin = (req, res, next) => { const mustBeAdmin = (req, res, next) => {
let database = establishedDatabase; const database = establishedDatabase;
if (req.loggedInUser === undefined) { if (req.loggedInUser === undefined) {
return res.status(401).send({ return res.status(401).send({
success: false, success: false,
message: "You must be logged in." message: "You must be logged in."
}); });
} else {
database
.get(
`SELECT admin FROM user WHERE user_name IS ?`,
req.loggedInUser.username
)
.then(isAdmin => {
console.log(isAdmin, req.loggedInUser);
if (isAdmin.admin == 0) {
return res.status(401).send({
success: false,
message: "You must be logged in as a admin."
});
}
});
} }
database
.get(
`SELECT admin FROM user WHERE user_name IS ?`,
req.loggedInUser.username
)
.then(isAdmin => {
console.log(isAdmin, req.loggedInUser);
if (isAdmin.admin == 0) {
return res.status(401).send({
success: false,
message: "You must be logged in as a admin."
});
}
});
return next(); return next();
}; };

View File

@@ -1,35 +1,33 @@
const establishedDatabase = require("../../database/database"); const establishedDatabase = require("../../database/database");
const mustHaveAccountLinkedToPlex = (req, res, next) => { const mustHaveAccountLinkedToPlex = (req, res, next) => {
let database = establishedDatabase; const database = establishedDatabase;
const loggedInUser = req.loggedInUser; const { loggedInUser } = req;
if (loggedInUser === undefined) { if (loggedInUser === undefined) {
return res.status(401).send({ return res.status(401).send({
success: false, success: false,
message: "You must have your account linked to a plex account." message: "You must have your account linked to a plex account."
}); });
} else {
database
.get(
`SELECT plex_userid FROM settings WHERE user_name IS ?`,
loggedInUser.username
)
.then(row => {
const plex_userid = row.plex_userid;
if (plex_userid === null || plex_userid === undefined) {
return res.status(403).send({
success: false,
message:
"No plex account user id found for your user. Please authenticate your plex account at /user/authenticate."
});
} else {
req.loggedInUser.plex_userid = plex_userid;
return next();
}
});
} }
database
.get(
`SELECT plex_userid FROM settings WHERE user_name IS ?`,
loggedInUser.username
)
.then(row => {
const { plex_userid } = row;
if (plex_userid === null || plex_userid === undefined) {
return res.status(403).send({
success: false,
message:
"No plex account user id found for your user. Please authenticate your plex account at /user/authenticate."
});
}
req.loggedInUser.plex_userid = plex_userid;
return next();
});
}; };
module.exports = mustHaveAccountLinkedToPlex; module.exports = mustHaveAccountLinkedToPlex;