UNPKG

@talentsoft-opensource/widget-display-tool

Version:

Widget Simulator

67 lines (66 loc) 2.63 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const bodyParser = require("body-parser"); const urlParse = require("url").parse; const requestExternalResource_1 = require("./requestExternalResource"); const downloadExternalResource_1 = require("./downloadExternalResource"); function setupProxy(app, logger) { function logRequest(req) { logger.info(`incoming request - ${req.method} - ${req.url}`); } app.use(bodyParser.text({ type: '*/*' })); app.all("/proxy", async function (req, res, next) { logRequest(req); const query = urlParse(req.url, true).query; const { url, secretkey, login } = query; const securitymode = query.securitymode || "directconnect"; if (!url || !secretkey || !login) { res.sendStatus(400).json({ error: "Missing querystring parameter. You must provide url, secretKey, login and securityMode" }); return; } try { const options = { url, verb: req.method, body: req.body, headers: req.headers }; const result = await requestExternalResource_1.requestExternalResource(options, secretkey, login, securitymode); await res.json(result); } catch (err) { logger.error(err); next(err); } }); app.all("/download", async function (req, res, next) { const query = urlParse(req.url, true).query; const { url, secretkey, login } = query; const securitymode = query.securitymode || "directconnect"; if (!url || !secretkey || !login) { res.sendStatus(400).json({ error: "Missing querystring parameter. You must provide url, secretKey, login and securityMode" }); return; } try { const options = { url, verb: req.method, body: req.body, headers: req.headers }; const result = await downloadExternalResource_1.downloadExternalResource(options, secretkey, login, securitymode); res.set('Content-Type', result.headers["content-type"]); res.set('Content-Disposition', result.headers["content-disposition"]); return res.send(Buffer.from(result.body)); } catch (err) { logger.error(err); next(err); } }); } exports.setupProxy = setupProxy;