mailtrain/mvis/test-embed/index.js
2018-12-25 20:13:32 +01:00

63 lines
1.6 KiB
JavaScript

'use strict';
const http = require('http');
const https = require('https');
const express = require('express');
const hbs = require('hbs');
const router = require('../ivis-core/server/lib/router-async').create();
const axios = require('axios');
const fs = require('fs');
const path = require('path');
const clientName = 'admin';
const port = 3000;
const app = express();
app.set('port', port);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
const agent = new https.Agent({
ca: fs.readFileSync('../server/certs/ca-crt.pem'),
key: fs.readFileSync('../server/certs/' + clientName + '-key.pem'),
cert: fs.readFileSync('../server/certs/' + clientName + '-crt.pem')
});
const embedDist = path.join(__dirname, '..', 'ivis-core', 'embedding', 'dist', 'ivis.js');
app.use('/ivis.js', express.static(embedDist));
router.getAsync('/favicon.ico', async (req, res) => {
res.status(404).send('Not found');
});
router.getAsync('/:mtUserId/:panelId', async (req, res) => {
const mtUserId = Number.parseInt(req.params.mtUserId);
const panelId = Number.parseInt(req.params.panelId);
const url = `https://localhost:8445/api/mt-embedded-panel/${mtUserId}/${panelId}`;
const resp = await axios.get(url, { httpsAgent: agent });
const panelInfo = resp.data;
res.render('panel', {
token: panelInfo.token,
panelId: panelId,
ivisSandboxUrlBase: panelInfo.ivisSandboxUrlBase
});
});
app.use(router);
const server = http.createServer(app);
server.on('listening', () => {
console.log('Express', `WWW server listening on HTTP port ${port}`);
});
server.listen(port, '0.0.0.0');