Moved eveything related to the api to a seperate folder seasoned_api.
This commit is contained in:
4
seasoned_api/src/webserver/access.log
Normal file
4
seasoned_api/src/webserver/access.log
Normal file
@@ -0,0 +1,4 @@
|
||||
::1 - - [02/Jun/2017:06:34:49 +0000] "GET /api/v1/seasoned/all HTTP/1.1" 200 1016 "-" "curl/7.51.0"
|
||||
::1 - - [02/Jun/2017:06:34:50 +0000] "GET /api/v1/seasoned/all HTTP/1.1" 200 1016 "-" "curl/7.51.0"
|
||||
::1 - - [02/Jun/2017:06:45:59 +0000] "GET /api/v1/seasoned/all HTTP/1.1" 200 1016 "-" "curl/7.51.0"
|
||||
::1 - - [02/Jun/2017:06:48:30 +0000] "GET /api/v1/seasoned/all HTTP/1.1" 200 1016 "-" "curl/7.51.0"
|
||||
52
seasoned_api/src/webserver/app.js
Normal file
52
seasoned_api/src/webserver/app.js
Normal file
@@ -0,0 +1,52 @@
|
||||
|
||||
var express = require('express'); // call express
|
||||
var app = express(); // define our app using express
|
||||
var bodyParser = require('body-parser');
|
||||
|
||||
// this will let us get the data from a POST
|
||||
// configure app to use bodyParser()
|
||||
app.use(bodyParser.json());
|
||||
app.use(bodyParser.urlencoded({ extended: true }));
|
||||
|
||||
|
||||
var port = 31459; // set our port
|
||||
var router = express.Router();
|
||||
var allowedOrigins = ['https://kevinmidboe.com', 'http://localhost:8080']
|
||||
|
||||
|
||||
router.use(function(req, res, next) {
|
||||
console.log('Something is happening.');
|
||||
var origin = req.headers.origin;
|
||||
if (allowedOrigins.indexOf(origin) > -1) {
|
||||
res.setHeader('Access-Control-Allow-Origin', origin);
|
||||
}
|
||||
next();
|
||||
});
|
||||
|
||||
router.get('/', function(req, res) {
|
||||
res.json({ message: 'hooray! welcome to this api!' });
|
||||
});
|
||||
|
||||
|
||||
router.get('/v1/seasoned/all', require('./controllers/seasoned/readStrays.js'));
|
||||
router.get('/v1/seasoned/:strayId', require('./controllers/seasoned/strayById.js'));
|
||||
router.post('/v1/seasoned/verify/:strayId', require('./controllers/seasoned/verifyStray.js'));
|
||||
|
||||
router.get('/v1/plex/search', require('./controllers/plex/searchMedia.js'));
|
||||
router.get('/v1/plex/playing', require('./controllers/plex/plexPlaying.js'));
|
||||
router.get('/v1/plex/request', require('./controllers/plex/searchRequest.js'));
|
||||
router.get('/v1/plex/request/:mediaId', require('./controllers/plex/readRequest.js'));
|
||||
router.post('/v1/plex/request/:mediaId', require('./controllers/plex/submitRequest.js'));
|
||||
router.get('/v1/plex/hook', require('./controllers/plex/hookDump.js'));
|
||||
|
||||
router.get('/v1/tmdb/search', require('./controllers/tmdb/searchMedia.js'));
|
||||
router.get('/v1/tmdb/:mediaId', require('./controllers/tmdb/readMedia.js'));
|
||||
|
||||
router.post('/v1/git/dump', require('./controllers/git/dumpHook.js'));
|
||||
|
||||
|
||||
// REGISTER OUR ROUTES -------------------------------
|
||||
// all of our routes will be prefixed with /api
|
||||
app.use('/api', router);
|
||||
|
||||
module.exports = app;
|
||||
15
seasoned_api/src/webserver/controllers/git/dumpHook.js
Normal file
15
seasoned_api/src/webserver/controllers/git/dumpHook.js
Normal file
@@ -0,0 +1,15 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const GitRepository = require('src/git/gitRepository');
|
||||
const gitRepository = new GitRepository();
|
||||
|
||||
function dumpHookController(req, res) {
|
||||
gitRepository.dumpHook(req.body)
|
||||
.then(() => {
|
||||
res.status(200);
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500);
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = dumpHookController;
|
||||
14
seasoned_api/src/webserver/controllers/plex/hookDump.js
Normal file
14
seasoned_api/src/webserver/controllers/plex/hookDump.js
Normal file
@@ -0,0 +1,14 @@
|
||||
/*
|
||||
* @Author: KevinMidboe
|
||||
* @Date: 2017-05-03 23:26:46
|
||||
* @Last Modified by: KevinMidboe
|
||||
* @Last Modified time: 2017-05-03 23:27:59
|
||||
*/
|
||||
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
|
||||
function hookDumpController(req, res) {
|
||||
console.log(req);
|
||||
}
|
||||
|
||||
module.exports = hookDumpController;
|
||||
14
seasoned_api/src/webserver/controllers/plex/plexPlaying.js
Normal file
14
seasoned_api/src/webserver/controllers/plex/plexPlaying.js
Normal file
@@ -0,0 +1,14 @@
|
||||
const PlexRepository = require('src/plex/plexRepository');
|
||||
const plexRepository = new PlexRepository();
|
||||
|
||||
function playingController(req, res) {
|
||||
plexRepository.nowPlaying()
|
||||
.then((movies) => {
|
||||
res.send(movies);
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({success: false, error: error.message });
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = playingController;
|
||||
21
seasoned_api/src/webserver/controllers/plex/readRequest.js
Normal file
21
seasoned_api/src/webserver/controllers/plex/readRequest.js
Normal file
@@ -0,0 +1,21 @@
|
||||
const RequestRepository = require('src/plex/requestRepository');
|
||||
const requestRepository = new RequestRepository();
|
||||
|
||||
/**
|
||||
* Controller: Retrieve information for a movie
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
function readRequestController(req, res) {
|
||||
const mediaId = req.params.mediaId;
|
||||
const { type } = req.query;
|
||||
requestRepository.lookup(mediaId, type)
|
||||
.then((movies) => {
|
||||
res.send(movies);
|
||||
}).catch((error) => {
|
||||
res.status(404).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = readRequestController;
|
||||
17
seasoned_api/src/webserver/controllers/plex/searchMedia.js
Normal file
17
seasoned_api/src/webserver/controllers/plex/searchMedia.js
Normal file
@@ -0,0 +1,17 @@
|
||||
const PlexRepository = require('src/plex/plexRepository');
|
||||
const plexRepository = new PlexRepository();
|
||||
|
||||
function searchMediaController(req, res) {
|
||||
const { query, page } = req.query;
|
||||
console.log(query);
|
||||
|
||||
plexRepository.searchMedia(query)
|
||||
.then((movies) => {
|
||||
res.send(movies);
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({success: false, error: error.message });
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = searchMediaController;
|
||||
24
seasoned_api/src/webserver/controllers/plex/searchRequest.js
Normal file
24
seasoned_api/src/webserver/controllers/plex/searchRequest.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const RequestRepository = require('src/plex/requestRepository.js');
|
||||
const requestRepository = new RequestRepository();
|
||||
|
||||
function searchRequestController(req, res) {
|
||||
const { query, page, type } = req.query;
|
||||
console.log('searchReq: ' + query, page, type);
|
||||
|
||||
requestRepository.searchRequest(query, page, type)
|
||||
.then((movies) => {
|
||||
// Verify that respond has content, if so send the content back
|
||||
if (movies.length > 0 && movies != null) {
|
||||
res.send(movies);
|
||||
}
|
||||
// If no content was found, send 404 status and error message
|
||||
else {
|
||||
res.status(404).send({success: false, error: 'Search query did not return any results.'})
|
||||
}
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({success: false, error: error.message });
|
||||
})
|
||||
}
|
||||
|
||||
module.exports = searchRequestController;
|
||||
24
seasoned_api/src/webserver/controllers/plex/submitRequest.js
Normal file
24
seasoned_api/src/webserver/controllers/plex/submitRequest.js
Normal file
@@ -0,0 +1,24 @@
|
||||
const RequestRepository = require('src/plex/requestRepository.js');
|
||||
const requestRepository = new RequestRepository();
|
||||
|
||||
/**
|
||||
* Controller: POST a media id to be donwloaded
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
|
||||
function submitRequestController(req, res) {
|
||||
// This is the id that is the param of the url
|
||||
const id = req.params.mediaId;
|
||||
|
||||
requestRepository.sendRequest(id)
|
||||
.then(() => {
|
||||
res.send({ success: true, message: 'Media item sucessfully requested!' });
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = submitRequestController;
|
||||
@@ -0,0 +1,16 @@
|
||||
const StrayRepository = require('src/seasoned/strayRepository');
|
||||
const strayRepository = new StrayRepository();
|
||||
|
||||
|
||||
function readStraysController(req, res) {
|
||||
const { verified, page } = req.query;
|
||||
strayRepository.readAll(verified, page)
|
||||
.then((strays) => {
|
||||
res.send(strays);
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = readStraysController;
|
||||
17
seasoned_api/src/webserver/controllers/seasoned/strayById.js
Normal file
17
seasoned_api/src/webserver/controllers/seasoned/strayById.js
Normal file
@@ -0,0 +1,17 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const StrayRepository = require('src/seasoned/strayRepository');
|
||||
const strayRepository = new StrayRepository();
|
||||
|
||||
function strayByIdController(req, res) {
|
||||
const id = req.params.strayId;
|
||||
|
||||
strayRepository.read(id)
|
||||
.then((stray) => {
|
||||
res.send(stray);
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = strayByIdController;
|
||||
@@ -0,0 +1,16 @@
|
||||
const StrayRepository = require('src/seasoned/strayRepository');
|
||||
const strayRepository = new StrayRepository();
|
||||
|
||||
function verifyStrayController(req, res) {
|
||||
const id = req.params.strayId;
|
||||
|
||||
strayRepository.verifyStray(id)
|
||||
.then(() => {
|
||||
res.send({ success: true, message: 'Episode verified' });
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = verifyStrayController;
|
||||
22
seasoned_api/src/webserver/controllers/tmdb/readMedia.js
Normal file
22
seasoned_api/src/webserver/controllers/tmdb/readMedia.js
Normal file
@@ -0,0 +1,22 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
const tmdb = new TMDB(configuration.get('tmdb', 'apiKey'));
|
||||
|
||||
/**
|
||||
* Controller: Retrieve information for a movie
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
function readMediaController(req, res) {
|
||||
const mediaId = req.params.mediaId;
|
||||
const { type } = req.query;
|
||||
tmdb.lookup(mediaId, type)
|
||||
.then((movies) => {
|
||||
res.send(movies);
|
||||
}).catch((error) => {
|
||||
res.status(404).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = readMediaController;
|
||||
29
seasoned_api/src/webserver/controllers/tmdb/searchMedia.js
Normal file
29
seasoned_api/src/webserver/controllers/tmdb/searchMedia.js
Normal file
@@ -0,0 +1,29 @@
|
||||
const configuration = require('src/config/configuration').getInstance();
|
||||
const TMDB = require('src/tmdb/tmdb');
|
||||
const tmdb = new TMDB(configuration.get('tmdb', 'apiKey'));
|
||||
|
||||
/**
|
||||
* Controller: Search for movies by query, page and optionally adult
|
||||
* @param {Request} req http request variable
|
||||
* @param {Response} res
|
||||
* @returns {Callback}
|
||||
*/
|
||||
function searchMoviesController(req, res) {
|
||||
const { query, page, type } = req.query;
|
||||
|
||||
Promise.resolve()
|
||||
.then(() => tmdb.search(query, page, type))
|
||||
.then((movies) => {
|
||||
if (movies.length > 0) {
|
||||
res.send(movies);
|
||||
} else {
|
||||
res.status(404).send({ success: false, error: 'Search query did not return any results.'})
|
||||
}
|
||||
res.send(movies);
|
||||
})
|
||||
.catch((error) => {
|
||||
res.status(500).send({ success: false, error: error.message });
|
||||
});
|
||||
}
|
||||
|
||||
module.exports = searchMoviesController;
|
||||
8
seasoned_api/src/webserver/server.js
Normal file
8
seasoned_api/src/webserver/server.js
Normal file
@@ -0,0 +1,8 @@
|
||||
const config = require('src/config/configuration').getInstance();
|
||||
const app = require('./app');
|
||||
|
||||
module.exports = app.listen(config.get('webserver', 'port'), () => {
|
||||
console.log('seasonedAPI');
|
||||
console.log(`Database is located at ${config.get('database', 'host')}`);
|
||||
console.log(`Webserver is listening on ${config.get('webserver', 'port')}`);
|
||||
})
|
||||
Reference in New Issue
Block a user