mirror of
https://github.com/mjrode/WhatToWatch.git
synced 2026-05-01 01:49:10 -05:00
WIP: Setup basic API routing and controllers.
This commit is contained in:
@@ -0,0 +1,12 @@
|
||||
/* eslint-disable no-undef */
|
||||
const _ = require('lodash');
|
||||
|
||||
const env = process.env.NODE_ENV || 'local';
|
||||
|
||||
const envConfig = require(`./${env}`);
|
||||
|
||||
const defaultConfig = {
|
||||
env,
|
||||
};
|
||||
|
||||
export default _.merge(defaultConfig, envConfig);
|
||||
@@ -0,0 +1,7 @@
|
||||
const localConfig = {
|
||||
hostname: 'localhost',
|
||||
port: 8000,
|
||||
// viewDir: './app/views',
|
||||
};
|
||||
|
||||
module.exports = localConfig;
|
||||
@@ -0,0 +1,6 @@
|
||||
import config from './config';
|
||||
|
||||
const server = require('./server')();
|
||||
|
||||
server.create(config);
|
||||
server.start();
|
||||
Generated
-181
@@ -1708,12 +1708,6 @@
|
||||
"xdg-basedir": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"contains-path": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://registry.npmjs.org/contains-path/-/contains-path-0.1.0.tgz",
|
||||
"integrity": "sha1-/ozxhP9mcLa67wGp1IYaXL7EEgo=",
|
||||
"dev": true
|
||||
},
|
||||
"content-disposition": {
|
||||
"version": "0.5.2",
|
||||
"resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.2.tgz",
|
||||
@@ -2177,56 +2171,6 @@
|
||||
"get-stdin": "^6.0.0"
|
||||
}
|
||||
},
|
||||
"eslint-import-resolver-node": {
|
||||
"version": "0.3.2",
|
||||
"resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.2.tgz",
|
||||
"integrity": "sha512-sfmTqJfPSizWu4aymbPr4Iidp5yKm8yDkHp+Ir3YiTHiiDfxh69mOUsmiqW6RZ9zRXFaF64GtYmN7e+8GHBv6Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^2.6.9",
|
||||
"resolve": "^1.5.0"
|
||||
}
|
||||
},
|
||||
"eslint-module-utils": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.3.0.tgz",
|
||||
"integrity": "sha512-lmDJgeOOjk8hObTysjqH7wyMi+nsHwwvfBykwfhjR1LNdd7C2uFJBvx4OpWYpXOw4df1yE1cDEVd1yLHitk34w==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"debug": "^2.6.8",
|
||||
"pkg-dir": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"eslint-plugin-import": {
|
||||
"version": "2.16.0",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.16.0.tgz",
|
||||
"integrity": "sha512-z6oqWlf1x5GkHIFgrSvtmudnqM6Q60KM4KvpWi5ubonMjycLjndvd5+8VAZIsTlHC03djdgJuyKG6XO577px6A==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"contains-path": "^0.1.0",
|
||||
"debug": "^2.6.9",
|
||||
"doctrine": "1.5.0",
|
||||
"eslint-import-resolver-node": "^0.3.2",
|
||||
"eslint-module-utils": "^2.3.0",
|
||||
"has": "^1.0.3",
|
||||
"lodash": "^4.17.11",
|
||||
"minimatch": "^3.0.4",
|
||||
"read-pkg-up": "^2.0.0",
|
||||
"resolve": "^1.9.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"doctrine": {
|
||||
"version": "1.5.0",
|
||||
"resolved": "https://registry.npmjs.org/doctrine/-/doctrine-1.5.0.tgz",
|
||||
"integrity": "sha1-N53Ocw9hZvds76TmcHoVmwLFpvo=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"esutils": "^2.0.2",
|
||||
"isarray": "^1.0.0"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"eslint-plugin-prettier": {
|
||||
"version": "3.0.1",
|
||||
"resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-3.0.1.tgz",
|
||||
@@ -2667,15 +2611,6 @@
|
||||
"integrity": "sha1-M8RLQpqysvBkYpnF+fcY83b/jVQ=",
|
||||
"dev": true
|
||||
},
|
||||
"find-up": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmjs.org/find-up/-/find-up-2.1.0.tgz",
|
||||
"integrity": "sha1-RdG35QbHF93UgndaK3eSCjwMV6c=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"locate-path": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"flat-cache": {
|
||||
"version": "1.3.4",
|
||||
"resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-1.3.4.tgz",
|
||||
@@ -4435,36 +4370,6 @@
|
||||
"figures": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"load-json-file": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-2.0.0.tgz",
|
||||
"integrity": "sha1-eUfkIUmvgNaWy/eXvKq8/h/inKg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"graceful-fs": "^4.1.2",
|
||||
"parse-json": "^2.2.0",
|
||||
"pify": "^2.0.0",
|
||||
"strip-bom": "^3.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"pify": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
||||
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"locate-path": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/locate-path/-/locate-path-2.0.0.tgz",
|
||||
"integrity": "sha1-K1aLJl7slExtnA3pw9u7ygNUzY4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-locate": "^2.0.0",
|
||||
"path-exists": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"lodash": {
|
||||
"version": "4.17.11",
|
||||
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.11.tgz",
|
||||
@@ -6140,36 +6045,12 @@
|
||||
"integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=",
|
||||
"dev": true
|
||||
},
|
||||
"p-limit": {
|
||||
"version": "1.3.0",
|
||||
"resolved": "https://registry.npmjs.org/p-limit/-/p-limit-1.3.0.tgz",
|
||||
"integrity": "sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-try": "^1.0.0"
|
||||
}
|
||||
},
|
||||
"p-locate": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-locate/-/p-locate-2.0.0.tgz",
|
||||
"integrity": "sha1-IKAQOyIqcMj9OcwuWAaA893l7EM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"p-limit": "^1.1.0"
|
||||
}
|
||||
},
|
||||
"p-map": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://registry.npmjs.org/p-map/-/p-map-1.2.0.tgz",
|
||||
"integrity": "sha512-r6zKACMNhjPJMTl8KcFH4li//gkrXWfbD6feV8l6doRHlzljFWGJ2AP6iKaCJXyZmAUMOPtvbW7EXkbWO/pLEA==",
|
||||
"dev": true
|
||||
},
|
||||
"p-try": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/p-try/-/p-try-1.0.0.tgz",
|
||||
"integrity": "sha1-y8ec26+P1CKOE/Yh8rGiN8GyB7M=",
|
||||
"dev": true
|
||||
},
|
||||
"package-json": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/package-json/-/package-json-4.0.1.tgz",
|
||||
@@ -6222,15 +6103,6 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"parse-json": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/parse-json/-/parse-json-2.2.0.tgz",
|
||||
"integrity": "sha1-9ID0BDTvgHQfhGkJn43qGPVaTck=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"error-ex": "^1.2.0"
|
||||
}
|
||||
},
|
||||
"parseurl": {
|
||||
"version": "1.3.2",
|
||||
"resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.2.tgz",
|
||||
@@ -6279,23 +6151,6 @@
|
||||
"resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz",
|
||||
"integrity": "sha1-32BBeABfUi8V60SQ5yR6G/qmf4w="
|
||||
},
|
||||
"path-type": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/path-type/-/path-type-2.0.0.tgz",
|
||||
"integrity": "sha1-8BLMuEFbcJb8LaoQVMPXI4lZTHM=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"pify": "^2.0.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"pify": {
|
||||
"version": "2.3.0",
|
||||
"resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz",
|
||||
"integrity": "sha1-7RQaasBDqEnqWISY59yosVMw6Qw=",
|
||||
"dev": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"pathval": {
|
||||
"version": "1.1.0",
|
||||
"resolved": "https://registry.npmjs.org/pathval/-/pathval-1.1.0.tgz",
|
||||
@@ -6323,15 +6178,6 @@
|
||||
"pinkie": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"pkg-dir": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-2.0.0.tgz",
|
||||
"integrity": "sha1-9tXREJ4Z1j7fQo4L1X4Sd3YVM0s=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"find-up": "^2.1.0"
|
||||
}
|
||||
},
|
||||
"please-upgrade-node": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmjs.org/please-upgrade-node/-/please-upgrade-node-3.1.1.tgz",
|
||||
@@ -6510,27 +6356,6 @@
|
||||
"strip-json-comments": "~2.0.1"
|
||||
}
|
||||
},
|
||||
"read-pkg": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-2.0.0.tgz",
|
||||
"integrity": "sha1-jvHAYjxqbbDcZxPEv6xGMysjaPg=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"load-json-file": "^2.0.0",
|
||||
"normalize-package-data": "^2.3.2",
|
||||
"path-type": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"read-pkg-up": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-2.0.0.tgz",
|
||||
"integrity": "sha1-a3KoBImE4MQeeVEP1en6mbO1Sb4=",
|
||||
"dev": true,
|
||||
"requires": {
|
||||
"find-up": "^2.0.0",
|
||||
"read-pkg": "^2.0.0"
|
||||
}
|
||||
},
|
||||
"readable-stream": {
|
||||
"version": "2.1.5",
|
||||
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.1.5.tgz",
|
||||
@@ -7162,12 +6987,6 @@
|
||||
"ansi-regex": "^3.0.0"
|
||||
}
|
||||
},
|
||||
"strip-bom": {
|
||||
"version": "3.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz",
|
||||
"integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=",
|
||||
"dev": true
|
||||
},
|
||||
"strip-eof": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz",
|
||||
|
||||
@@ -33,7 +33,6 @@
|
||||
"eslint": "5.13.0",
|
||||
"eslint-config-airbnb-base": "^13.1.0",
|
||||
"eslint-config-prettier": "4.0.0",
|
||||
"eslint-plugin-import": "^2.16.0",
|
||||
"eslint-plugin-prettier": "3.0.1",
|
||||
"husky": "1.3.1",
|
||||
"lint-staged": "8.1.3",
|
||||
|
||||
@@ -0,0 +1,9 @@
|
||||
const express = require('express');
|
||||
const plexService = require('../../../services/plex');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get('/', plexService.getUsers);
|
||||
// router.get('/:id', plexService.getDogWithId);
|
||||
|
||||
module.exports = router;
|
||||
@@ -0,0 +1,9 @@
|
||||
function index(req, res) {
|
||||
res.render('error/index', {
|
||||
title: 'Error',
|
||||
});
|
||||
}
|
||||
|
||||
export default {
|
||||
index,
|
||||
};
|
||||
@@ -0,0 +1,16 @@
|
||||
function index(req, res) {
|
||||
res.render('home/index', {
|
||||
title: 'Home',
|
||||
});
|
||||
}
|
||||
|
||||
function info(req, res) {
|
||||
res.render('home/info', {
|
||||
title: 'More info',
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
index,
|
||||
info,
|
||||
};
|
||||
@@ -0,0 +1,42 @@
|
||||
const express = require('express');
|
||||
|
||||
const bodyParser = require('body-parser');
|
||||
|
||||
module.exports = function() {
|
||||
const server = express();
|
||||
|
||||
let create;
|
||||
|
||||
let start;
|
||||
|
||||
create = function(config) {
|
||||
const routes = require('./routes');
|
||||
|
||||
// Server settings
|
||||
server.set('env', config.env);
|
||||
server.set('port', config.port);
|
||||
server.set('hostname', config.hostname);
|
||||
server.set('viewDir', config.viewDir);
|
||||
|
||||
// Returns middleware that parses json
|
||||
server.use(bodyParser.json());
|
||||
|
||||
// Set up routes
|
||||
routes.init(server);
|
||||
};
|
||||
|
||||
start = function() {
|
||||
const hostname = server.get('hostname');
|
||||
|
||||
const port = server.get('port');
|
||||
|
||||
server.listen(port, function() {
|
||||
console.log(`Express server listening on - http://${hostname}:${port}`);
|
||||
});
|
||||
};
|
||||
|
||||
return {
|
||||
create,
|
||||
start,
|
||||
};
|
||||
};
|
||||
@@ -0,0 +1,8 @@
|
||||
const express = require('express');
|
||||
const v1ApiController = require('./v1');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.use('/v1', v1ApiController);
|
||||
|
||||
module.exports = router;
|
||||
@@ -0,0 +1,8 @@
|
||||
const express = require('express');
|
||||
const plexController = require('../../../controllers/apis/plex');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.use('/plex', plexController);
|
||||
|
||||
module.exports = router;
|
||||
@@ -0,0 +1,9 @@
|
||||
const express = require('express');
|
||||
|
||||
const errorController = require('../controllers/error');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
// router.get('/', errorController.index);
|
||||
|
||||
module.exports = router;
|
||||
@@ -0,0 +1,9 @@
|
||||
const express = require('express');
|
||||
const homeController = require('../controllers/home');
|
||||
|
||||
const router = express.Router();
|
||||
|
||||
router.get('/', homeController.index);
|
||||
router.get('/info', homeController.info);
|
||||
|
||||
module.exports = router;
|
||||
@@ -0,0 +1,23 @@
|
||||
const apiRoute = require('./apis');
|
||||
|
||||
const homeRoute = require('./home');
|
||||
const errorRoute = require('./error');
|
||||
|
||||
function init(server) {
|
||||
server.get('*', function(req, res, next) {
|
||||
console.log(`Request was made to: ${req.originalUrl}`);
|
||||
return next();
|
||||
});
|
||||
|
||||
server.get('/', function(req, res) {
|
||||
res.redirect('/home');
|
||||
});
|
||||
|
||||
server.use('/api', apiRoute);
|
||||
server.use('/home', homeRoute);
|
||||
server.use('/error', errorRoute);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
init,
|
||||
};
|
||||
@@ -0,0 +1,21 @@
|
||||
const dogs = [
|
||||
{
|
||||
id: 1,
|
||||
name: 'Corgi',
|
||||
origin: 'Wales',
|
||||
breeds: ['Pembroke', 'Cardigan'],
|
||||
},
|
||||
{
|
||||
id: 2,
|
||||
name: 'Husky',
|
||||
breeds: ['Alaskan', 'Siberian', 'Labrador', 'Sakhalin'],
|
||||
},
|
||||
];
|
||||
|
||||
function getUsers(req, res) {
|
||||
res.json(dogs);
|
||||
}
|
||||
|
||||
module.exports = {
|
||||
getUsers,
|
||||
};
|
||||
@@ -0,0 +1,16 @@
|
||||
import { Router } from 'express';
|
||||
|
||||
const router = Router();
|
||||
// const actionController = require('../controllers/action.controller');
|
||||
|
||||
// router.post('/points', actionController.populatePointMessage);
|
||||
// router.post('/', actionController.handleActionResponse);
|
||||
|
||||
router.get('/', actionController.);
|
||||
router.get('/', (req, res) => {
|
||||
res.json({
|
||||
msg: 'Plex server autenticated',
|
||||
});
|
||||
});
|
||||
|
||||
export default router;
|
||||
@@ -0,0 +1,4 @@
|
||||
import mocha from 'mocha';
|
||||
import chai from 'chai';
|
||||
import nock from 'nock';
|
||||
import chaiHttp from 'chai-http';
|
||||
@@ -1,14 +0,0 @@
|
||||
import express from 'express';
|
||||
import { json, urlencoded } from 'body-parser';
|
||||
|
||||
import './services/plex/route';
|
||||
|
||||
const app = express();
|
||||
|
||||
const port = 8000;
|
||||
app.use(json());
|
||||
app.use(urlencoded({ extended: true }));
|
||||
|
||||
app.listen(port, () => {
|
||||
console.log(`We are live on ${port}`);
|
||||
});
|
||||
@@ -1,9 +0,0 @@
|
||||
const express = require('express');
|
||||
|
||||
const router = express.Router();
|
||||
// const actionController = require('../controllers/action.controller');
|
||||
|
||||
// router.post('/points', actionController.populatePointMessage);
|
||||
// router.post('/', actionController.handleActionResponse);
|
||||
|
||||
module.exports = router;
|
||||
Reference in New Issue
Block a user