forked from erwintoni/gb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathrouter.js
58 lines (52 loc) · 2.28 KB
/
router.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
var http = require('http');
var url = require('url');
var app_http = require('./app_http');
var req_root = require('./req_root');
var req_mem = require('./req_mem');
var req_app = require('./req_app');
var req_issuer = require('./req_issuer');
var req_file = require('./req_file');
var req_op = require('./req_op');
var req_counters = require('./req_counters');
var verpath = '/' + process.env.APP_VER + '/';
var issuerpath = verpath + 'issuer';
var req_verdir = req_file.create('public_ver', verpath.length);
var req_rootdir = req_file.create('public_root', 1);
exports.init = function(cb) {
var n = 4;
function done() {
if (--n === 0) cb();
}
req_verdir .init(done);
req_rootdir .init(done);
req_app .init(done);
req_issuer .init(done);
};
function route(req, res) {
var pathname = url.parse(req.url).pathname;
if (pathname === '/') req_root .handle(req, res)
else if (pathname === verpath) req_app .handle(req, res)
else if (pathname === issuerpath) req_issuer .handle(req, res)
else if (pathname.substr(0, verpath.length) === verpath) req_verdir .handle(req, res)
else if (pathname.substr(0, 4) === '/op/') req_op .handle(req, res)
else if (pathname === '/mem') req_mem .handle(req, res)
else if (pathname === '/counters') req_counters.handle(req, res)
else req_rootdir .handle(req, res);
}
function requestHandler(req, res) {
// Make sure messages are sent over https when deployed through Heroku.
// See https://devcenter.heroku.com/articles/http-routing
if (req.headers['x-forwarded-proto'] === 'https' || // common case
req.headers['x-forwarded-proto'] === undefined) { // local deployment
route(req, res);
} else {
res.writeHead(302, { 'Location': "https://" + req.headers.host + req.url });
res.end();
}
}
exports.start = function() {
http.createServer(requestHandler).listen(process.env.PORT, function(err) {
if (err) console.log(err);
else console.log("listening on " + process.env.PORT);
});
};