Files
cx-amazon-crawler/index.js
2020-08-28 02:08:23 +09:00

61 lines
1.7 KiB
JavaScript
Executable File

const express = require("express")
, expressLogging = require("express-logging")
, logger = require("logops")
, HttpStatus = require('http-status-codes')
, hostname = require('os').hostname()
, port = 22002
, controllers = {};
/**
* Express web server starting
*
*/
logger.getContext = function getContext() {
return {
// hostname: hostname,
// pid: process.pid,
port: port,
app: 'Headless'
};
}
var app = express();
app.use(express.json());
app.use(expressLogging(logger));
app.listen(port, () => {
logger.info({ app: 'Headless browser' }, 'Startup');
});
/**
* 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';
try {
controllers[req.params.service] = require('./src/controller/' + controller)
logger.info('%s has been loaded', controller)
} catch (err) {
res.json({code: HttpStatus.NO_CONTENT, message: HttpStatus.getStatusText(HttpStatus.NO_CONTENT)})
}
}
if (controllers.hasOwnProperty(req.params.service)) {
controllers[req.params.service][req.params.service](req, result => {
res.json({
code: HttpStatus.OK,
message: HttpStatus.getStatusText(HttpStatus.OK),
data: result
})
})
}
})