enhancer-data-bridge
Version:
A bridge between Enhancer Clould and user business datasource
90 lines (74 loc) • 2.36 kB
JavaScript
var log4js = require('log4js');
var logger = log4js.getLogger('bridge');
var express = require('express');
var path = require('path');
var cookieParser = require('cookie-parser');
var bodyParser = require('body-parser');
var ioRoute = require('./routes/io');
var dbproxyRoute = require('./routes/dbproxy');
var customInterfaceRoute = require('./routes/custom-interface');
var moduleLoaderRoute = require('./routes/module-loader');
var config = require('./config');
var fs = require('fs');
var path = require('path');
var app = express();
app.set('views', path.resolve(__dirname, './views'));
// app.set('x-powered-by', 'enhancer');
var MAX_FILE_SIZE = config.isOfficialEnv ? 4 : 1024 * 1024 * 128;
app.use(bodyParser.json({limit: MAX_FILE_SIZE + 'mb'}));
app.use(bodyParser.urlencoded({ extended: false, limit: MAX_FILE_SIZE + 'mb' }));
app.use(cookieParser());
app.use(function(req, res, next) {
res.setHeader('X-Powered-By', 'Enhancer');
res.setHeader('Access-Control-Allow-Origin', '*');
res.setHeader('Access-Control-Allow-Headers', 'Content-Type');
next();
});
// Mock Session
var session = {};
app.use(function(req, res, next) {
req.session = session;
next();
});
// Clear up regularly
setInterval(function() {
session = {};
}, 1000 * 60 * 60 * 3);
app.use(ioRoute);
app.use(dbproxyRoute);
app.use(customInterfaceRoute);
app.use(moduleLoaderRoute);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
var err = new Error('URL Not Found: ' + req.url);
err.status = 404;
next(err);
});
// error handlers
// development error handler
// will print stacktrace
if (app.get('env') === 'development') {
app.use(function(err, req, res, next) {
res.status(err.status || 500);
console.log( err.stack );
res.send( err.message );
});
}
// production error handler
// no stacktraces leaked to user
app.use(function(err, req, res, next) {
if (err.status === 404) {
return res.status(404)
.send('404 not found');
}
// res.status(err.status || 500);
logger.error('request params: ', req.params);
logger.error('request query:', req.query);
logger.error('request body:', req.body);
logger.error( err.stack );
res.send({
success: false,
message: err.message
});
});
module.exports = app;