@talentsoft-opensource/widget-display-tool
Version:
Widget Simulator
67 lines (66 loc) • 2.63 kB
JavaScript
;
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;