asksuite-core
Version:
46 lines (38 loc) • 1.14 kB
JavaScript
const fetch = require('request');
const Util = require('./util');
function mountURL({ conversationId, companyId, type, url }, config) {
const baseURL = `${config.INFOCHAT_DATA_SERVER}`;
const pathWithCompany = companyId ? `/${companyId}` : '';
return `${baseURL}/redirect/${conversationId}${pathWithCompany}?url=${encodeURIComponent(
url,
)}&type=${type}`;
}
function redirect(data, config) {
const URL = mountURL(data, config);
return new Promise((resolve, reject) => {
const requestInfo = {
request: {
url: URL,
followRedirect: false,
timeout: 20000,
},
type: 'redirect',
};
return Util.wrapperSaveRequestOnQueue(config)(() => {
return new Promise((_resolve, _reject) => {
fetch(requestInfo.request, function(err, _resp, _body) {
if (err || _resp.statusCode < 300 || _resp.statusCode >= 400) {
_reject({ error: err, response: _resp });
} else {
_resolve(_body);
}
});
});
}, requestInfo)
.then(resolve)
.catch(reject);
});
}
module.exports = {
redirect,
};