epub-full-text-search
Version:
112 lines (78 loc) • 3.48 kB
JavaScript
;
var _express = require('express');
var _express2 = _interopRequireDefault(_express);
var _bodyParser = require('body-parser');
var _bodyParser2 = _interopRequireDefault(_bodyParser);
var _cors = require('cors');
var _cors2 = _interopRequireDefault(_cors);
var _async = require('async');
var _async2 = _interopRequireDefault(_async);
var _Search = require('./Rest-API/Search');
var _Search2 = _interopRequireDefault(_Search);
var _Matcher = require('./Rest-API/Matcher');
var _Matcher2 = _interopRequireDefault(_Matcher);
var _AddToIndex = require('./Rest-API/AddToIndex');
var _AddToIndex2 = _interopRequireDefault(_AddToIndex);
var _DeleteFromIndex = require('./Rest-API/DeleteFromIndex');
var _DeleteFromIndex2 = _interopRequireDefault(_DeleteFromIndex);
var _Logger = require('./Logger');
var _Logger2 = _interopRequireDefault(_Logger);
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
var WebService = {}; // impl restart
// logging request
WebService.app = (0, _express2.default)();
// Have a look here to config cors for indivudal routes
// https://www.npmjs.com/package/cors
WebService.app.use((0, _cors2.default)());
WebService.app.use(_bodyParser2.default.urlencoded({ extended: true }));
WebService.app.use(_bodyParser2.default.json());
// routes
WebService.app.get('/search', _Search2.default);
WebService.app.get('/matcher', _Matcher2.default);
WebService.app.get('/addToIndex', _AddToIndex2.default); // POST or GET???
WebService.app.get('/deleteFromIndex', _DeleteFromIndex2.default); // POST or GET???
function terminator(sig) {
if (typeof sig === "string") {
_Logger2.default.log('info', '%s: Received %s - terminating service ...', Date(Date.now()), sig);
process.exit(1);
}
_Logger2.default.log('info', '%s: EPUB search stopped.', Date(Date.now()));
}
WebService.setup = function (callback) {
// WebService.ipaddress = process.env.IP;
WebService.port = process.env.PORT || 8085;
process.on('exit', function () {
terminator();
});
process.on('SIGTERM', function () {
terminator();
});
callback();
};
WebService.startupMessages = function (callback) {
_Logger2.default.log('info', '');
_Logger2.default.log('info', 'EPUB-search Copyright (c) 2015-2017 Lars Voigt');
_Logger2.default.log('info', 'This program comes with ABSOLUTELY NO WARRANTY.');
_Logger2.default.log('info', 'This is free software, and you are welcome to redistribute it under certain conditions.');
_Logger2.default.log('info', 'For the full license, please visit: https://opensource.org/licenses/MIT \n');
callback();
};
WebService.start = function (callback) {
// Start the app on the specific interface (and port).
WebService.app.listen(WebService.port, WebService.ipaddress, function () {
//TODO: logging
_Logger2.default.log('info', '%s: EPUB search started on %s:%d ... \n', new Date(), WebService.ipaddress, WebService.port);
}).on('error', function (e) {
if (e.code == 'EADDRINUSE') {
return callback('Cant start this Service -> Port is in use!!!');
}
});
callback();
};
_async2.default.series([WebService.setup, WebService.startupMessages, WebService.start], function (err) {
if (err) {
_Logger2.default.log('error', 'Error during startup: ' + err);
process.exit(1);
}
});
module.exports = WebService.app;