UNPKG

leopard-tie-client

Version:

Extended TIE Client that accepts additional custom request headers

137 lines (121 loc) 3.97 kB
"use strict"; exports.__esModule = true; exports["default"] = void 0; var _superagent = _interopRequireDefault(require("superagent")); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } // import unescapeJs from 'unescape-js'; var generateHeaders = function generateHeaders(additionalHeaders) { return Object.assign(additionalHeaders, { Accept: 'application/json' }); }; var getCorrectType = function getCorrectType(val) { var temp = val.trim().toLowerCase(); temp = temp === 'true' || (temp === 'false' ? false : val.trim()); // if (typeof temp === 'boolean') { return temp; } if (/^\d+$/.test(temp)) { // is number return parseInt(temp, 16); } else { return temp; } }; var isJSON = function isJSON(str) { if (/^\s*$/.test(str)) return false; str = str.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, '@'); str = str.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']'); str = str.replace(/(?:^|:|,)(?:\s*\[)+/g, ''); return /^[\],:{}\s]*$/.test(str); }; var cleanOutputParams = function cleanOutputParams(responseObj) { for (var _i = 0, _Object$entries = Object.entries(responseObj.output.parameters); _i < _Object$entries.length; _i++) { var _Object$entries$_i = _Object$entries[_i], key = _Object$entries$_i[0], value = _Object$entries$_i[1]; if (isJSON(value)) { try { var parsedJsonResult = JSON.parse(value); responseObj.output.parameters[key.trim()] = parsedJsonResult; } catch (e) { delete responseObj.output.parameters[key]; } } else { // not json - check for empty param and delete if (value && value.trim() !== '') { responseObj.output.parameters[key.trim()] = getCorrectType(value); } else { delete responseObj.output.parameters[key]; } } if (key !== key.trim() && key in responseObj.output.parameters) { delete responseObj.output.parameters[key]; } } return responseObj; }; var success = { status: 1, message: 'logout' }; var errors = { timeout: { success: false, status: 2, message: 'Request Timeout: ' }, net: { success: false, status: 3, message: 'Network Error' }, business: { success: false, status: 4, message: 'System Error' } }; var _default = { post: function post(url, params, headers, timeoutSeconds) { if (headers === void 0) { headers = {}; } return new Promise(function (resolve, reject) { _superagent["default"].post(url).withCredentials().type('form').timeout({ response: timeoutSeconds * 1000, // Wait timeoutSeconds seconds for the server to start sending, deadline: timeoutSeconds * 1000 // but allow timeoutSeconds seconds for the request to finish. }).set(generateHeaders(headers)).send(params).then(function (res) { var json = res.body; if (json instanceof Object && 'status' in json) { resolve(cleanOutputParams(json)); return; } else if (json === null) { resolve(success); return; } else { var businessError = errors.business; businessError.message = json; reject(businessError); return; } }, function (err) { if (err.timeout) { var timeout = Object.assign({}, errors.timeout); timeout.message = timeout.message + timeoutSeconds + ' seconds'; reject(timeout); } else if (url.includes('endsession') && err.message.includes('Access-Control-Allow-Origin')) { // This happens on teneo.ai for endsession CORS requests.. Assume session was killed resolve(success); } else { var e = errors.business; e.message = err; reject(e); } }); }); } }; exports["default"] = _default; module.exports = exports.default;