availity-ekko
Version:
Mock server simulating Availity API rest services
76 lines (51 loc) • 1.97 kB
JavaScript
'use strict';
const errorhandler = require('errorhandler');
const compression = require('compression');
const methodOverride = require('method-override');
const cors = require('cors');
const path = require('path');
const bodyParser = require('body-parser');
const busboy = require('connect-busboy');
const _ = require('lodash');
const onFinished = require('on-finished');
const chalk = require('chalk');
const config = require('../config');
const routes = require('../routes');
const logger = require('../logger').getInstance();
const requestHandler = require('./request');
const notFoundHandler = require('./not.found');
// Custom request logger
module.exports = function development() {
if (logger.canLog()) {
config.router.use((req, res, next) => {
function logRequest() {
const method = `${chalk.white(req.method)}`;
const url = `${chalk.dim(req.originalUrl || req.url)}`;
const code = res._header ? String(res.statusCode) : '';
const file = chalk.dim(res.avFile || '');
logger.log(`${method} ${url} ${chalk.white(code)} ${chalk.blue(path.basename(file))}`);
}
// Callback is called at the end of request cycle after headers are set
onFinished(res, logRequest);
next();
});
}
config.router.use(requestHandler());
config.router.use(errorhandler());
config.router.use(compression());
config.router.use(cors());
// pretty print json
config.app.set('json spaces', 2);
config.router.use(methodOverride('X-HTTP-Method-Override'));
config.router.use(bodyParser.json({
limit: _.get(config, 'options.limit', '50mb')
})); // parse application/json
config.router.use(bodyParser.urlencoded({
extended: true,
limit: config.options.limit
})); // // parse application/x-www-form-urlencoded
config.router.use(busboy({ immediate: false }));
config.app.use('/', config.router);
routes.init();
config.app.use(notFoundHandler());
};