forked from blockparty-sh/slp-explorer
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathserver.js
74 lines (52 loc) · 2.07 KB
/
server.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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
require('dotenv').config();
const fs = require('fs');
const isBot = require('isbot');
const puppeteer = require('puppeteer');
const express = require('express');
const app = express();
const path = require('path');
let browser = null;
const replaceLinksIfBot = (html) => html.replace(/href="\/#/g, 'href="/');
const loadPage = async (res, req, url) => {
const page = await browser.newPage();
await page.goto(url, {
waitUntil: "networkidle0"
});
let content = await page.content();
// for bots we want them stuck in pre-rendered land
if (isBot(req.headers['users-agent'])) {
content = replaceLinks(content);
}
return res.send(content);
}
const router = express.Router();
router.get('/', (req,res) => {
let html = fs.readFileSync(path.join(__dirname+'/public/index.html'), 'utf-8');
// for bots we want them stuck in pre-rendered land
if (isBot(req.headers['users-agent'])) {
html = replaceLinks(html);
}
return res.send(html);
});
router.get('/alltokens', async (req, res) =>
loadPage(res, req, `http://127.0.0.1:8000/?disablesse=1#alltokens`));
router.get('/dividend', async (req, res) =>
loadPage(res, req, `http://127.0.0.1:8000/?disablesse=1#dividend`));
router.get('/tx/:item', async (req, res) =>
loadPage(res, req, `http://127.0.0.1:8000/?disablesse=1#tx/${req.params.item}`));
router.get('/bchtx/:item', async (req, res) =>
loadPage(res, req, `http://127.0.0.1:8000/?disablesse=1#bchtx/${req.params.item}`));
router.get('/token/:item', async (req, res) =>
loadPage(res,`req, http://127.0.0.1:8000/?disablesse=1#token/${req.params.item}`));
router.get('/address/:item', async (req, res) =>
loadPage(res, req, `http://127.0.0.1:8000/?disablesse=1#address/${req.params.item}`));
router.get('/block/:item', async (req, res) =>
loadPage(res, req, `http://127.0.0.1:8000/?disablesse=1#block/${req.params.item}`));
app.use('/', router);
app.use('/', express.static('public'));
(async () => {
browser = await puppeteer.launch();
const port = process.env.port || 8000;
app.listen(port);
console.log(`listening on port: ${port}`);
})();