-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.js
68 lines (55 loc) · 1.81 KB
/
index.js
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
56
57
58
59
60
61
62
63
64
65
66
67
68
#!/usr/bin/env node
//var config = require('./config').config;
var extend = require('util')._extend;
var restify = require('restify');
var pmb = require('pmb');
var server = restify.createServer();
server.use(restify.queryParser());
server.use(restify.bodyParser());
var client = pmb.client();
// Response function
function respond(req, res, next) {
// Publish message to queue
var msg = extend({}, req.params);
msg['_role'] = 'webserver';
msg['_id'] = req.id();
msg['_url'] = req.url;
msg['_path'] = req.path();
msg['_request'] = {
headers: req.headers,
httpVersion: req.httpVersion,
statusCode: req.statusCode,
statusMessage: req.statusMessage,
rawQuery: req.getQuery(),
query: req.query,
params: req.params
};
var timeout = setTimeout(function(){
timeout = false;
res.error(400, {Error: 'pattern timeout'});
next();
return;
},5000);
client.send(msg, function(response, request){
if(!timeout) {return;}
clearTimeout(timeout);
console.log("Response: ", response);
var status = (response.hasOwnProperty('status') ? response.status : 500);
var headers = (response.hasOwnProperty('headers') ? response.headers : {});
res.writeHead(status, headers);
// Reveive response and return it to client
res.end(response.response);
next();
return;
});
}
// Request routing
server.get(/.*/, respond);
server.post(/.*/, respond);
server.put(/.*/, respond);
server.head(/.*/, respond);
server.del(/.*/, respond);
// Start server
server.listen(8080, function() {
console.log('%s listening at %s', server.name, server.url);
});