forked from postlight/parser-api
-
Notifications
You must be signed in to change notification settings - Fork 38
/
Copy pathroutes.js
executable file
·48 lines (43 loc) · 1.42 KB
/
routes.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
const Router = require('express').Router;
const router = new Router();
const Parser = require('@postlight/parser');
const ParserCustomizer = require('./customizer');
ParserCustomizer.customize(Parser);
router.route('/').get((req, res) => {
res.json({
message: 'Welcome to 🚀mercury-parser-api API! Endpoint: /parser',
});
});
router.route('/parser').get(async (req, res) => {
let result = { message: 'No URL was provided' };
if (req.query.url) {
try {
const contentType = req.query.contentType || 'html';
let headers = new Object();
if (typeof req.query.headers !== 'undefined') {
headers = JSON.parse(req.query.headers);
}
result = await Parser.parse(req.query.url, {
contentType,
headers,
});
} catch (error) {
result = { error: true, messages: error.message };
}
}
return res.json(result);
});
router.route('/parse-html').post(async (req, res) => {
let result = { message: 'Invalid request body, both url and html are required' };
if (req.body.url && req.body.html) {
try {
result = await Parser.parse(req.body.url, {
html: req.body.html
});
} catch (error) {
result = { error: true, messages: error.message };
}
}
return res.json(result);
});
module.exports = router;