Windshaft-cartodb/lib/server.js

34 lines
1.1 KiB
JavaScript
Raw Normal View History

'use strict';
2018-04-03 19:21:41 +08:00
const express = require('express');
const jsonReplacer = require('./utils/json-replacer');
const ApiRouter = require('./api/api-router');
const ServerInfoController = require('./server-info-controller');
2018-04-03 19:21:41 +08:00
const StatsClient = require('./stats/client');
2015-07-05 05:09:00 +08:00
module.exports = function createServer (serverOptions) {
if (!Object.prototype.hasOwnProperty.call(serverOptions, 'routes')) {
2019-10-02 01:34:03 +08:00
throw new Error('Must initialise server with "routes" as base paths configuration');
}
// Make stats client globally accessible
global.statsClient = StatsClient.getInstance(serverOptions.statsd);
2018-04-03 19:21:41 +08:00
const app = express();
2018-04-03 19:21:41 +08:00
app.enable('jsonp callback');
app.disable('x-powered-by');
app.disable('etag');
app.set('json replacer', jsonReplacer());
// FIXME: do not pass 'global.environment' as 'serverOptions' should keep defaults from 'global.environment'
const apiRouter = new ApiRouter({ serverOptions, environmentOptions: global.environment });
2019-10-04 18:22:23 +08:00
apiRouter.route(app, serverOptions.routes.api);
2018-04-04 01:16:37 +08:00
const serverInfoController = new ServerInfoController();
2019-10-04 18:22:23 +08:00
serverInfoController.route(app);
return app;
};