UNPKG

leopard-tie-client

Version:

Extended TIE Client that accepts additional custom request headers

111 lines (89 loc) 3.54 kB
"use strict"; exports.__esModule = true; exports["default"] = void 0; var _http = _interopRequireDefault(require("./utils/http")); var _prune = _interopRequireDefault(require("./utils/prune")); var _teneoResponse = _interopRequireDefault(require("./utils/teneo-response")); var _browserOrNode = require("browser-or-node"); function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { "default": obj }; } var readClientOrigin = function readClientOrigin() { if (typeof document === 'undefined' || !document.location) return; return document.location.origin; }; var getHeaders = function getHeaders(currentSessionId, inputData) { var headers = currentSessionId && _browserOrNode.isNode ? { Cookie: "JSESSIONID=" + currentSessionId } : {}; return 'headers' in inputData ? Object.assign(inputData.headers, headers) : headers; }; var getParameters = (0, _prune["default"])(['viewtype', 'userinput', 'text', 'clientOrigin', 'headers']); var formatEngineUrl = function formatEngineUrl(url) { return url.endsWith('/') ? url : url + "/"; }; var appendSessionId = function appendSessionId(url, sessionId) { return sessionId ? url + ";jsessionid=" + sessionId : url; }; var requestBody = function requestBody(body) { var clientOrigin = readClientOrigin(); var jspViewNames = { viewtype: 'tieapi' }; var parameters = clientOrigin ? Object.assign(jspViewNames, { clientOrigin: clientOrigin }) : jspViewNames; return Object.assign(parameters, body); }; function close(teneoEngineUrl, sessionId, timeoutSeconds) { if (timeoutSeconds === void 0) { timeoutSeconds = 20; } var endSessionUrl = appendSessionId(formatEngineUrl(teneoEngineUrl) + "endsession", sessionId); var headers = sessionId && _browserOrNode.isNode ? { Cookie: "JSESSIONID=" + sessionId } : {}; return _http["default"].post(endSessionUrl, requestBody(), headers, timeoutSeconds); // returns a promise } var verifyInputData = function verifyInputData(inputData) { var validDataType = function validDataType(x) { return ['string', 'number', 'bool', 'object'].includes(typeof x); }; var keys = Object.keys(inputData); if (!(typeof inputData === 'object' && keys.includes('text'))) { throw new TypeError("sendInput input data must be an object with atleast a 'text' property: " + JSON.stringify(inputData)); } if (!keys.every(function (key) { return validDataType(inputData[key]); })) { throw new TypeError("sendInput input data object can only contain values of type string, number or bool " + JSON.stringify(inputData)); } }; function sendInput(teneoEngineUrl, currentSessionId, inputData, timeoutSeconds) { if (timeoutSeconds === void 0) { timeoutSeconds = 20; } verifyInputData(inputData); var headers = getHeaders(currentSessionId, inputData); var parameters = getParameters(inputData); var body = requestBody(Object.assign({ userinput: inputData.text }, parameters)); var url = appendSessionId(formatEngineUrl(teneoEngineUrl), currentSessionId); return _http["default"].post(url, body, headers, timeoutSeconds); // returns a promise } function wrap(teneoResp) { return new _teneoResponse["default"](teneoResp); } var _default = { wrap: wrap, close: close, sendInput: sendInput, init: function init(teneoEngineUrl) { return { close: close.bind(null, teneoEngineUrl), sendInput: sendInput.bind(null, teneoEngineUrl), wrap: wrap }; } }; exports["default"] = _default; module.exports = exports.default;