Files
bro-app-browser/index.js
2021-09-26 02:31:33 +09:00

75 lines
2.2 KiB
JavaScript

const express = require("express")
, expressLogging = require("express-logging")
, logger = require("logops")
, hostname = require('os').hostname()
, browser = require('./src/service/HeadlessService')
, port = 32101
, { NoSuchSessionError } = require("selenium-webdriver/lib/error")
, { ResourceTimeout } = require('generic-pool/lib/errors')
// , { puppeteerErrors } = require("puppeteer-core/lib/cjs/puppeteer/common/Errors");
logger.getContext = function () {
return {
// hostname: hostname,
// pid: process.pid,
// port: port,
app: 'Browser'
};
}
logger.throwError = function (msg, info) {
let error = new Error(msg)
error.info = info
throw error
}
var app = express();
app.use(express.json());
app.use(expressLogging(logger));
app.listen(port, () => {
logger.info('Browser service started');
});
// process.stdin.resume();//so the program will not close instantly
exitHandler = (options, exitCode) => {
if (options.cleanup) logger.info('cleanup')
if (exitCode || exitCode === 0) logger.info('exit code :', exitCode)
browser.close().then(() => process.exit());
}
/**
* Process shutdown events handling
*/
//do something when app is closing
process.on('exit', exitHandler.bind(null, { cleanup: true }));
//catches ctrl+c event
process.on('SIGINT', exitHandler.bind(null, { exit: true }));
process.on('SIGTERM', exitHandler.bind(null, { cleanup: true }));
// setTimeout(() => {
// process.on('SIGKILL', exitHandler.bind(null, {exit:true}));
// }, 2000)
// catches "kill pid" (for example: nodemon restart)
// process.on('SIGUSR1', exitHandler.bind(null, {exit:true}));
// process.on('SIGUSR2', exitHandler.bind(null, {exit:true}));
//catches uncaught exceptions
// process.on('uncaughtException', exitHandler.bind(null, {exit:true}));
/**
* request handler
*/
app.post('/', async (req, res, next) => {
browser.get(req.body).then(result => {
typeof result == 'string' ? res.send(result) : res.json(result)
}).catch(e => {
logger.error({ message: e.message, info: e.info }, 'Browser error')
res.status(500).send({ code: 500, message: e.message })
})
})