const config = require('./config') , express = require("express") , expressLogging = require("express-logging") , logger = require("logops") , { StatusCodes, getReasonPhrase } = require('http-status-codes') , hostname = require('os').hostname() , port = 32105 , godoUpdater = require('./src/component/GodoUpdater') , controllers = {}; process.env["NODE_TLS_REJECT_UNAUTHORIZED"] = 0; /** * Express web server starting * */ logger.getContext = function getContext() { return { // hostname: hostname, // pid: process.pid, // port: port, app: 'Godo' }; } var app = express(); app.use(express.json()); app.use(expressLogging(logger)); app.use((req, res, next) => { logger.debug(Object.assign(req.body, req.query, req.params), 'Request params') next() }) app.listen(port, () => { logger.info('Service started') if(config.env == 'production') godoUpdater.start() }); /** * Request handlers * */ app.all('*', (req, res, next) => { let urlSegments = req.url.split('/'); req.params.service = urlSegments[1] req.params.what = urlSegments.length > 2 ? urlSegments[2] : '' req.params.args = urlSegments.length > 3 ? urlSegments.slice(3) : [] if(!controllers.hasOwnProperty(req.params.service)) { let controller = req.params.service.charAt(0).toUpperCase() + req.params.service.slice(1) + 'Controller'; controllers[req.params.service] = require('./src/controller/' + controller) logger.info('%s has been loaded', controller) } controllers[req.params.service][req.params.service](req, result => { let body = { code: StatusCodes.OK, message: getReasonPhrase(StatusCodes.OK), data: result } if(result.code) body = result res.json(body) }) })