UNPKG

epub-full-text-search

Version:
112 lines (78 loc) 3.48 kB
'use strict'; 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;