From 7168950dfe3e9b31ae83d9d4e288b36e4888545e Mon Sep 17 00:00:00 2001 From: Kevin Date: Thu, 25 Aug 2022 17:19:23 +0200 Subject: [PATCH] Feat: es modules (#139) * All file imports change from commonjs to es-module * Improved plex error responses back from api * Converted viewHistory to es module * Es-module requires file extension, updated all imports * Fix esmodule not having __dirname defined in scope * Replace dynamic-require with fs readFileSync * Short message service module function is exported as default * Resolved lint issues & ignore import/extension rule until typescript * All tests file imports changed from commonjs to es-module * Import json fixtures with new helper --- .eslintrc.json | 1 + package.json | 1 + scripts/updateRequestsInPlex.js | 13 +- src/cache/redis.js | 11 +- src/config/configuration.js | 25 ++- src/config/environmentVariables.js | 2 +- src/config/field.js | 6 +- src/config/filters.js | 2 +- src/database/database.js | 8 +- src/database/sqliteDatabase.js | 12 +- src/git/gitRepository.js | 2 +- src/media_classes/media.js | 2 +- src/media_classes/mediaInfo.js | 2 +- src/media_classes/player.js | 2 +- src/media_classes/plex.js | 4 +- src/media_classes/tmdb.js | 5 +- src/media_classes/user.js | 2 +- src/notifications/sms.js | 10 +- src/pirate/pirateRepository.js | 17 +- src/plex/convertPlexToEpisode.js | 5 +- src/plex/convertPlexToMovie.js | 4 +- src/plex/convertPlexToSeasoned.js | 4 +- src/plex/convertPlexToShow.js | 4 +- src/plex/convertPlexToStream.js | 12 +- src/plex/convertStreamToMediaInfo.js | 4 +- src/plex/mailTemplate.js | 2 +- src/plex/plex.js | 10 +- src/plex/plexRepository.js | 6 +- src/plex/requestRepository.js | 11 +- src/plex/stream/convertStreamToPlayback.js | 2 +- src/plex/stream/convertStreamToPlayer.js | 4 +- src/plex/stream/convertStreamToUser.js | 4 +- src/plex/types/episode.js | 2 +- src/plex/types/movie.js | 2 +- src/plex/types/show.js | 2 +- src/request/request.js | 6 +- src/request/utils.js | 2 +- src/searchHistory/searchHistory.js | 4 +- src/seasoned/stray.js | 2 +- src/seasoned/strayRepository.js | 10 +- src/tautulli/tautulli.js | 2 +- src/tmdb/cache.js | 6 +- src/tmdb/tmdb.js | 8 +- src/tmdb/types.js | 12 +- src/tmdb/types/credits.js | 6 +- src/tmdb/types/movie.js | 2 +- src/tmdb/types/person.js | 2 +- src/tmdb/types/releaseDates.js | 2 +- src/tmdb/types/show.js | 2 +- src/user/token.js | 6 +- src/user/user.js | 2 +- src/user/userRepository.js | 6 +- src/user/userSecurity.js | 6 +- src/webserver/app.js | 199 +++++++++--------- src/webserver/controllers/git/dumpHook.js | 4 +- .../controllers/list/listController.js | 7 +- src/webserver/controllers/misc/emoji.js | 4 +- src/webserver/controllers/movie/credits.js | 7 +- src/webserver/controllers/movie/info.js | 9 +- .../controllers/movie/releaseDates.js | 7 +- src/webserver/controllers/person/credits.js | 7 +- src/webserver/controllers/person/info.js | 7 +- src/webserver/controllers/pirate/addMagnet.js | 6 +- .../controllers/pirate/searchTheBay.js | 6 +- .../controllers/plex/fetchRequested.js | 4 +- src/webserver/controllers/plex/hookDump.js | 2 +- src/webserver/controllers/plex/plexPlaying.js | 8 +- src/webserver/controllers/plex/readRequest.js | 4 +- src/webserver/controllers/plex/search.js | 8 +- src/webserver/controllers/plex/searchMedia.js | 8 +- .../controllers/plex/searchRequest.js | 8 +- .../controllers/plex/submitRequest.js | 9 +- .../controllers/plex/updateRequested.js | 4 +- .../controllers/plex/watchDirectLink.js | 7 +- .../controllers/request/fetchAllRequests.js | 4 +- .../controllers/request/getRequest.js | 4 +- .../controllers/request/requestTmdbId.js | 11 +- .../controllers/search/movieSearch.js | 9 +- .../controllers/search/multiSearch.js | 9 +- .../controllers/search/personSearch.js | 9 +- .../controllers/search/showSearch.js | 9 +- .../controllers/seasoned/readStrays.js | 4 +- .../controllers/seasoned/strayById.js | 4 +- .../controllers/seasoned/verifyStray.js | 4 +- src/webserver/controllers/show/credits.js | 7 +- src/webserver/controllers/show/info.js | 9 +- .../user/authenticatePlexAccount.js | 67 +++--- src/webserver/controllers/user/login.js | 13 +- src/webserver/controllers/user/logout.js | 2 +- src/webserver/controllers/user/register.js | 11 +- src/webserver/controllers/user/requests.js | 4 +- .../controllers/user/searchHistory.js | 4 +- src/webserver/controllers/user/settings.js | 15 +- src/webserver/controllers/user/viewHistory.js | 9 +- src/webserver/middleware/mustBeAdmin.js | 4 +- .../middleware/mustBeAuthenticated.js | 2 +- .../middleware/mustHaveAccountLinkedToPlex.js | 4 +- src/webserver/middleware/reqTokenToUser.js | 7 +- src/webserver/server.js | 16 +- tests/helpers/createCacheEntry.js | 6 +- tests/helpers/createToken.js | 8 +- tests/helpers/createUser.js | 8 +- tests/helpers/importFixture.js | 23 ++ tests/helpers/resetDatabase.js | 6 +- tests/helpers/tmdbMock2.js | 2 +- .../asADeveloperIWantTheServerToRegister.js | 10 +- ...DeveloperIWantTheServerToStart.js.disabled | 4 +- tests/system/asADeveloperIWantToLogin.js | 12 +- ...antAForbiddenErrorIfTheTokenIsMalformed.js | 10 +- ...GetErrorWhenRegisteringExistingUsername.js | 12 +- .../system/asAUserIWantToGetPopularMovies.js | 18 +- tests/system/asAUserIWantToGetPopularShows.js | 18 +- tests/system/asAUserIWantToRequestAMovie.js | 22 +- ...asAnAnonymousUserIWantToSearchForAMovie.js | 18 +- tests/unit/config/testConfig.js | 59 +++--- tests/unit/config/testField.js | 4 +- tests/unit/config/testFilters.js | 4 +- tests/unit/tmdb/testConvertTmdbToMovie.js | 32 ++- tests/unit/tmdb/testTmdb.disabled | 18 +- 119 files changed, 624 insertions(+), 527 deletions(-) create mode 100644 tests/helpers/importFixture.js diff --git a/.eslintrc.json b/.eslintrc.json index 0b63480..cb4ad9b 100644 --- a/.eslintrc.json +++ b/.eslintrc.json @@ -7,6 +7,7 @@ "extends": ["eslint-config-airbnb-base", "plugin:prettier/recommended"], "plugins": ["mocha"], "rules": { + "import/extensions": 0, "max-classes-per-file": 1, "no-empty": [ 2, diff --git a/package.json b/package.json index 4d311e4..8af3139 100644 --- a/package.json +++ b/package.json @@ -6,6 +6,7 @@ "url": "https://www.opensource.org/licenses/mit-license.php" }, "main": "webserver/server.js", + "type": "module", "scripts": { "start": "SEASONED_CONFIG=configurations/production.json NODE_ENV=production node src/webserver/server.js", "dev": "SEASONED_CONFIG=configurations/development.json NODE_ENV=development node src/webserver/server.js", diff --git a/scripts/updateRequestsInPlex.js b/scripts/updateRequestsInPlex.js index 7f186e6..409041a 100644 --- a/scripts/updateRequestsInPlex.js +++ b/scripts/updateRequestsInPlex.js @@ -1,7 +1,12 @@ -const Plex = require("src/plex/plex"); -const configuration = require("src/config/configuration").getInstance(); -const plex = new Plex(configuration.get("plex", "ip")); -const establishedDatabase = require("src/database/database"); +import Plex from "../src/plex/plexRepository"; +import establishedDatabase from "../src/database/database"; +import Configuration from "../src/config/configuration"; + +const configuration = Configuration.getInstance(); +const plex = new Plex( + configuration.get("plex", "ip"), + configuration.get("plex", "token") +); const queries = { getRequestsNotYetInPlex: `SELECT * FROM requests WHERE status = 'requested' OR status = 'downloading'`, diff --git a/src/cache/redis.js b/src/cache/redis.js index dee6e5f..76846c9 100644 --- a/src/cache/redis.js +++ b/src/cache/redis.js @@ -1,10 +1,11 @@ -const configuration = require("../config/configuration").getInstance(); +import redis from "redis"; +import Configuration from "../config/configuration.js"; +const configuration = Configuration.getInstance(); let client; const mockCache = {}; try { - const redis = require("redis"); // eslint-disable-line global-require console.log("Trying to connect with redis.."); // eslint-disable-line no-console const host = configuration.get("redis", "host"); const port = configuration.get("redis", "port"); @@ -72,7 +73,7 @@ function get(key) { }); } -module.exports = { - get, - set +export default { + set, + get }; diff --git a/src/config/configuration.js b/src/config/configuration.js index 175a0a7..ba0d0a8 100644 --- a/src/config/configuration.js +++ b/src/config/configuration.js @@ -1,13 +1,17 @@ -const path = require("path"); -const Field = require("./field"); +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; + +import Field from "./field.js"; let instance = null; +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); class Config { constructor() { this.location = Config.determineLocation(); - // eslint-disable-next-line import/no-dynamic-require, global-require - this.fields = require(`${this.location}`); + this.fields = Config.readFileContents(this.location); } static getInstance() { @@ -21,6 +25,17 @@ class Config { return path.join(__dirname, "..", "..", process.env.SEASONED_CONFIG); } + static readFileContents(location) { + let content = {}; + try { + content = JSON.parse(fs.readFileSync(location, { encoding: "utf-8" })); + } catch (err) { + console.error(`Error loading configuration file at path: ${location}`); + } + + return content; + } + get(section, option) { if ( this.fields[section] === undefined || @@ -45,4 +60,4 @@ class Config { } } -module.exports = Config; +export default Config; diff --git a/src/config/environmentVariables.js b/src/config/environmentVariables.js index 22d467f..84fe070 100644 --- a/src/config/environmentVariables.js +++ b/src/config/environmentVariables.js @@ -12,4 +12,4 @@ class EnvironmentVariables { } } -module.exports = EnvironmentVariables; +export default EnvironmentVariables; diff --git a/src/config/field.js b/src/config/field.js index ef4b3d1..443a577 100644 --- a/src/config/field.js +++ b/src/config/field.js @@ -1,5 +1,5 @@ -const Filters = require("./filters"); -const EnvironmentVariables = require("./environmentVariables"); +import Filters from "./filters.js"; +import EnvironmentVariables from "./environmentVariables.js"; class Field { constructor(rawValue, environmentVariables) { @@ -50,4 +50,4 @@ class Field { } } -module.exports = Field; +export default Field; diff --git a/src/config/filters.js b/src/config/filters.js index 8d5fad1..7a62eea 100644 --- a/src/config/filters.js +++ b/src/config/filters.js @@ -31,4 +31,4 @@ class Filters { } } -module.exports = Filters; +export default Filters; diff --git a/src/database/database.js b/src/database/database.js index e00bb70..be4c9d3 100644 --- a/src/database/database.js +++ b/src/database/database.js @@ -1,5 +1,7 @@ -const configuration = require("../config/configuration").getInstance(); -const SqliteDatabase = require("./sqliteDatabase"); +import SqliteDatabase from "./sqliteDatabase.js"; +import Configuration from "../config/configuration.js"; + +const configuration = Configuration.getInstance(); const database = new SqliteDatabase(configuration.get("database", "host")); /** @@ -10,4 +12,4 @@ const database = new SqliteDatabase(configuration.get("database", "host")); */ Promise.resolve().then(() => database.setUp()); -module.exports = database; +export default database; diff --git a/src/database/sqliteDatabase.js b/src/database/sqliteDatabase.js index a6f8e53..d687888 100644 --- a/src/database/sqliteDatabase.js +++ b/src/database/sqliteDatabase.js @@ -1,6 +1,10 @@ -const fs = require("fs"); -const path = require("path"); -const sqlite3 = require("sqlite3").verbose(); +import fs from "fs"; +import path from "path"; +import sqlite3 from "sqlite3"; +import { fileURLToPath } from "url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); class SqliteDatabase { constructor(host) { @@ -115,4 +119,4 @@ class SqliteDatabase { } } -module.exports = SqliteDatabase; +export default SqliteDatabase; diff --git a/src/git/gitRepository.js b/src/git/gitRepository.js index 7659561..8265fe7 100644 --- a/src/git/gitRepository.js +++ b/src/git/gitRepository.js @@ -5,4 +5,4 @@ class GitRepository { } } -module.exports = GitRepository; +export default GitRepository; diff --git a/src/media_classes/media.js b/src/media_classes/media.js index e68f670..c456249 100644 --- a/src/media_classes/media.js +++ b/src/media_classes/media.js @@ -15,4 +15,4 @@ class Media { } } -module.exports = Media; +export default Media; diff --git a/src/media_classes/mediaInfo.js b/src/media_classes/mediaInfo.js index 663bcb8..2582351 100644 --- a/src/media_classes/mediaInfo.js +++ b/src/media_classes/mediaInfo.js @@ -12,4 +12,4 @@ class MediaInfo { } } -module.exports = MediaInfo; +export default MediaInfo; diff --git a/src/media_classes/player.js b/src/media_classes/player.js index 6f9a22f..40bb13d 100644 --- a/src/media_classes/player.js +++ b/src/media_classes/player.js @@ -9,4 +9,4 @@ class Player { } } -module.exports = Player; +export default Player; diff --git a/src/media_classes/plex.js b/src/media_classes/plex.js index 2626e39..ba9135b 100644 --- a/src/media_classes/plex.js +++ b/src/media_classes/plex.js @@ -1,6 +1,6 @@ /* eslint-disable camelcase */ -const Media = require("./media"); +import Media from "./media.js"; class Plex extends Media { constructor( @@ -30,4 +30,4 @@ class Plex extends Media { } } -module.exports = Plex; +export default Plex; diff --git a/src/media_classes/tmdb.js b/src/media_classes/tmdb.js index 63a0c40..1bbb942 100644 --- a/src/media_classes/tmdb.js +++ b/src/media_classes/tmdb.js @@ -1,6 +1,5 @@ /* eslint-disable camelcase */ - -const Media = require("./media"); +import Media from "./media.js"; class TMDB extends Media { // constructor(...args) { @@ -45,4 +44,4 @@ class TMDB extends Media { } } -module.exports = TMDB; +export default TMDB; diff --git a/src/media_classes/user.js b/src/media_classes/user.js index 62a5f3e..e4388fa 100644 --- a/src/media_classes/user.js +++ b/src/media_classes/user.js @@ -5,4 +5,4 @@ class User { } } -module.exports = User; +export default User; diff --git a/src/notifications/sms.js b/src/notifications/sms.js index 8dbb3fe..ab1589f 100644 --- a/src/notifications/sms.js +++ b/src/notifications/sms.js @@ -1,4 +1,6 @@ -const configuration = require("../config/configuration").getInstance(); +import Configuration from "../config/configuration.js"; + +const configuration = Configuration.getInstance(); class SMSUnexpectedError extends Error { constructor(errorMessage) { @@ -9,7 +11,7 @@ class SMSUnexpectedError extends Error { } } -const sendSMS = message => { +export default function sendSMS(message) { const apiKey = configuration.get("sms", "apikey"); if (!apiKey) { @@ -35,6 +37,4 @@ const sendSMS = message => { .then(response => resolve(response)) .catch(error => reject(new SMSUnexpectedError(error))); }); -}; - -module.exports = { sendSMS }; +} diff --git a/src/pirate/pirateRepository.js b/src/pirate/pirateRepository.js index 36849b2..4fdf068 100644 --- a/src/pirate/pirateRepository.js +++ b/src/pirate/pirateRepository.js @@ -1,10 +1,9 @@ -const http = require("http"); -const { URL } = require("url"); -const PythonShell = require("python-shell"); +import http from "http"; +import { URL } from "url"; +import PythonShell from "python-shell"; -const establishedDatabase = require("../database/database"); - -const cache = require("../cache/redis"); +import establishedDatabase from "../database/database.js"; +import cache from "../cache/redis.js"; function getMagnetFromURL(url) { return new Promise(resolve => { @@ -46,7 +45,7 @@ async function callPythonAddMagnet(url, callback) { }); } -async function SearchPiratebay(_query) { +export async function SearchPiratebay(_query) { let query = String(_query); if (query?.includes("+")) { @@ -76,7 +75,7 @@ async function SearchPiratebay(_query) { ); } -function AddMagnet(magnet, name, tmdbId) { +export function AddMagnet(magnet, name, tmdbId) { return new Promise((resolve, reject) => callPythonAddMagnet(magnet, (err, results) => { if (err) { @@ -98,5 +97,3 @@ function AddMagnet(magnet, name, tmdbId) { }) ); } - -module.exports = { SearchPiratebay, AddMagnet }; diff --git a/src/plex/convertPlexToEpisode.js b/src/plex/convertPlexToEpisode.js index 398724f..49a83b0 100644 --- a/src/plex/convertPlexToEpisode.js +++ b/src/plex/convertPlexToEpisode.js @@ -1,4 +1,4 @@ -const Episode = require("./types/episode"); +import Episode from "./types/episode.js"; function convertPlexToEpisode(plexEpisode) { const episode = new Episode( @@ -21,4 +21,5 @@ function convertPlexToEpisode(plexEpisode) { return episode; } -module.exports = convertPlexToEpisode; + +export default convertPlexToEpisode; diff --git a/src/plex/convertPlexToMovie.js b/src/plex/convertPlexToMovie.js index 96c6882..f050cc1 100644 --- a/src/plex/convertPlexToMovie.js +++ b/src/plex/convertPlexToMovie.js @@ -1,4 +1,4 @@ -const Movie = require("./types/movie"); +import Movie from "./types/movie.js"; function convertPlexToMovie(plexMovie) { const movie = new Movie(plexMovie.title, plexMovie.year); @@ -12,4 +12,4 @@ function convertPlexToMovie(plexMovie) { return movie; } -module.exports = convertPlexToMovie; +export default convertPlexToMovie; diff --git a/src/plex/convertPlexToSeasoned.js b/src/plex/convertPlexToSeasoned.js index d216c23..7de9e12 100644 --- a/src/plex/convertPlexToSeasoned.js +++ b/src/plex/convertPlexToSeasoned.js @@ -1,6 +1,6 @@ /* eslint-disable camelcase */ -const Plex = require("../media_classes/plex"); +import Plex from "../media_classes/plex.js"; function translateAdded(date_string) { return new Date(date_string * 1000); @@ -32,4 +32,4 @@ function convertPlexToSeasoned(plex) { return seasoned; } -module.exports = convertPlexToSeasoned; +export default convertPlexToSeasoned; diff --git a/src/plex/convertPlexToShow.js b/src/plex/convertPlexToShow.js index dc51474..596773b 100644 --- a/src/plex/convertPlexToShow.js +++ b/src/plex/convertPlexToShow.js @@ -1,4 +1,4 @@ -const Show = require("./types/show"); +import Show from "./types/show.js"; function convertPlexToShow(plexShow) { const show = new Show(plexShow.title, plexShow.year); @@ -10,4 +10,4 @@ function convertPlexToShow(plexShow) { return show; } -module.exports = convertPlexToShow; +export default convertPlexToShow; diff --git a/src/plex/convertPlexToStream.js b/src/plex/convertPlexToStream.js index 3255cc7..e370636 100644 --- a/src/plex/convertPlexToStream.js +++ b/src/plex/convertPlexToStream.js @@ -1,8 +1,8 @@ -const convertPlexToSeasoned = require("./convertPlexToSeasoned"); -const convertStreamToMediaInfo = require("./convertStreamToMediaInfo"); -const convertStreamToPlayer = require("./stream/convertStreamToPlayer"); -const convertStreamToUser = require("./stream/convertStreamToUser"); -const ConvertStreamToPlayback = require("./stream/convertStreamToPlayback"); +import convertPlexToSeasoned from "./convertPlexToSeasoned.js"; +import convertStreamToMediaInfo from "./convertStreamToMediaInfo.js"; +import convertStreamToPlayer from "./stream/convertStreamToPlayer.js"; +import convertStreamToUser from "./stream/convertStreamToUser.js"; +import ConvertStreamToPlayback from "./stream/convertStreamToPlayback.js"; function convertPlexToStream(plexStream) { const stream = convertPlexToSeasoned(plexStream); @@ -16,4 +16,4 @@ function convertPlexToStream(plexStream) { return stream; } -module.exports = convertPlexToStream; +export default convertPlexToStream; diff --git a/src/plex/convertStreamToMediaInfo.js b/src/plex/convertStreamToMediaInfo.js index e68f9f8..34dc7a8 100644 --- a/src/plex/convertStreamToMediaInfo.js +++ b/src/plex/convertStreamToMediaInfo.js @@ -1,4 +1,4 @@ -const MediaInfo = require("../media_classes/mediaInfo"); +import MediaInfo from "../media_classes/mediaInfo.js"; function convertStreamToMediaInfo(plexStream) { const mediaInfo = new MediaInfo(); @@ -19,4 +19,4 @@ function convertStreamToMediaInfo(plexStream) { return mediaInfo; } -module.exports = convertStreamToMediaInfo; +export default convertStreamToMediaInfo; diff --git a/src/plex/mailTemplate.js b/src/plex/mailTemplate.js index fa0a355..084697b 100644 --- a/src/plex/mailTemplate.js +++ b/src/plex/mailTemplate.js @@ -22,4 +22,4 @@ class mailTemplate { } } -module.exports = mailTemplate; +export default mailTemplate; diff --git a/src/plex/plex.js b/src/plex/plex.js index 09c74e9..a1b8bec 100644 --- a/src/plex/plex.js +++ b/src/plex/plex.js @@ -1,7 +1,7 @@ -const convertPlexToMovie = require("./convertPlexToMovie"); -const convertPlexToShow = require("./convertPlexToShow"); -const convertPlexToEpisode = require("./convertPlexToEpisode"); -const redisCache = require("../cache/redis"); +import convertPlexToMovie from "./convertPlexToMovie.js"; +import convertPlexToShow from "./convertPlexToShow.js"; +import convertPlexToEpisode from "./convertPlexToEpisode.js"; +import redisCache from "../cache/redis.js"; class PlexRequestTimeoutError extends Error { constructor() { @@ -227,4 +227,4 @@ class Plex { } } -module.exports = Plex; +export default Plex; diff --git a/src/plex/plexRepository.js b/src/plex/plexRepository.js index 4018ce2..ddb552f 100644 --- a/src/plex/plexRepository.js +++ b/src/plex/plexRepository.js @@ -1,5 +1,5 @@ -const convertPlexToSeasoned = require("./convertPlexToSeasoned"); -const convertPlexToStream = require("./convertPlexToStream"); +import convertPlexToSeasoned from "./convertPlexToSeasoned.js"; +import convertPlexToStream from "./convertPlexToStream.js"; // eslint-disable-next-line function addAttributeIfTmdbInPlex(_tmdb, plexResult) { @@ -103,4 +103,4 @@ class PlexRepository { // } } -module.exports = PlexRepository; +export default PlexRepository; diff --git a/src/plex/requestRepository.js b/src/plex/requestRepository.js index ebe8f63..bbafce2 100644 --- a/src/plex/requestRepository.js +++ b/src/plex/requestRepository.js @@ -1,8 +1,9 @@ -const PlexRepository = require("./plexRepository"); -const configuration = require("../config/configuration").getInstance(); -const TMDB = require("../tmdb/tmdb"); -const establishedDatabase = require("../database/database"); +import PlexRepository from "./plexRepository.js"; +import TMDB from "../tmdb/tmdb.js"; +import establishedDatabase from "../database/database.js"; +import Configuration from "../config/configuration.js"; +const configuration = Configuration.getInstance(); const plexRepository = new PlexRepository( configuration.get("plex", "ip"), configuration.get("plex", "token") @@ -128,4 +129,4 @@ class RequestRepository { } } -module.exports = RequestRepository; +export default RequestRepository; diff --git a/src/plex/stream/convertStreamToPlayback.js b/src/plex/stream/convertStreamToPlayback.js index c07d439..3674032 100644 --- a/src/plex/stream/convertStreamToPlayback.js +++ b/src/plex/stream/convertStreamToPlayback.js @@ -11,4 +11,4 @@ class convertStreamToPlayback { } } -module.exports = convertStreamToPlayback; +export default convertStreamToPlayback; diff --git a/src/plex/stream/convertStreamToPlayer.js b/src/plex/stream/convertStreamToPlayer.js index 0e07b1c..455df9b 100644 --- a/src/plex/stream/convertStreamToPlayer.js +++ b/src/plex/stream/convertStreamToPlayer.js @@ -1,4 +1,4 @@ -const Player = require("../../media_classes/player"); +import Player from "../../media_classes/player.js"; function convertStreamToPlayer(plexStream) { const player = new Player(plexStream.device, plexStream.address); @@ -10,4 +10,4 @@ function convertStreamToPlayer(plexStream) { return player; } -module.exports = convertStreamToPlayer; +export default convertStreamToPlayer; diff --git a/src/plex/stream/convertStreamToUser.js b/src/plex/stream/convertStreamToUser.js index ee1d261..6ec32e5 100644 --- a/src/plex/stream/convertStreamToUser.js +++ b/src/plex/stream/convertStreamToUser.js @@ -1,7 +1,7 @@ -const User = require("../../media_classes/user"); +import User from "../../media_classes/user.js"; function convertStreamToUser(plexStream) { return new User(plexStream.id, plexStream.title); } -module.exports = convertStreamToUser; +export default convertStreamToUser; diff --git a/src/plex/types/episode.js b/src/plex/types/episode.js index 69ce4fe..2419498 100644 --- a/src/plex/types/episode.js +++ b/src/plex/types/episode.js @@ -13,4 +13,4 @@ class Episode { } } -module.exports = Episode; +export default Episode; diff --git a/src/plex/types/movie.js b/src/plex/types/movie.js index aa62ca6..e2bfefc 100644 --- a/src/plex/types/movie.js +++ b/src/plex/types/movie.js @@ -9,4 +9,4 @@ class Movie { } } -module.exports = Movie; +export default Movie; diff --git a/src/plex/types/show.js b/src/plex/types/show.js index 426fd7c..a22c3c0 100644 --- a/src/plex/types/show.js +++ b/src/plex/types/show.js @@ -9,4 +9,4 @@ class Show { } } -module.exports = Show; +export default Show; diff --git a/src/request/request.js b/src/request/request.js index d61f25d..32b9fcc 100644 --- a/src/request/request.js +++ b/src/request/request.js @@ -1,7 +1,7 @@ -const assert = require("assert"); +import assert from "assert"; // const configuration = require("../config/configuration").getInstance(); // const TMDB = require("../tmdb/tmdb"); -const establishedDatabase = require("../database/database"); +import establishedDatabase from "../database/database.js"; // const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); @@ -156,4 +156,4 @@ class RequestRepository { } } -module.exports = RequestRepository; +export default RequestRepository; diff --git a/src/request/utils.js b/src/request/utils.js index 67756c0..22836ff 100644 --- a/src/request/utils.js +++ b/src/request/utils.js @@ -45,4 +45,4 @@ function validFilter(filterParam) { }); } -module.exports = { validSort, validFilter }; +export default { validSort, validFilter }; diff --git a/src/searchHistory/searchHistory.js b/src/searchHistory/searchHistory.js index 9c25380..86b2fe2 100644 --- a/src/searchHistory/searchHistory.js +++ b/src/searchHistory/searchHistory.js @@ -1,4 +1,4 @@ -const establishedDatabase = require("../database/database"); +import establishedDatabase from "../database/database.js"; class SearchHistoryCreateDatabaseError extends Error { constructor(message = "an unexpected error occured", errorResponse = null) { @@ -55,4 +55,4 @@ class SearchHistory { } } -module.exports = SearchHistory; +export default SearchHistory; diff --git a/src/seasoned/stray.js b/src/seasoned/stray.js index c2620fa..dd58882 100644 --- a/src/seasoned/stray.js +++ b/src/seasoned/stray.js @@ -4,4 +4,4 @@ class Stray { } } -module.exports = Stray; +export default Stray; diff --git a/src/seasoned/strayRepository.js b/src/seasoned/strayRepository.js index 9239736..5bf477e 100644 --- a/src/seasoned/strayRepository.js +++ b/src/seasoned/strayRepository.js @@ -1,7 +1,7 @@ -const assert = require("assert"); -const pythonShell = require("python-shell"); -const Stray = require("./stray"); -const establishedDatabase = require("../database/database"); +import assert from "assert"; +import pythonShell from "python-shell"; +import Stray from "./stray.js"; +import establishedDatabase from "../database/database.js"; class StrayRepository { constructor(database) { @@ -65,4 +65,4 @@ class StrayRepository { } } -module.exports = StrayRepository; +export default StrayRepository; diff --git a/src/tautulli/tautulli.js b/src/tautulli/tautulli.js index 90b7b29..1e529c3 100644 --- a/src/tautulli/tautulli.js +++ b/src/tautulli/tautulli.js @@ -75,4 +75,4 @@ class Tautulli { } } -module.exports = Tautulli; +export default Tautulli; diff --git a/src/tmdb/cache.js b/src/tmdb/cache.js index 0806e8c..af851fe 100644 --- a/src/tmdb/cache.js +++ b/src/tmdb/cache.js @@ -1,5 +1,5 @@ -const assert = require("assert"); -const establishedDatabase = require("../database/database"); +import assert from "assert"; +import establishedDatabase from "../database/database.js"; class Cache { constructor(database) { @@ -45,4 +45,4 @@ class Cache { } } -module.exports = Cache; +export default Cache; diff --git a/src/tmdb/tmdb.js b/src/tmdb/tmdb.js index 054d1e8..f4b5796 100644 --- a/src/tmdb/tmdb.js +++ b/src/tmdb/tmdb.js @@ -1,7 +1,7 @@ -const moviedb = require("km-moviedb"); -const redisCache = require("../cache/redis"); +import moviedb from "km-moviedb"; +import redisCache from "../cache/redis.js"; -const { Movie, Show, Person, Credits, ReleaseDates } = require("./types"); +import { Movie, Show, Person, Credits, ReleaseDates } from "./types.js"; class TMDBNotFoundError extends Error { constructor(message) { @@ -339,4 +339,4 @@ class TMDB { } } -module.exports = TMDB; +export default TMDB; diff --git a/src/tmdb/types.js b/src/tmdb/types.js index cbf5cbc..26d8aa6 100644 --- a/src/tmdb/types.js +++ b/src/tmdb/types.js @@ -1,7 +1,7 @@ -const Movie = require("./types/movie"); -const Show = require("./types/show"); -const Person = require("./types/person"); -const Credits = require("./types/credits"); -const ReleaseDates = require("./types/releaseDates"); +import Movie from "./types/movie.js"; +import Show from "./types/show.js"; +import Person from "./types/person.js"; +import Credits from "./types/credits.js"; +import ReleaseDates from "./types/releaseDates.js"; -module.exports = { Movie, Show, Person, Credits, ReleaseDates }; +export { Movie, Show, Person, Credits, ReleaseDates }; diff --git a/src/tmdb/types/credits.js b/src/tmdb/types/credits.js index 8740b6d..66efa42 100644 --- a/src/tmdb/types/credits.js +++ b/src/tmdb/types/credits.js @@ -1,6 +1,6 @@ /* eslint-disable camelcase */ -const Movie = require("./movie"); -const Show = require("./show"); +import Movie from "./movie.js"; +import Show from "./show.js"; class CreditedMovie extends Movie {} class CreditedShow extends Show {} @@ -113,4 +113,4 @@ class Credits { } } -module.exports = Credits; +export default Credits; diff --git a/src/tmdb/types/movie.js b/src/tmdb/types/movie.js index db78856..2a213e0 100644 --- a/src/tmdb/types/movie.js +++ b/src/tmdb/types/movie.js @@ -113,4 +113,4 @@ class Movie { } } -module.exports = Movie; +export default Movie; diff --git a/src/tmdb/types/person.js b/src/tmdb/types/person.js index 2cd24d9..cf8e166 100644 --- a/src/tmdb/types/person.js +++ b/src/tmdb/types/person.js @@ -69,4 +69,4 @@ class Person { } } -module.exports = Person; +export default Person; diff --git a/src/tmdb/types/releaseDates.js b/src/tmdb/types/releaseDates.js index 94ffa31..0464ab6 100644 --- a/src/tmdb/types/releaseDates.js +++ b/src/tmdb/types/releaseDates.js @@ -89,4 +89,4 @@ class ReleaseDates { } } -module.exports = ReleaseDates; +export default ReleaseDates; diff --git a/src/tmdb/types/show.js b/src/tmdb/types/show.js index cbbf434..a0f1113 100644 --- a/src/tmdb/types/show.js +++ b/src/tmdb/types/show.js @@ -86,4 +86,4 @@ class Show { } } -module.exports = Show; +export default Show; diff --git a/src/user/token.js b/src/user/token.js index 3f80aad..d5a2e82 100644 --- a/src/user/token.js +++ b/src/user/token.js @@ -1,5 +1,5 @@ -const jwt = require("jsonwebtoken"); -const User = require("./user"); +import jwt from "jsonwebtoken"; +import User from "./user.js"; class Token { constructor(user, admin = false, settings = null) { @@ -38,4 +38,4 @@ class Token { } } -module.exports = Token; +export default Token; diff --git a/src/user/user.js b/src/user/user.js index 0c24602..ad82b79 100644 --- a/src/user/user.js +++ b/src/user/user.js @@ -5,4 +5,4 @@ class User { } } -module.exports = User; +export default User; diff --git a/src/user/userRepository.js b/src/user/userRepository.js index d23f0d4..cc99bca 100644 --- a/src/user/userRepository.js +++ b/src/user/userRepository.js @@ -1,5 +1,5 @@ -const assert = require("assert"); -const establishedDatabase = require("../database/database"); +import assert from "assert"; +import establishedDatabase from "../database/database.js"; class LinkPlexUserError extends Error { constructor(errorMessage = null) { @@ -263,4 +263,4 @@ class UserRepository { } } -module.exports = UserRepository; +export default UserRepository; diff --git a/src/user/userSecurity.js b/src/user/userSecurity.js index 5caef59..42c8d70 100644 --- a/src/user/userSecurity.js +++ b/src/user/userSecurity.js @@ -1,5 +1,5 @@ -const bcrypt = require("bcrypt"); -const UserRepository = require("./userRepository"); +import bcrypt from "bcrypt"; +import UserRepository from "./userRepository.js"; class UserSecurity { constructor(database) { @@ -72,4 +72,4 @@ class UserSecurity { } } -module.exports = UserSecurity; +export default UserSecurity; diff --git a/src/webserver/app.js b/src/webserver/app.js index dcbe080..07055d1 100644 --- a/src/webserver/app.js +++ b/src/webserver/app.js @@ -1,20 +1,72 @@ -const express = require("express"); -const Raven = require("raven"); -const cookieParser = require("cookie-parser"); -const bodyParser = require("body-parser"); +import express from "express"; +import Raven from "raven"; +import cookieParser from "cookie-parser"; +import bodyParser from "body-parser"; -const configuration = require("../config/configuration").getInstance(); +import Configuration from "../config/configuration.js"; -const reqTokenToUser = require("./middleware/reqTokenToUser"); -const mustBeAuthenticated = require("./middleware/mustBeAuthenticated"); -const mustBeAdmin = require("./middleware/mustBeAdmin"); -const mustHaveAccountLinkedToPlex = require("./middleware/mustHaveAccountLinkedToPlex"); +import reqTokenToUser from "./middleware/reqTokenToUser.js"; +import mustBeAuthenticated from "./middleware/mustBeAuthenticated.js"; +import mustBeAdmin from "./middleware/mustBeAdmin.js"; +import mustHaveAccountLinkedToPlex from "./middleware/mustHaveAccountLinkedToPlex.js"; -const listController = require("./controllers/list/listController"); -const tautulli = require("./controllers/user/viewHistory"); -const SettingsController = require("./controllers/user/settings"); -const AuthenticatePlexAccountController = require("./controllers/user/authenticatePlexAccount"); +import tautulli from "./controllers/user/viewHistory.js"; +import { + getSettingsController, + updateSettingsController +} from "./controllers/user/settings.js"; +import AuthenticatePlexAccountController from "./controllers/user/authenticatePlexAccount.js"; +import UserRegisterController from "./controllers/user/register.js"; +import UserLoginController from "./controllers/user/login.js"; +import UserLogoutController from "./controllers/user/logout.js"; +import UserSearchHistoryController from "./controllers/user/searchHistory.js"; +import UserRequestsController from "./controllers/user/requests.js"; + +import SearchMultiController from "./controllers/search/multiSearch.js"; +import SearchMovieController from "./controllers/search/movieSearch.js"; +import SearchShowController from "./controllers/search/showSearch.js"; +import SearchPersonController from "./controllers/search/personSearch.js"; + +import listController from "./controllers/list/listController.js"; + +import MovieCreditsController from "./controllers/movie/credits.js"; +import MovieReleaseDatesController from "./controllers/movie/releaseDates.js"; +import MovieInfoController from "./controllers/movie/info.js"; + +import ShowCreditsController from "./controllers/show/credits.js"; +import ShowInfoController from "./controllers/show/info.js"; + +import PersonCreditsController from "./controllers/person/credits.js"; +import PersonInfoController from "./controllers/person/info.js"; + +import SeasonedAllController from "./controllers/seasoned/readStrays.js"; +import SeasonedInfoController from "./controllers/seasoned/strayById.js"; +import SeasonedVerifyController from "./controllers/seasoned/verifyStray.js"; + +import PlexSearchController from "./controllers/plex/search.js"; +import PlexFetchRequestedController from "./controllers/plex/fetchRequested.js"; +// import PlexRequestsInfo from "./controllers/plex/updateRequested.js"; +import PlexWatchLinkController from "./controllers/plex/watchDirectLink.js"; +import PlexHookController from "./controllers/plex/hookDump.js"; +import PlexSubmitRequestController from "./controllers/plex/submitRequest.js"; +import PlexRequestInfo from "./controllers/plex/readRequest.js"; +import PlexSearchRequestController from "./controllers/plex/searchRequest.js"; +import PlexPlayingController from "./controllers/plex/plexPlaying.js"; +import PlexSearchMediaController from "./controllers/plex/searchMedia.js"; +import PlexUpdateRequestedController from "./controllers/plex/updateRequested.js"; + +import RequestFetchAllController from "./controllers/request/fetchAllRequests.js"; +import RequestInfoController from "./controllers/request/getRequest.js"; +import RequestSubmitController from "./controllers/request/requestTmdbId.js"; + +import PirateSearchController from "./controllers/pirate/searchTheBay.js"; +import PirateAddController from "./controllers/pirate/addMagnet.js"; + +import GitDumpController from "./controllers/git/dumpHook.js"; +import EmojiController from "./controllers/misc/emoji.js"; + +const configuration = Configuration.getInstance(); // TODO: Have our raven router check if there is a value, if not don't enable raven. Raven.config(configuration.get("raven", "DSN")).install(); @@ -65,30 +117,18 @@ router.get("/", (req, res) => { /** * User */ -router.post("/v1/user", require("./controllers/user/register")); -router.post("/v1/user/login", require("./controllers/user/login")); -router.post("/v1/user/logout", require("./controllers/user/logout")); +router.post("/v1/user", UserRegisterController); +router.post("/v1/user/login", UserLoginController); +router.post("/v1/user/logout", UserLogoutController); -router.get( - "/v1/user/settings", - mustBeAuthenticated, - SettingsController.getSettingsController -); -router.put( - "/v1/user/settings", - mustBeAuthenticated, - SettingsController.updateSettingsController -); +router.get("/v1/user/settings", mustBeAuthenticated, getSettingsController); +router.put("/v1/user/settings", mustBeAuthenticated, updateSettingsController); router.get( "/v1/user/search_history", mustBeAuthenticated, - require("./controllers/user/searchHistory") -); -router.get( - "/v1/user/requests", - mustBeAuthenticated, - require("./controllers/user/requests") + UserSearchHistoryController ); +router.get("/v1/user/requests", mustBeAuthenticated, UserRequestsController); router.post( "/v1/user/link_plex", @@ -125,111 +165,80 @@ router.get( /** * Seasoned */ -router.get("/v1/seasoned/all", require("./controllers/seasoned/readStrays")); -router.get( - "/v1/seasoned/:strayId", - require("./controllers/seasoned/strayById") -); -router.post( - "/v1/seasoned/verify/:strayId", - require("./controllers/seasoned/verifyStray") -); +router.get("/v1/seasoned/all", SeasonedAllController); +router.get("/v1/seasoned/:strayId", SeasonedInfoController); +router.post("/v1/seasoned/verify/:strayId", SeasonedVerifyController); -router.get("/v2/search/", require("./controllers/search/multiSearch")); -router.get("/v2/search/movie", require("./controllers/search/movieSearch")); -router.get("/v2/search/show", require("./controllers/search/showSearch")); -router.get("/v2/search/person", require("./controllers/search/personSearch")); +router.get("/v2/search/", SearchMultiController); +router.get("/v2/search/movie", SearchMovieController); +router.get("/v2/search/show", SearchShowController); +router.get("/v2/search/person", SearchPersonController); router.get("/v2/movie/now_playing", listController.nowPlayingMovies); router.get("/v2/movie/popular", listController.popularMovies); router.get("/v2/movie/top_rated", listController.topRatedMovies); router.get("/v2/movie/upcoming", listController.upcomingMovies); -router.get("/v2/movie/:id/credits", require("./controllers/movie/credits")); -router.get( - "/v2/movie/:id/release_dates", - require("./controllers/movie/releaseDates") -); -router.get("/v2/movie/:id", require("./controllers/movie/info")); - +router.get("/v2/movie/:id/credits", MovieCreditsController); +router.get("/v2/movie/:id/release_dates", MovieReleaseDatesController); +router.get("/v2/movie/:id", MovieInfoController); router.get("/v2/show/now_playing", listController.nowPlayingShows); router.get("/v2/show/popular", listController.popularShows); router.get("/v2/show/top_rated", listController.topRatedShows); -router.get("/v2/show/:id/credits", require("./controllers/show/credits")); -router.get("/v2/show/:id", require("./controllers/show/info")); +router.get("/v2/show/:id/credits", ShowCreditsController); +router.get("/v2/show/:id", ShowInfoController); -router.get("/v2/person/:id/credits", require("./controllers/person/credits")); -router.get("/v2/person/:id", require("./controllers/person/info")); +router.get("/v2/person/:id/credits", PersonCreditsController); +router.get("/v2/person/:id", PersonInfoController); /** * Plex */ -router.get("/v2/plex/search", require("./controllers/plex/search")); +router.get("/v2/plex/search", PlexSearchController); /** * List */ -router.get("/v1/plex/search", require("./controllers/plex/searchMedia")); -router.get("/v1/plex/playing", require("./controllers/plex/plexPlaying")); -router.get("/v1/plex/request", require("./controllers/plex/searchRequest")); -router.get( - "/v1/plex/request/:mediaId", - require("./controllers/plex/readRequest") -); -router.post( - "/v1/plex/request/:mediaId", - require("./controllers/plex/submitRequest") -); -router.post("/v1/plex/hook", require("./controllers/plex/hookDump")); +router.get("/v1/plex/search", PlexSearchMediaController); +router.get("/v1/plex/playing", PlexPlayingController); +router.get("/v1/plex/request", PlexSearchRequestController); +router.get("/v1/plex/request/:mediaId", PlexRequestInfo); +router.post("/v1/plex/request/:mediaId", PlexSubmitRequestController); +router.post("/v1/plex/hook", PlexHookController); -router.get( - "/v1/plex/watch-link", - mustBeAuthenticated, - require("./controllers/plex/watchDirectLink") -); +router.get("/v1/plex/watch-link", mustBeAuthenticated, PlexWatchLinkController); /** * Requests */ -router.get("/v2/request", require("./controllers/request/fetchAllRequests")); -router.get("/v2/request/:id", require("./controllers/request/getRequest")); -router.post("/v2/request", require("./controllers/request/requestTmdbId")); -router.get( - "/v1/plex/requests/all", - require("./controllers/plex/fetchRequested") -); +router.get("/v2/request", RequestFetchAllController); +router.get("/v2/request/:id", RequestInfoController); +router.post("/v2/request", RequestSubmitController); +router.get("/v1/plex/requests/all", PlexFetchRequestedController); router.put( "/v1/plex/request/:requestId", mustBeAuthenticated, - require("./controllers/plex/updateRequested") + PlexUpdateRequestedController ); /** * Pirate */ -router.get( - "/v1/pirate/search", - mustBeAdmin, - require("./controllers/pirate/searchTheBay") -); -router.post( - "/v1/pirate/add", - mustBeAdmin, - require("./controllers/pirate/addMagnet") -); +router.get("/v1/pirate/search", mustBeAdmin, PirateSearchController); +router.post("/v1/pirate/add", mustBeAdmin, PirateAddController); /** * git */ -router.post("/v1/git/dump", require("./controllers/git/dumpHook")); +router.post("/v1/git/dump", GitDumpController); /** * misc */ -router.get("/v1/emoji", require("./controllers/misc/emoji")); +router.get("/v1/emoji", EmojiController); // REGISTER OUR ROUTES ------------------------------- // all of our routes will be prefixed with /api app.use("/api", router); -module.exports = app; +export default app; diff --git a/src/webserver/controllers/git/dumpHook.js b/src/webserver/controllers/git/dumpHook.js index 5016893..571e2be 100644 --- a/src/webserver/controllers/git/dumpHook.js +++ b/src/webserver/controllers/git/dumpHook.js @@ -1,4 +1,4 @@ -const GitRepository = require("../../../git/gitRepository"); +import GitRepository from "../../../git/gitRepository.js"; const gitRepository = new GitRepository(); @@ -9,4 +9,4 @@ function dumpHookController(req, res) { .catch(() => res.status(500)); } -module.exports = dumpHookController; +export default dumpHookController; diff --git a/src/webserver/controllers/list/listController.js b/src/webserver/controllers/list/listController.js index 298dccf..9e94cec 100644 --- a/src/webserver/controllers/list/listController.js +++ b/src/webserver/controllers/list/listController.js @@ -1,6 +1,7 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); +import TMDB from "../../../tmdb/tmdb.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); // there should be a translate function from query params to @@ -65,7 +66,7 @@ const popularShows = (req, res) => const topRatedShows = (req, res) => fetchTmdbList(req, res, "miscTopRatedTvs", "show"); -module.exports = { +export default { nowPlayingMovies, popularMovies, topRatedMovies, diff --git a/src/webserver/controllers/misc/emoji.js b/src/webserver/controllers/misc/emoji.js index fbc7086..68b2764 100644 --- a/src/webserver/controllers/misc/emoji.js +++ b/src/webserver/controllers/misc/emoji.js @@ -16,12 +16,10 @@ const randomEmoji = () => { * @param {Response} res * @returns {Callback} */ -function emojiController(req, res) { +export default function emojiController(req, res) { res.send({ success: true, emoji: randomEmoji(), message: "Happy emoji-ing! 🌝" }); } - -module.exports = emojiController; diff --git a/src/webserver/controllers/movie/credits.js b/src/webserver/controllers/movie/credits.js index ad467dd..e66764e 100644 --- a/src/webserver/controllers/movie/credits.js +++ b/src/webserver/controllers/movie/credits.js @@ -1,6 +1,7 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); +import TMDB from "../../../tmdb/tmdb.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const movieCreditsController = (req, res) => { @@ -19,4 +20,4 @@ const movieCreditsController = (req, res) => { }); }; -module.exports = movieCreditsController; +export default movieCreditsController; diff --git a/src/webserver/controllers/movie/info.js b/src/webserver/controllers/movie/info.js index aa6b486..ae1009d 100644 --- a/src/webserver/controllers/movie/info.js +++ b/src/webserver/controllers/movie/info.js @@ -1,7 +1,8 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); -const Plex = require("../../../plex/plex"); +import TMDB from "../../../tmdb/tmdb.js"; +import Plex from "../../../plex/plex.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const plex = new Plex(configuration.get("plex", "ip")); @@ -52,4 +53,4 @@ async function movieInfoController(req, res) { } } -module.exports = movieInfoController; +export default movieInfoController; diff --git a/src/webserver/controllers/movie/releaseDates.js b/src/webserver/controllers/movie/releaseDates.js index 74ad3d8..43d1b30 100644 --- a/src/webserver/controllers/movie/releaseDates.js +++ b/src/webserver/controllers/movie/releaseDates.js @@ -1,6 +1,7 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); +import TMDB from "../../../tmdb/tmdb.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const movieReleaseDatesController = (req, res) => { @@ -19,4 +20,4 @@ const movieReleaseDatesController = (req, res) => { }); }; -module.exports = movieReleaseDatesController; +export default movieReleaseDatesController; diff --git a/src/webserver/controllers/person/credits.js b/src/webserver/controllers/person/credits.js index 72d9c5a..5b71717 100644 --- a/src/webserver/controllers/person/credits.js +++ b/src/webserver/controllers/person/credits.js @@ -1,6 +1,7 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); +import TMDB from "../../../tmdb/tmdb.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const personCreditsController = (req, res) => { @@ -19,4 +20,4 @@ const personCreditsController = (req, res) => { }); }; -module.exports = personCreditsController; +export default personCreditsController; diff --git a/src/webserver/controllers/person/info.js b/src/webserver/controllers/person/info.js index 5a00102..ae7fc77 100644 --- a/src/webserver/controllers/person/info.js +++ b/src/webserver/controllers/person/info.js @@ -1,6 +1,7 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); +import TMDB from "../../../tmdb/tmdb.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); /** @@ -36,4 +37,4 @@ async function personInfoController(req, res) { } } -module.exports = personInfoController; +export default personInfoController; diff --git a/src/webserver/controllers/pirate/addMagnet.js b/src/webserver/controllers/pirate/addMagnet.js index 2ff7599..67d5dae 100644 --- a/src/webserver/controllers/pirate/addMagnet.js +++ b/src/webserver/controllers/pirate/addMagnet.js @@ -5,17 +5,17 @@ * @Last Modified time: 2017-10-21 15:32:43 */ -const PirateRepository = require("../../../pirate/pirateRepository"); +import { AddMagnet } from "../../../pirate/pirateRepository.js"; function addMagnet(req, res) { const { magnet, name } = req.body; const tmdbId = req.body?.tmdb_id; - PirateRepository.AddMagnet(magnet, name, tmdbId) + AddMagnet(magnet, name, tmdbId) .then(result => res.send(result)) .catch(error => { res.status(500).send({ success: false, message: error.message }); }); } -module.exports = addMagnet; +export default addMagnet; diff --git a/src/webserver/controllers/pirate/searchTheBay.js b/src/webserver/controllers/pirate/searchTheBay.js index 84516d4..34b6f07 100644 --- a/src/webserver/controllers/pirate/searchTheBay.js +++ b/src/webserver/controllers/pirate/searchTheBay.js @@ -5,7 +5,7 @@ * @Last Modified time: 2018-02-26 19:56:32 */ -const PirateRepository = require("../../../pirate/pirateRepository"); +import { SearchPiratebay } from "../../../pirate/pirateRepository.js"; // const pirateRepository = new PirateRepository(); /** @@ -17,7 +17,7 @@ const PirateRepository = require("../../../pirate/pirateRepository"); function updateRequested(req, res) { const { query, page, type } = req.query; - PirateRepository.SearchPiratebay(query, page, type) + SearchPiratebay(query, page, type) .then(result => { res.send({ success: true, results: result }); }) @@ -26,4 +26,4 @@ function updateRequested(req, res) { }); } -module.exports = updateRequested; +export default updateRequested; diff --git a/src/webserver/controllers/plex/fetchRequested.js b/src/webserver/controllers/plex/fetchRequested.js index 14ba536..ded3fcc 100644 --- a/src/webserver/controllers/plex/fetchRequested.js +++ b/src/webserver/controllers/plex/fetchRequested.js @@ -1,4 +1,4 @@ -const RequestRepository = require("../../../plex/requestRepository"); +import RequestRepository from "../../../plex/requestRepository.js"; const requestRepository = new RequestRepository(); @@ -26,4 +26,4 @@ function fetchRequestedController(req, res) { }); } -module.exports = fetchRequestedController; +export default fetchRequestedController; diff --git a/src/webserver/controllers/plex/hookDump.js b/src/webserver/controllers/plex/hookDump.js index bd39fcb..12c4ea6 100644 --- a/src/webserver/controllers/plex/hookDump.js +++ b/src/webserver/controllers/plex/hookDump.js @@ -5,4 +5,4 @@ function hookDumpController(req, res) { res.status(200); } -module.exports = hookDumpController; +export default hookDumpController; diff --git a/src/webserver/controllers/plex/plexPlaying.js b/src/webserver/controllers/plex/plexPlaying.js index 4c07c17..cb9f290 100644 --- a/src/webserver/controllers/plex/plexPlaying.js +++ b/src/webserver/controllers/plex/plexPlaying.js @@ -1,5 +1,7 @@ -const PlexRepository = require("../../../plex/plexRepository"); -const configuration = require("../../../config/configuration").getInstance(); +import PlexRepository from "../../../plex/plexRepository.js"; +import Configuration from "../../../config/configuration.js"; + +const configuration = Configuration.getInstance(); const plexRepository = new PlexRepository( configuration.get("plex", "ip"), @@ -17,4 +19,4 @@ function playingController(req, res) { }); } -module.exports = playingController; +export default playingController; diff --git a/src/webserver/controllers/plex/readRequest.js b/src/webserver/controllers/plex/readRequest.js index 04d8c98..e03cdd3 100644 --- a/src/webserver/controllers/plex/readRequest.js +++ b/src/webserver/controllers/plex/readRequest.js @@ -1,4 +1,4 @@ -const RequestRepository = require("../../../plex/requestRepository"); +import RequestRepository from "../../../plex/requestRepository.js"; const requestRepository = new RequestRepository(); @@ -21,4 +21,4 @@ function readRequestController(req, res) { }); } -module.exports = readRequestController; +export default readRequestController; diff --git a/src/webserver/controllers/plex/search.js b/src/webserver/controllers/plex/search.js index 50162e9..cf9dc09 100644 --- a/src/webserver/controllers/plex/search.js +++ b/src/webserver/controllers/plex/search.js @@ -1,5 +1,7 @@ -const configuration = require("../../../config/configuration").getInstance(); -const Plex = require("../../../plex/plex"); +import Plex from "../../../plex/plex.js"; +import Configuration from "../../../config/configuration.js"; + +const configuration = Configuration.getInstance(); const plex = new Plex(configuration.get("plex", "ip")); @@ -28,4 +30,4 @@ function searchPlexController(req, res) { }); } -module.exports = searchPlexController; +export default searchPlexController; diff --git a/src/webserver/controllers/plex/searchMedia.js b/src/webserver/controllers/plex/searchMedia.js index 07d941d..773021f 100644 --- a/src/webserver/controllers/plex/searchMedia.js +++ b/src/webserver/controllers/plex/searchMedia.js @@ -1,5 +1,7 @@ -const PlexRepository = require("../../../plex/plexRepository"); -const configuration = require("../../../config/configuration").getInstance(); +import PlexRepository from "../../../plex/plexRepository.js"; +import Configuration from "../../../config/configuration.js"; + +const configuration = Configuration.getInstance(); const plexRepository = new PlexRepository( configuration.get("plex", "ip"), @@ -33,4 +35,4 @@ function searchMediaController(req, res) { }); } -module.exports = searchMediaController; +export default searchMediaController; diff --git a/src/webserver/controllers/plex/searchRequest.js b/src/webserver/controllers/plex/searchRequest.js index b7ce101..6611764 100644 --- a/src/webserver/controllers/plex/searchRequest.js +++ b/src/webserver/controllers/plex/searchRequest.js @@ -1,6 +1,6 @@ -const SearchHistory = require("../../../searchHistory/searchHistory"); -const Cache = require("../../../tmdb/cache"); -const RequestRepository = require("../../../plex/requestRepository"); +import SearchHistory from "../../../searchHistory/searchHistory.js"; +import Cache from "../../../tmdb/cache.js"; +import RequestRepository from "../../../plex/requestRepository.js"; const cache = new Cache(); const requestRepository = new RequestRepository(cache); @@ -21,4 +21,4 @@ function searchRequestController(req, res) { }); } -module.exports = searchRequestController; +export default searchRequestController; diff --git a/src/webserver/controllers/plex/submitRequest.js b/src/webserver/controllers/plex/submitRequest.js index 6039c47..cc50294 100644 --- a/src/webserver/controllers/plex/submitRequest.js +++ b/src/webserver/controllers/plex/submitRequest.js @@ -1,7 +1,8 @@ -const configuration = require("../../../config/configuration").getInstance(); -const RequestRepository = require("../../../request/request"); -const TMDB = require("../../../tmdb/tmdb"); +import RequestRepository from "../../../request/request.js"; +import TMDB from "../../../tmdb/tmdb.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const request = new RequestRepository(); @@ -57,4 +58,4 @@ function submitRequestController(req, res) { ); } -module.exports = submitRequestController; +export default submitRequestController; diff --git a/src/webserver/controllers/plex/updateRequested.js b/src/webserver/controllers/plex/updateRequested.js index 0fd4b18..a8672ab 100644 --- a/src/webserver/controllers/plex/updateRequested.js +++ b/src/webserver/controllers/plex/updateRequested.js @@ -1,4 +1,4 @@ -const RequestRepository = require("../../../plex/requestRepository"); +import RequestRepository from "../../../plex/requestRepository.js"; const requestRepository = new RequestRepository(); @@ -23,4 +23,4 @@ function updateRequested(req, res) { }); } -module.exports = updateRequested; +export default updateRequested; diff --git a/src/webserver/controllers/plex/watchDirectLink.js b/src/webserver/controllers/plex/watchDirectLink.js index dabee21..3e61754 100644 --- a/src/webserver/controllers/plex/watchDirectLink.js +++ b/src/webserver/controllers/plex/watchDirectLink.js @@ -1,6 +1,7 @@ -const configuration = require("../../../config/configuration").getInstance(); -const Plex = require("../../../plex/plex"); +import Plex from "../../../plex/plex.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const plex = new Plex(configuration.get("plex", "ip")); /** @@ -25,4 +26,4 @@ function watchDirectLink(req, res) { }); } -module.exports = watchDirectLink; +export default watchDirectLink; diff --git a/src/webserver/controllers/request/fetchAllRequests.js b/src/webserver/controllers/request/fetchAllRequests.js index 252d76f..ed4bc41 100644 --- a/src/webserver/controllers/request/fetchAllRequests.js +++ b/src/webserver/controllers/request/fetchAllRequests.js @@ -1,4 +1,4 @@ -const RequestRepository = require("../../../request/request"); +import RequestRepository from "../../../request/request.js"; const request = new RequestRepository(); @@ -24,4 +24,4 @@ function fetchAllRequests(req, res) { }); } -module.exports = fetchAllRequests; +export default fetchAllRequests; diff --git a/src/webserver/controllers/request/getRequest.js b/src/webserver/controllers/request/getRequest.js index d73f091..b1912ae 100644 --- a/src/webserver/controllers/request/getRequest.js +++ b/src/webserver/controllers/request/getRequest.js @@ -1,4 +1,4 @@ -const RequestRepository = require("../../../request/request"); +import RequestRepository from "../../../request/request.js"; const request = new RequestRepository(); @@ -37,4 +37,4 @@ function fetchAllRequests(req, res) { }); } -module.exports = fetchAllRequests; +export default fetchAllRequests; diff --git a/src/webserver/controllers/request/requestTmdbId.js b/src/webserver/controllers/request/requestTmdbId.js index 01d5c1a..1f061b9 100644 --- a/src/webserver/controllers/request/requestTmdbId.js +++ b/src/webserver/controllers/request/requestTmdbId.js @@ -1,10 +1,11 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); -const RequestRepository = require("../../../request/request"); +import TMDB from "../../../tmdb/tmdb.js"; +import RequestRepository from "../../../request/request.js"; +import Configuration from "../../../config/configuration.js"; +// import sendSMS from "../../../notifications/sms.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const request = new RequestRepository(); -// const { sendSMS } = require("src/notifications/sms"); const tmdbMovieInfo = id => { return tmdb.movieInfo(id); @@ -65,4 +66,4 @@ function requestTmdbIdController(req, res) { }); } -module.exports = requestTmdbIdController; +export default requestTmdbIdController; diff --git a/src/webserver/controllers/search/movieSearch.js b/src/webserver/controllers/search/movieSearch.js index d863cc4..00a50f2 100644 --- a/src/webserver/controllers/search/movieSearch.js +++ b/src/webserver/controllers/search/movieSearch.js @@ -1,7 +1,8 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); -const SearchHistory = require("../../../searchHistory/searchHistory"); +import TMDB from "../../../tmdb/tmdb.js"; +import SearchHistory from "../../../searchHistory/searchHistory.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const searchHistory = new SearchHistory(); @@ -33,4 +34,4 @@ function movieSearchController(req, res) { }); } -module.exports = movieSearchController; +export default movieSearchController; diff --git a/src/webserver/controllers/search/multiSearch.js b/src/webserver/controllers/search/multiSearch.js index f16ce30..95610cf 100644 --- a/src/webserver/controllers/search/multiSearch.js +++ b/src/webserver/controllers/search/multiSearch.js @@ -1,7 +1,8 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); -const SearchHistory = require("../../../searchHistory/searchHistory"); +import TMDB from "../../../tmdb/tmdb.js"; +import SearchHistory from "../../../searchHistory/searchHistory.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const searchHistory = new SearchHistory(); @@ -33,4 +34,4 @@ function multiSearchController(req, res) { }); } -module.exports = multiSearchController; +export default multiSearchController; diff --git a/src/webserver/controllers/search/personSearch.js b/src/webserver/controllers/search/personSearch.js index 838bed0..c6ffd29 100644 --- a/src/webserver/controllers/search/personSearch.js +++ b/src/webserver/controllers/search/personSearch.js @@ -1,7 +1,8 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); -const SearchHistory = require("../../../searchHistory/searchHistory"); +import TMDB from "../../../tmdb/tmdb.js"; +import SearchHistory from "../../../searchHistory/searchHistory.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const searchHistory = new SearchHistory(); @@ -33,4 +34,4 @@ function personSearchController(req, res) { }); } -module.exports = personSearchController; +export default personSearchController; diff --git a/src/webserver/controllers/search/showSearch.js b/src/webserver/controllers/search/showSearch.js index 534d1d0..c70de1a 100644 --- a/src/webserver/controllers/search/showSearch.js +++ b/src/webserver/controllers/search/showSearch.js @@ -1,7 +1,8 @@ -const SearchHistory = require("../../../searchHistory/searchHistory"); -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); +import TMDB from "../../../tmdb/tmdb.js"; +import SearchHistory from "../../../searchHistory/searchHistory.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const searchHistory = new SearchHistory(); @@ -35,4 +36,4 @@ function showSearchController(req, res) { }); } -module.exports = showSearchController; +export default showSearchController; diff --git a/src/webserver/controllers/seasoned/readStrays.js b/src/webserver/controllers/seasoned/readStrays.js index c07e7a7..876e0e2 100644 --- a/src/webserver/controllers/seasoned/readStrays.js +++ b/src/webserver/controllers/seasoned/readStrays.js @@ -1,4 +1,4 @@ -const StrayRepository = require("../../../seasoned/strayRepository"); +import StrayRepository from "../../../seasoned/strayRepository.js"; const strayRepository = new StrayRepository(); @@ -14,4 +14,4 @@ function readStraysController(req, res) { }); } -module.exports = readStraysController; +export default readStraysController; diff --git a/src/webserver/controllers/seasoned/strayById.js b/src/webserver/controllers/seasoned/strayById.js index 387bce8..09354ea 100644 --- a/src/webserver/controllers/seasoned/strayById.js +++ b/src/webserver/controllers/seasoned/strayById.js @@ -1,4 +1,4 @@ -const StrayRepository = require("../../../seasoned/strayRepository"); +import StrayRepository from "../../../seasoned/strayRepository.js"; const strayRepository = new StrayRepository(); @@ -15,4 +15,4 @@ function strayByIdController(req, res) { }); } -module.exports = strayByIdController; +export default strayByIdController; diff --git a/src/webserver/controllers/seasoned/verifyStray.js b/src/webserver/controllers/seasoned/verifyStray.js index cb7cf6d..c21f2b9 100644 --- a/src/webserver/controllers/seasoned/verifyStray.js +++ b/src/webserver/controllers/seasoned/verifyStray.js @@ -1,4 +1,4 @@ -const StrayRepository = require("../../../seasoned/strayRepository"); +import StrayRepository from "../../../seasoned/strayRepository.js"; const strayRepository = new StrayRepository(); @@ -15,4 +15,4 @@ function verifyStrayController(req, res) { }); } -module.exports = verifyStrayController; +export default verifyStrayController; diff --git a/src/webserver/controllers/show/credits.js b/src/webserver/controllers/show/credits.js index 672f3e8..2feee40 100644 --- a/src/webserver/controllers/show/credits.js +++ b/src/webserver/controllers/show/credits.js @@ -1,6 +1,7 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); +import TMDB from "../../../tmdb/tmdb.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const showCreditsController = (req, res) => { @@ -19,4 +20,4 @@ const showCreditsController = (req, res) => { }); }; -module.exports = showCreditsController; +export default showCreditsController; diff --git a/src/webserver/controllers/show/info.js b/src/webserver/controllers/show/info.js index 68f7301..300af7d 100644 --- a/src/webserver/controllers/show/info.js +++ b/src/webserver/controllers/show/info.js @@ -1,7 +1,8 @@ -const configuration = require("../../../config/configuration").getInstance(); -const TMDB = require("../../../tmdb/tmdb"); -const Plex = require("../../../plex/plex"); +import TMDB from "../../../tmdb/tmdb.js"; +import Plex from "../../../plex/plex.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const tmdb = new TMDB(configuration.get("tmdb", "apiKey")); const plex = new Plex(configuration.get("plex", "ip")); @@ -47,4 +48,4 @@ async function showInfoController(req, res) { } } -module.exports = showInfoController; +export default showInfoController; diff --git a/src/webserver/controllers/user/authenticatePlexAccount.js b/src/webserver/controllers/user/authenticatePlexAccount.js index 8ac5896..1cefa75 100644 --- a/src/webserver/controllers/user/authenticatePlexAccount.js +++ b/src/webserver/controllers/user/authenticatePlexAccount.js @@ -1,45 +1,39 @@ -const FormData = require("form-data"); -const UserRepository = require("../../../user/userRepository"); +import FormData from "form-data"; +import UserRepository from "../../../user/userRepository.js"; const userRepository = new UserRepository(); class PlexAuthenticationError extends Error { - constructor(errorResponse, statusCode) { + constructor(errorResponse) { const message = "Unexptected error while authenticating to plex signin api. View error response."; super(message); this.errorResponse = errorResponse; - this.statusCode = statusCode; + this.statusCode = 500; this.success = false; + this.source = "plex"; } } -function handleError(error, res) { - const status = error?.status; - let { message, source } = error; +class PlexUnauthorizedError extends Error { + constructor(errorResponse) { + const message = "Unauthorized. Please check plex credentials."; + super(message); - if (status && message) { - if (status === 401) { - message = "Unauthorized. Please check plex credentials."; - source = "plex"; - } - - res.status(status).send({ success: false, message, source }); - } else { - // eslint-disable-next-line no-console - console.log("caught authenticate plex account controller error", error); - res.status(500).send({ - message: - "An unexpected error occured while authenticating your account with plex", - source - }); + this.errorResponse = errorResponse; + this.statusCode = 401; + this.success = false; + this.source = "plex"; } } function handleResponse(response) { if (!response.ok) { - throw new PlexAuthenticationError(response.statusText, response.status); + if (response?.status === 401) + throw new PlexUnauthorizedError(response?.statusText); + + throw new PlexAuthenticationError(response?.statusText); } return response.json(); @@ -80,7 +74,16 @@ function link(req, res) { "Successfully authenticated and linked plex account with seasoned request." }) ) - .catch(error => handleError(error, res)); + .catch(error => + res.status(error?.statusCode || 500).send({ + message: + error?.message || + "Unexptected error occured while linking plex account", + success: error?.success || false, + source: error?.source, + errorResponse: error?.errorResponse + }) + ); } function unlink(req, res) { @@ -94,10 +97,16 @@ function unlink(req, res) { message: "Successfully unlinked plex account from seasoned request." }) ) - .catch(error => handleError(error, res)); + .catch(error => + res.status(error?.statusCode || 500).send({ + message: + error?.message || + "Unexptected error occured while unlinking plex account", + success: error?.success || false, + source: error?.source, + errorResponse: error?.errorResponse + }) + ); } -module.exports = { - link, - unlink -}; +export default { link, unlink }; diff --git a/src/webserver/controllers/user/login.js b/src/webserver/controllers/user/login.js index 0438a89..3215701 100644 --- a/src/webserver/controllers/user/login.js +++ b/src/webserver/controllers/user/login.js @@ -1,9 +1,10 @@ -const User = require("../../../user/user"); -const Token = require("../../../user/token"); -const UserSecurity = require("../../../user/userSecurity"); -const UserRepository = require("../../../user/userRepository"); -const configuration = require("../../../config/configuration").getInstance(); +import User from "../../../user/user.js"; +import Token from "../../../user/token.js"; +import UserSecurity from "../../../user/userSecurity.js"; +import UserRepository from "../../../user/userRepository.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const secret = configuration.get("authentication", "secret"); const userSecurity = new UserSecurity(); const userRepository = new UserRepository(); @@ -54,4 +55,4 @@ async function loginController(req, res) { } } -module.exports = loginController; +export default loginController; diff --git a/src/webserver/controllers/user/logout.js b/src/webserver/controllers/user/logout.js index 60e4e58..30aa520 100644 --- a/src/webserver/controllers/user/logout.js +++ b/src/webserver/controllers/user/logout.js @@ -13,4 +13,4 @@ async function logoutController(req, res) { }); } -module.exports = logoutController; +export default logoutController; diff --git a/src/webserver/controllers/user/register.js b/src/webserver/controllers/user/register.js index 655f920..7917405 100644 --- a/src/webserver/controllers/user/register.js +++ b/src/webserver/controllers/user/register.js @@ -1,8 +1,9 @@ -const User = require("../../../user/user"); -const Token = require("../../../user/token"); -const UserSecurity = require("../../../user/userSecurity"); -const configuration = require("../../../config/configuration").getInstance(); +import User from "../../../user/user.js"; +import Token from "../../../user/token.js"; +import UserSecurity from "../../../user/userSecurity.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const secret = configuration.get("authentication", "secret"); const userSecurity = new UserSecurity(); @@ -42,4 +43,4 @@ function registerController(req, res) { }); } -module.exports = registerController; +export default registerController; diff --git a/src/webserver/controllers/user/requests.js b/src/webserver/controllers/user/requests.js index 5fe0f22..e4cc213 100644 --- a/src/webserver/controllers/user/requests.js +++ b/src/webserver/controllers/user/requests.js @@ -1,4 +1,4 @@ -const RequestRepository = require("../../../plex/requestRepository"); +import RequestRepository from "../../../plex/requestRepository.js"; const requestRepository = new RequestRepository(); @@ -25,4 +25,4 @@ function requestsController(req, res) { }); } -module.exports = requestsController; +export default requestsController; diff --git a/src/webserver/controllers/user/searchHistory.js b/src/webserver/controllers/user/searchHistory.js index 2d6b70a..81af85c 100644 --- a/src/webserver/controllers/user/searchHistory.js +++ b/src/webserver/controllers/user/searchHistory.js @@ -1,4 +1,4 @@ -const SearchHistory = require("../../../searchHistory/searchHistory"); +import SearchHistory from "../../../searchHistory/searchHistory.js"; const searchHistory = new SearchHistory(); @@ -21,4 +21,4 @@ function historyController(req, res) { }); } -module.exports = historyController; +export default historyController; diff --git a/src/webserver/controllers/user/settings.js b/src/webserver/controllers/user/settings.js index adf0d8d..946ec2d 100644 --- a/src/webserver/controllers/user/settings.js +++ b/src/webserver/controllers/user/settings.js @@ -1,4 +1,4 @@ -const UserRepository = require("../../../user/userRepository"); +import UserRepository from "../../../user/userRepository.js"; const userRepository = new UserRepository(); /** @@ -7,7 +7,7 @@ const userRepository = new UserRepository(); * @param {Response} res * @returns {Callback} */ -const getSettingsController = (req, res) => { +export function getSettingsController(req, res) { const username = req.loggedInUser ? req.loggedInUser.username : null; userRepository @@ -18,9 +18,9 @@ const getSettingsController = (req, res) => { .catch(error => { res.status(404).send({ success: false, message: error.message }); }); -}; +} -const updateSettingsController = (req, res) => { +export function updateSettingsController(req, res) { const username = req.loggedInUser ? req.loggedInUser.username : null; // const idempotencyKey = req.headers("Idempotency-Key"); // TODO implement better transactions @@ -35,9 +35,4 @@ const updateSettingsController = (req, res) => { .catch(error => { res.status(404).send({ success: false, message: error.message }); }); -}; - -module.exports = { - getSettingsController, - updateSettingsController -}; +} diff --git a/src/webserver/controllers/user/viewHistory.js b/src/webserver/controllers/user/viewHistory.js index 865a3d7..e74fd04 100644 --- a/src/webserver/controllers/user/viewHistory.js +++ b/src/webserver/controllers/user/viewHistory.js @@ -1,6 +1,7 @@ -const configuration = require("../../../config/configuration").getInstance(); -const Tautulli = require("../../../tautulli/tautulli"); +import Tautulli from "../../../tautulli/tautulli.js"; +import Configuration from "../../../config/configuration.js"; +const configuration = Configuration.getInstance(); const apiKey = configuration.get("tautulli", "apiKey"); const ip = configuration.get("tautulli", "ip"); const port = configuration.get("tautulli", "port"); @@ -101,9 +102,9 @@ function userViewHistoryController(req, res) { // const username = user.username; } -module.exports = { +export default { watchTimeStatsController, - getPlaysByDaysController, getPlaysByDayOfWeekController, + getPlaysByDaysController, userViewHistoryController }; diff --git a/src/webserver/middleware/mustBeAdmin.js b/src/webserver/middleware/mustBeAdmin.js index 89e82a6..1721d0d 100644 --- a/src/webserver/middleware/mustBeAdmin.js +++ b/src/webserver/middleware/mustBeAdmin.js @@ -1,4 +1,4 @@ -const establishedDatabase = require("../../database/database"); +import establishedDatabase from "../../database/database.js"; // eslint-disable-next-line consistent-return const mustBeAdmin = (req, res, next) => { @@ -28,4 +28,4 @@ const mustBeAdmin = (req, res, next) => { }); }; -module.exports = mustBeAdmin; +export default mustBeAdmin; diff --git a/src/webserver/middleware/mustBeAuthenticated.js b/src/webserver/middleware/mustBeAuthenticated.js index 4cbd8eb..63f664c 100644 --- a/src/webserver/middleware/mustBeAuthenticated.js +++ b/src/webserver/middleware/mustBeAuthenticated.js @@ -10,4 +10,4 @@ const mustBeAuthenticated = (req, res, next) => { next(); }; -module.exports = mustBeAuthenticated; +export default mustBeAuthenticated; diff --git a/src/webserver/middleware/mustHaveAccountLinkedToPlex.js b/src/webserver/middleware/mustHaveAccountLinkedToPlex.js index 95fd3cc..e4b7d54 100644 --- a/src/webserver/middleware/mustHaveAccountLinkedToPlex.js +++ b/src/webserver/middleware/mustHaveAccountLinkedToPlex.js @@ -1,4 +1,4 @@ -const establishedDatabase = require("../../database/database"); +import establishedDatabase from "../../database/database.js"; /* eslint-disable consistent-return */ const mustHaveAccountLinkedToPlex = (req, res, next) => { @@ -33,4 +33,4 @@ const mustHaveAccountLinkedToPlex = (req, res, next) => { }; /* eslint-enable consistent-return */ -module.exports = mustHaveAccountLinkedToPlex; +export default mustHaveAccountLinkedToPlex; diff --git a/src/webserver/middleware/reqTokenToUser.js b/src/webserver/middleware/reqTokenToUser.js index bde99f6..5e45570 100644 --- a/src/webserver/middleware/reqTokenToUser.js +++ b/src/webserver/middleware/reqTokenToUser.js @@ -1,7 +1,8 @@ /* eslint-disable no-param-reassign */ -const configuration = require("../../config/configuration").getInstance(); -const Token = require("../../user/token"); +import Configuration from "../../config/configuration.js"; +import Token from "../../user/token.js"; +const configuration = Configuration.getInstance(); const secret = configuration.get("authentication", "secret"); // Token example: @@ -25,4 +26,4 @@ const reqTokenToUser = (req, res, next) => { return next(); }; -module.exports = reqTokenToUser; +export default reqTokenToUser; diff --git a/src/webserver/server.js b/src/webserver/server.js index dae8d96..3de69c2 100644 --- a/src/webserver/server.js +++ b/src/webserver/server.js @@ -1,9 +1,15 @@ -const config = require("../config/configuration").getInstance(); -const app = require("./app"); +import Configuration from "../config/configuration.js"; +import app from "./app.js"; -module.exports = app.listen(config.get("webserver", "port"), () => { +const configuration = Configuration.getInstance(); + +export default app.listen(configuration.get("webserver", "port"), () => { /* eslint-disable no-console */ console.log("seasonedAPI"); - console.log(`Database is located at ${config.get("database", "host")}`); - console.log(`Webserver is listening on ${config.get("webserver", "port")}`); + console.log( + `Database is located at ${configuration.get("database", "host")}` + ); + console.log( + `Webserver is listening on ${configuration.get("webserver", "port")}` + ); }); diff --git a/tests/helpers/createCacheEntry.js b/tests/helpers/createCacheEntry.js index 910b980..9a9ccd4 100644 --- a/tests/helpers/createCacheEntry.js +++ b/tests/helpers/createCacheEntry.js @@ -1,7 +1,5 @@ -const redisCache = require("../../src/cache/redis"); +import redisCache from "../../src/cache/redis.js"; -function createCacheEntry(key, value) { +export default function createCacheEntry(key, value) { return redisCache.set(key, value); } - -module.exports = createCacheEntry; diff --git a/tests/helpers/createToken.js b/tests/helpers/createToken.js index 6b4485d..cc661f4 100644 --- a/tests/helpers/createToken.js +++ b/tests/helpers/createToken.js @@ -1,10 +1,8 @@ -const User = require("../../src/user/user"); -const Token = require("../../src/user/token"); +import User from "../../src/user/user.js"; +import Token from "../../src/user/token.js"; -function createToken(username, secret) { +export default function createToken(username, secret) { const user = new User(username); const token = new Token(user); return token.toString(secret); } - -module.exports = createToken; diff --git a/tests/helpers/createUser.js b/tests/helpers/createUser.js index d4b72dd..9424ba7 100644 --- a/tests/helpers/createUser.js +++ b/tests/helpers/createUser.js @@ -1,11 +1,9 @@ -const User = require("../../src/user/user"); -const UserSecurity = require("../../src/user/userSecurity"); +import User from "../../src/user/user.js"; +import UserSecurity from "../../src/user/userSecurity.js"; -function createUser(username, password) { +export default function createUser(username, password) { const userSecurity = new UserSecurity(); const user = new User(username); return userSecurity.createNewUser(user, password); } - -module.exports = createUser; diff --git a/tests/helpers/importFixture.js b/tests/helpers/importFixture.js new file mode 100644 index 0000000..38198a2 --- /dev/null +++ b/tests/helpers/importFixture.js @@ -0,0 +1,23 @@ +import fs from "fs"; +import path from "path"; +import { fileURLToPath } from "url"; + +const __filename = fileURLToPath(import.meta.url); +const __dirname = path.dirname(__filename); + +function determineLocation(fixtureFilename) { + return path.join(__dirname, "..", "fixtures", fixtureFilename); +} + +export default function readFixtureContents(fixtureFilename) { + const location = determineLocation(fixtureFilename); + + let content = {}; + try { + content = JSON.parse(fs.readFileSync(location, { encoding: "utf-8" })); + } catch (err) { + console.error(`Error loading fixture file at path: ${location}`); + } + + return content; +} diff --git a/tests/helpers/resetDatabase.js b/tests/helpers/resetDatabase.js index ae202f4..c830864 100644 --- a/tests/helpers/resetDatabase.js +++ b/tests/helpers/resetDatabase.js @@ -10,13 +10,11 @@ // } // } -const establishedDatabase = require("../../src/database/database"); +import establishedDatabase from "../../src/database/database.js"; // const establishedDatabase = new EstablishedDatabase(); -function resetDatabase() { +export default function resetDatabase() { return Promise.resolve() .then(() => establishedDatabase.tearDown()) .then(() => establishedDatabase.setUp()); } - -module.exports = resetDatabase; diff --git a/tests/helpers/tmdbMock2.js b/tests/helpers/tmdbMock2.js index ba12c16..3105755 100644 --- a/tests/helpers/tmdbMock2.js +++ b/tests/helpers/tmdbMock2.js @@ -12,4 +12,4 @@ const tmdbMock = () => ({ } }); -module.exports = tmdbMock; +export default tmdbMock; diff --git a/tests/system/asADeveloperIWantTheServerToRegister.js b/tests/system/asADeveloperIWantTheServerToRegister.js index c205081..b61e7da 100644 --- a/tests/system/asADeveloperIWantTheServerToRegister.js +++ b/tests/system/asADeveloperIWantTheServerToRegister.js @@ -1,9 +1,9 @@ -const assert = require("assert"); -const chai = require("chai"); -const chaiHttp = require("chai-http"); +import assert from "assert"; +import chai from "chai"; +import chaiHttp from "chai-http"; -const server = require("../../src/webserver/server"); -const resetDatabase = require("../helpers/resetDatabase"); +import server from "../../src/webserver/server.js"; +import resetDatabase from "../helpers/resetDatabase.js"; chai.use(chaiHttp); diff --git a/tests/system/asADeveloperIWantTheServerToStart.js.disabled b/tests/system/asADeveloperIWantTheServerToStart.js.disabled index c957eb4..ea31668 100644 --- a/tests/system/asADeveloperIWantTheServerToStart.js.disabled +++ b/tests/system/asADeveloperIWantTheServerToStart.js.disabled @@ -1,6 +1,6 @@ /* eslint-disable no-return-assign */ -const net = require("net"); -const server = require("../../src/webserver/server"); +import net from "net"; +import server from "../../src/webserver/server.js"; describe("As a developer I want the server to start", () => { after(() => { diff --git a/tests/system/asADeveloperIWantToLogin.js b/tests/system/asADeveloperIWantToLogin.js index f920340..81a197d 100644 --- a/tests/system/asADeveloperIWantToLogin.js +++ b/tests/system/asADeveloperIWantToLogin.js @@ -1,10 +1,10 @@ -const assert = require("assert"); -const chai = require("chai"); -const chaiHttp = require("chai-http"); +import assert from "assert"; +import chai from "chai"; +import chaiHttp from "chai-http"; -const server = require("../../src/webserver/server"); -const createUser = require("../helpers/createUser"); -const resetDatabase = require("../helpers/resetDatabase"); +import server from "../../src/webserver/server.js"; +import createUser from "../helpers/createUser.js"; +import resetDatabase from "../helpers/resetDatabase.js"; chai.use(chaiHttp); diff --git a/tests/system/asAUserIWantAForbiddenErrorIfTheTokenIsMalformed.js b/tests/system/asAUserIWantAForbiddenErrorIfTheTokenIsMalformed.js index 8dc4c9c..156fb6d 100644 --- a/tests/system/asAUserIWantAForbiddenErrorIfTheTokenIsMalformed.js +++ b/tests/system/asAUserIWantAForbiddenErrorIfTheTokenIsMalformed.js @@ -1,9 +1,9 @@ -const assert = require("assert"); -const chai = require("chai"); -const chaiHttp = require("chai-http"); +import assert from "assert"; +import chai from "chai"; +import chaiHttp from "chai-http"; -const server = require("../../src/webserver/server"); -const resetDatabase = require("../helpers/resetDatabase"); +import server from "../../src/webserver/server.js"; +import resetDatabase from "../helpers/resetDatabase.js"; chai.use(chaiHttp); diff --git a/tests/system/asAUserIWantToGetErrorWhenRegisteringExistingUsername.js b/tests/system/asAUserIWantToGetErrorWhenRegisteringExistingUsername.js index 6a7248f..df2610d 100644 --- a/tests/system/asAUserIWantToGetErrorWhenRegisteringExistingUsername.js +++ b/tests/system/asAUserIWantToGetErrorWhenRegisteringExistingUsername.js @@ -1,10 +1,10 @@ -const assert = require("assert"); -const chai = require("chai"); -const chaiHttp = require("chai-http"); +import assert from "assert"; +import chai from "chai"; +import chaiHttp from "chai-http"; -const server = require("../../src/webserver/server"); -const createUser = require("../helpers/createUser"); -const resetDatabase = require("../helpers/resetDatabase"); +import server from "../../src/webserver/server.js"; +import createUser from "../helpers/createUser.js"; +import resetDatabase from "../helpers/resetDatabase.js"; chai.use(chaiHttp); diff --git a/tests/system/asAUserIWantToGetPopularMovies.js b/tests/system/asAUserIWantToGetPopularMovies.js index 3f4fedb..2a0216e 100644 --- a/tests/system/asAUserIWantToGetPopularMovies.js +++ b/tests/system/asAUserIWantToGetPopularMovies.js @@ -1,14 +1,18 @@ -const assert = require("assert"); -const chai = require("chai"); -const chaiHttp = require("chai-http"); +import assert from "assert"; +import chai from "chai"; +import chaiHttp from "chai-http"; -const server = require("../../src/webserver/server"); -const resetDatabase = require("../helpers/resetDatabase"); -const createCacheEntry = require("../helpers/createCacheEntry"); -const popularMoviesSuccess = require("../fixtures/popular-movies-success-response.json"); +import server from "../../src/webserver/server.js"; +import resetDatabase from "../helpers/resetDatabase.js"; +import createCacheEntry from "../helpers/createCacheEntry.js"; +import readFixtureContents from "../helpers/importFixture.js"; chai.use(chaiHttp); +const popularMoviesSuccess = readFixtureContents( + "popular-movies-success-response.json" +); + describe("As a user I want to get popular movies", () => { beforeEach(() => resetDatabase()); beforeEach(() => createCacheEntry("tmdb/pm:1", popularMoviesSuccess)); diff --git a/tests/system/asAUserIWantToGetPopularShows.js b/tests/system/asAUserIWantToGetPopularShows.js index b2f0065..2d1b6da 100644 --- a/tests/system/asAUserIWantToGetPopularShows.js +++ b/tests/system/asAUserIWantToGetPopularShows.js @@ -1,14 +1,18 @@ -const assert = require("assert"); -const chai = require("chai"); -const chaiHttp = require("chai-http"); +import assert from "assert"; +import chai from "chai"; +import chaiHttp from "chai-http"; -const server = require("../../src/webserver/server"); -const resetDatabase = require("../helpers/resetDatabase"); -const createCacheEntry = require("../helpers/createCacheEntry"); -const popularShowsSuccess = require("../fixtures/popular-show-success-response.json"); +import server from "../../src/webserver/server.js"; +import resetDatabase from "../helpers/resetDatabase.js"; +import createCacheEntry from "../helpers/createCacheEntry.js"; +import readFixtureContents from "../helpers/importFixture.js"; chai.use(chaiHttp); +const popularShowsSuccess = readFixtureContents( + "popular-show-success-response.json" +); + describe("As a user I want to get popular shows", () => { beforeEach(() => resetDatabase()); beforeEach(() => createCacheEntry("tmdb/pt:1", popularShowsSuccess)); diff --git a/tests/system/asAUserIWantToRequestAMovie.js b/tests/system/asAUserIWantToRequestAMovie.js index 2fd9d73..3702d1f 100644 --- a/tests/system/asAUserIWantToRequestAMovie.js +++ b/tests/system/asAUserIWantToRequestAMovie.js @@ -1,16 +1,20 @@ -const assert = require("assert"); -const chai = require("chai"); -const chaiHttp = require("chai-http"); +import assert from "assert"; +import chai from "chai"; +import chaiHttp from "chai-http"; -const server = require("../../src/webserver/server"); -const createUser = require("../helpers/createUser"); -const createToken = require("../helpers/createToken"); -const resetDatabase = require("../helpers/resetDatabase"); -const createCacheEntry = require("../helpers/createCacheEntry"); -const infoMovieSuccess = require("../fixtures/blade_runner_2049-info-success-response.json"); +import server from "../../src/webserver/server.js"; +import createUser from "../helpers/createUser.js"; +import createToken from "../helpers/createToken.js"; +import resetDatabase from "../helpers/resetDatabase.js"; +import createCacheEntry from "../helpers/createCacheEntry.js"; +import readFixtureContents from "../helpers/importFixture.js"; chai.use(chaiHttp); +const infoMovieSuccess = readFixtureContents( + "blade_runner_2049-info-success-response.json" +); + describe("As a user I want to request a movie", () => { beforeEach(() => resetDatabase()); beforeEach(() => createUser("test_user", "test@gmail.com", "password")); diff --git a/tests/system/asAnAnonymousUserIWantToSearchForAMovie.js b/tests/system/asAnAnonymousUserIWantToSearchForAMovie.js index d2e6bb4..8b7c939 100644 --- a/tests/system/asAnAnonymousUserIWantToSearchForAMovie.js +++ b/tests/system/asAnAnonymousUserIWantToSearchForAMovie.js @@ -1,14 +1,18 @@ -const assert = require("assert"); -const chai = require("chai"); -const chaiHttp = require("chai-http"); +import assert from "assert"; +import chai from "chai"; +import chaiHttp from "chai-http"; -const server = require("../../src/webserver/server"); -const resetDatabase = require("../helpers/resetDatabase"); -const createCacheEntry = require("../helpers/createCacheEntry"); -const interstellarQuerySuccess = require("../fixtures/interstellar-query-movie-success-response.json"); +import server from "../../src/webserver/server.js"; +import resetDatabase from "../helpers/resetDatabase.js"; +import createCacheEntry from "../helpers/createCacheEntry.js"; +import readFixtureContents from "../helpers/importFixture.js"; chai.use(chaiHttp); +const interstellarQuerySuccess = readFixtureContents( + "interstellar-query-movie-success-response.json" +); + describe("As an anonymous user I want to search for a movie", () => { beforeEach(() => resetDatabase()); beforeEach(() => diff --git a/tests/unit/config/testConfig.js b/tests/unit/config/testConfig.js index 91ee935..f1a3402 100644 --- a/tests/unit/config/testConfig.js +++ b/tests/unit/config/testConfig.js @@ -1,78 +1,77 @@ -const assert = require("assert"); -const Config = require("../../../src/config/configuration"); +import assert from "assert"; +import Configuration from "../../../src/config/configuration.js"; + +const configuration = Configuration.getInstance(); + +let backedUpEnvironmentVariables; +let backedUpConfigFields; describe("Config", () => { beforeEach(() => { - this.backedUpEnvironmentVariables = { ...process.env }; - this.backedUpConfigFields = { ...Config.getInstance().fields }; + backedUpEnvironmentVariables = { ...process.env }; + backedUpConfigFields = { ...configuration.fields }; }); afterEach(() => { - process.env = this.backedUpEnvironmentVariables; - Config.getInstance().fields = this.backedUpConfigFields; + process.env = backedUpEnvironmentVariables; + configuration.fields = backedUpConfigFields; }); it("should retrieve section and option from config file", () => { - Config.getInstance().fields = { webserver: { port: 1337 } }; - assert.equal(Config.getInstance().get("webserver", "port"), 1337); + configuration.fields = { webserver: { port: 1337 } }; + assert.equal(configuration.get("webserver", "port"), 1337); }); it("should resolve to environment variables if option is filtered with env", () => { - Config.getInstance().fields = { + configuration.fields = { webserver: { port: "env|SEASONED_WEBSERVER_PORT" } }; process.env.SEASONED_WEBSERVER_PORT = "1338"; - assert.equal(Config.getInstance().get("webserver", "port"), 1338); + assert.equal(configuration.get("webserver", "port"), 1338); }); it("raises an exception if the environment variable does not exist", () => { - Config.getInstance().fields = { webserver: { port: "env|DOES_NOT_EXIST" } }; + configuration.fields = { webserver: { port: "env|DOES_NOT_EXIST" } }; process.env.SEASONED_WEBSERVER_PORT = "1338"; - assert.throws(() => Config.getInstance().get("webserver", "port"), /empty/); + assert.throws(() => configuration.get("webserver", "port"), /empty/); }); it("raises an exception if the environment variable is empty", () => { - Config.getInstance().fields = { + configuration.fields = { webserver: { port: "env|SEASONED_WEBSERVER_PORT" } }; process.env.SEASONED_WEBSERVER_PORT = ""; - assert.throws(() => Config.getInstance().get("webserver", "port"), /empty/); + assert.throws(() => configuration.get("webserver", "port"), /empty/); }); it("raises an exception if the section does not exist in the file", () => { - Config.getInstance().fields = { webserver: { port: "1338" } }; - assert.throws( - () => Config.getInstance().get("woops", "port"), - /does not exist/ - ); + configuration.fields = { webserver: { port: "1338" } }; + assert.throws(() => configuration.get("woops", "port"), /does not exist/); }); it("raises an exception if the option does not exist in the file", () => { - Config.getInstance().fields = { webserver: { port: "1338" } }; + configuration.fields = { webserver: { port: "1338" } }; assert.throws( - () => Config.getInstance().get("webserver", "woops"), + () => configuration.get("webserver", "woops"), /does not exist/ ); }); it("returns an array if field is an array", () => { - Config.getInstance().fields = { bouncer: { whitelist: [1, 2, 3] } }; - assert.deepEqual( - Config.getInstance().get("bouncer", "whitelist"), - [1, 2, 3] - ); + configuration.fields = { bouncer: { whitelist: [1, 2, 3] } }; + assert.deepEqual(configuration.get("bouncer", "whitelist"), [1, 2, 3]); }); it("decodes field as base64 if base64| is before the variable", () => { - Config.getInstance().fields = { webserver: { port: "base64|MTMzOA==" } }; - assert.equal(Config.getInstance().get("webserver", "port"), 1338); + configuration.fields = { webserver: { port: "base64|MTMzOA==" } }; + assert.equal(configuration.get("webserver", "port"), 1338); }); it("decodes environment variable as base64 if BASE64= is before the variable", () => { - Config.getInstance().fields = { + configuration.fields = { webserver: { port: "env|base64|SEASONED_WEBSERVER_PORT" } }; process.env.SEASONED_WEBSERVER_PORT = "MTMzOA=="; - assert.equal(Config.getInstance().get("webserver", "port"), 1338); + assert.equal(configuration.get("webserver", "port"), 1338); }); }); diff --git a/tests/unit/config/testField.js b/tests/unit/config/testField.js index bc0ac9e..8a5f569 100644 --- a/tests/unit/config/testField.js +++ b/tests/unit/config/testField.js @@ -1,5 +1,5 @@ -const assert = require("assert"); -const Field = require("../../../src/config/field"); +import assert from "assert"; +import Field from "../../../src/config/field.js"; describe("Field", () => { it("should return an array if it is an array", () => { diff --git a/tests/unit/config/testFilters.js b/tests/unit/config/testFilters.js index c13c730..9e63801 100644 --- a/tests/unit/config/testFilters.js +++ b/tests/unit/config/testFilters.js @@ -1,5 +1,5 @@ -const assert = require("assert"); -const Filters = require("../../../src/config/filters"); +import assert from "assert"; +import Filters from "../../../src/config/filters.js"; describe("Filters", () => { it("should extract base64 as filter if it is at start of string followed by pipe", () => { diff --git a/tests/unit/tmdb/testConvertTmdbToMovie.js b/tests/unit/tmdb/testConvertTmdbToMovie.js index b293dbd..54b0a02 100644 --- a/tests/unit/tmdb/testConvertTmdbToMovie.js +++ b/tests/unit/tmdb/testConvertTmdbToMovie.js @@ -1,38 +1,36 @@ -const assert = require("assert"); -// const convertTmdbToMovie = require('src/tmdb/convertTmdbToMovie'); -const { Movie } = require("../../../src/tmdb/types"); -const bladeRunnerQuerySuccess = require("../../fixtures/blade_runner_2049-info-success-response.json"); +import assert from "assert"; +// import convertTmdbToMovie = require('src/tmdb/convertTmdbToMovie'); +import { Movie } from "../../../src/tmdb/types.js"; +import readFixtureContents from "../../helpers/importFixture.js"; + +const bladeRunnerQuerySuccess = readFixtureContents( + "blade_runner_2049-info-success-response.json" +); + +let bladeRunnerTmdbMovie; describe("Convert tmdb movieInfo to movie", () => { beforeEach(() => { - [this.bladeRunnerTmdbMovie] = bladeRunnerQuerySuccess; + [bladeRunnerTmdbMovie] = bladeRunnerQuerySuccess; }); it("should translate the tmdb release date to movie year", () => { - const bladeRunner = Movie.convertFromTmdbResponse( - this.bladeRunnerTmdbMovie - ); + const bladeRunner = Movie.convertFromTmdbResponse(bladeRunnerTmdbMovie); assert.strictEqual(bladeRunner.year, 2017); }); it("should translate the tmdb release date to instance of Date", () => { - const bladeRunner = Movie.convertFromTmdbResponse( - this.bladeRunnerTmdbMovie - ); + const bladeRunner = Movie.convertFromTmdbResponse(bladeRunnerTmdbMovie); assert(bladeRunner.releaseDate instanceof Date); }); it("should translate the tmdb title to title", () => { - const bladeRunner = Movie.convertFromTmdbResponse( - this.bladeRunnerTmdbMovie - ); + const bladeRunner = Movie.convertFromTmdbResponse(bladeRunnerTmdbMovie); assert.equal(bladeRunner.title, "Blade Runner 2049"); }); it("should translate the tmdb vote_average to rating", () => { - const bladeRunner = Movie.convertFromTmdbResponse( - this.bladeRunnerTmdbMovie - ); + const bladeRunner = Movie.convertFromTmdbResponse(bladeRunnerTmdbMovie); assert.equal(bladeRunner.rating, 7.3); }); }); diff --git a/tests/unit/tmdb/testTmdb.disabled b/tests/unit/tmdb/testTmdb.disabled index 0e6f5ae..34ac2be 100644 --- a/tests/unit/tmdb/testTmdb.disabled +++ b/tests/unit/tmdb/testTmdb.disabled @@ -1,13 +1,13 @@ -const assert = require('assert'); -// const Movie = require('src/movie/movie'); -const TMDB = require('src/tmdb/tmdb'); -const Cache = require('src/tmdb/cache'); -const SqliteDatabase = require('src/database/sqliteDatabase'); -const tmdbMock = require('test/helpers/tmdbMock'); +import assert 'assert'; +// import require('src/movie/movie.js'; +import TMDB 'src/tmdb/tmdb.js'; +import Cache 'src/tmdb/cache.js'; +import SqliteDatabase 'src/database/sqliteDatabase.js'; +import tmdbMock 'test/helpers/tmdbMock.js'; -const emptyQuerySuccess = require('tests/fixtures/empty-query-success-response.json'); -const interstellarQuerySuccess = require('tests/fixtures/arrival-info-success-response.json'); -const popularMovieSuccessResponse = require('tests/fixtures/popular-movies-success-response.json'); +import emptyQuerySuccess 'tests/fixtures/empty-query-success-response.json'; +import interstellarQuerySuccess 'tests/fixture/arrival-info-success-response.json'); +import popularMovieSuccessResponse 'tests/fixture/popular-movies-success-response.json'); describe('TMDB', function test() { beforeEach(() => {