forked from talmobi/v2-demos
-
Notifications
You must be signed in to change notification settings - Fork 0
/
screenshot.js
24 lines (23 loc) · 1003 Bytes
/
screenshot.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
const { parse } = require('url');
const { getScreenshot } = require('./chromium');
const { getInt, getUrlFromPath, isValidUrl } = require('./validator');
module.exports = async function (req, res) {
try {
const { pathname = '/' } = parse(req.url);
const { type = 'png', quality, fullPage } = req.query;
const url = getUrlFromPath(pathname);
const qual = getInt(quality);
if (!isValidUrl(url)) {
res.setHeader('Content-Type', 'text/html');
res.status(400).send(`<h1>Bad Request</h1><p>The url <em>${url}</em> is not valid.</p>`);
} else {
const file = await getScreenshot(url, type, qual, fullPage);
res.setHeader('Content-Type', `image/${type}`);
res.status(200).send(file);
}
} catch (e) {
console.error(e.message);
res.setHeader('Content-Type', 'text/html');
res.status(500).send('<h1>Unexpected Error</h1><p>Sorry, there was a problem</p>');
}
};