-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathweb.js
59 lines (50 loc) · 1.85 KB
/
web.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
var express = require('express');
var nconf = require('nconf');
var dateFormat = require('dateformat');
var render = require('./render');
var app = express();
nconf.argv().file({
file: 'defaults.json'
});
app.get('/render.png', function(req, res) {
if (!req.query.url) {
res.json(400, {
error: 'url_required',
message: 'Параметр url обязателен'
});
return;
}
var data = {
timeout: req.query.timeout,
zoom: req.query.zoom || 1,
url: req.query.url,
userAgent: req.query.userAgent,
// (Необязательно) Какая глобальная переменная должна стать true для готовности страницы
check: req.query.check,
// (Необязательно) Какой элемент рендерить
selector: req.query.selector,
// (Необязательно) Ширина и высота окна, если не указан selector
width: req.query.width,
height: req.query.height,
delay: req.query.delay
};
var start = new Date();
render.render(data, function(success, result) {
var msg, now = new Date();
if (success) {
res.set('Content-Type', 'image/png');
res.send(200, new Buffer(result, 'base64'));
msg = '[SUCCESS]';
} else {
res.json(500, result);
msg = '[ERROR] ' + JSON.stringify(result);
}
console.log(dateFormat(now, 'dd.mm.yyyy HH:MM:ss') + ' ' + msg + ' ' + JSON.stringify(data) + ' in ' + (now.getTime() - start.getTime()) + ' ms');
});
});
render.init(nconf, run);
function run() {
console.log('Config:', JSON.stringify(nconf.get()));
console.log('Listening on port', nconf.get('port'));
app.listen(nconf.get('port'));
}