/
pogo.js
51 lines (40 loc) · 1.36 KB
/
pogo.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
const QRCode = require('qrcode');
const sharp = require('sharp');
const template = require('./templates');
async function createPogoImage(res, name, code, style) {
const qrCode = await QRCode.toDataURL(code.split('-').join(''));
const formattedCode = code.split('-').join(' ');
let image;
if (template[style]) {
image = template[style](name, formattedCode, qrCode);
} else {
image = template.base(name, formattedCode, qrCode);
}
res.set({
'content-type': 'image/svg+xml',
'cache-control': 'max-age=0, no-cache, no-store, must-revalidate'
});
res.writeHead(200);
return res.end(image, 'binary');
}
async function createPogoImagePng(res, name, code, style) {
const qrCode = await QRCode.toDataURL(code.split('-').join(''));
const formattedCode = code.split('-').join(' ');
let image;
if (template[style]) {
image = template[style](name, formattedCode, qrCode);
} else {
image = template.base(name, formattedCode, qrCode);
}
let pngImage = await sharp(Buffer.from(image)).png().toBuffer()
res.set({
'content-type': 'image/png',
'cache-control': 'max-age=0, no-cache, no-store, must-revalidate'
});
res.writeHead(200);
return res.end(pngImage, 'binary');
};
module.exports = {
createPogoImage,
createPogoImagePng
}