-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
55 lines (45 loc) · 1.41 KB
/
server.js
File metadata and controls
55 lines (45 loc) · 1.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
'use strict';
var restify = require('restify');
var logger = require('../logger');
var routes = require('./routes');
class Server {
constructor(config) {
this.server = restify.createServer({
name: require('../../package.json').name,
log: logger.getLogger().child({component: 'server'}),
});
this.configure(config);
}
configure(config) {
var server = this.server;
// Extend logger using the plugin.
server.use(restify.plugins.requestLogger({
serializers: restify.bunyan.serializers,
}));
server.use(function(req, res, next) {
req.log.info({req: req}, 'REQUEST');
next();
});
this.log = this.server.log;
this.listen = this.server.listen;
this.close = this.server.close;
server.on('after', restify.plugins.auditLogger({
log: server.log,
event: 'after'
}));
server.on('uncaughtException', function(req, res, route, err) {
console.log('uncaughtException', err.stack);
req.log.error({err: err}, 'uncaughtException');
});
// Let requests and responses take as long as they need
server.use(function(req, res, next) {
req.connection.setTimeout(0);
res.connection.setTimeout(0);
next();
});
server.use(restify.plugins.queryParser({mapParams: false}));
routes.configure(server, config);
server.use(restify.plugins.queryParser({mapParams: false}));
}
}
module.exports = Server;