-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathserver.js
More file actions
100 lines (84 loc) · 2.77 KB
/
server.js
File metadata and controls
100 lines (84 loc) · 2.77 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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
// Generated by CoffeeScript 1.4.0
(function() {
var MainPageTitle, app, cluster, elasticSearchHost, elasticSearchOptions, elasticSearchPort, errorLogger, express, hbs, http, i, indexName, logger, numCPUs, wikijs, _i;
MainPageTitle = "Hlavná stránka";
elasticSearchHost = "localhost";
elasticSearchPort = "9200";
indexName = "wikipedia_cached";
elasticSearchOptions = function(title) {
return {
hostname: elasticSearchHost,
port: elasticSearchPort,
path: ("/" + indexName + "/page/") + encodeURIComponent(title),
method: 'GET',
agent: false
};
};
logger = function(req, res, next) {
console.log('Request: ' + req.method + ' ' + req.url);
return next();
};
errorLogger = function(err, req, res, next) {
console.log('Error: ' + req.method + ' ' + req.url + ' ' + err.message);
return next();
};
cluster = require('cluster');
express = require('express');
http = require('http');
wikijs = require('wiky.js');
hbs = require('hbs');
numCPUs = require('os').cpus().length;
http.globalAgent.maxSockets = 1000;
if (cluster.isMaster) {
for (i = _i = 1; 1 <= numCPUs ? _i <= numCPUs : _i >= numCPUs; i = 1 <= numCPUs ? ++_i : --_i) {
cluster.fork();
}
cluster.on('exit', function(worker, code, signal) {
return console.log('worker ' + worker.process.pid + ' died');
});
} else {
app = express();
app.configure(function() {
app.set('view engine', 'hbs');
app.engine('hbs', hbs.__express);
app.use(logger);
app.use(app.router);
return app.use(express["static"]('public'));
});
app.get('/', function(req, res) {
return res.redirect('/wiki/' + MainPageTitle);
});
app.get('/wiki', function(req, res) {
return res.redirect('/wiki/' + MainPageTitle);
});
app.get('/wiki/:contentId', function(req, res) {
var innerReq;
innerReq = http.request(elasticSearchOptions(req.params.contentId), function(innerRes) {
var body;
if (innerRes.statusCode !== 200) {
res.send(innerRes.statusCode);
return innerRes.resume();
} else {
body = '';
innerRes.on('data', function(bodyChunk) {
return body += bodyChunk;
});
return innerRes.on('end', function() {
return res.render('page', {
'title': req.params.contentId,
'content': JSON.parse(body)._source.html
});
});
}
});
innerReq.on('error', function(e) {
return console.log('Got error: ' + e.message);
});
return innerReq.end();
});
app.get('/search/:searchString', function(req, res) {
return res.send(req.params.searchString);
});
app.listen(8080);
}
}).call(this);