@cognigy/rest-api-client
Version:
Cognigy REST-Client
589 lines • 21.1 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.HTTP_REQUEST = exports.HTTP_CONNECTION_OAUTH2 = exports.IHttpOAuthConnectionFieldSchema = exports.HTTP_CONNECTION_APIKEYXKEY = exports.HTTP_CONNECTION_APIKEYAUTHKEY = exports.HTTP_CONNECTION_BASIC = void 0;
/* Custom modules */
const createNodeDescriptor_1 = require("../../createNodeDescriptor");
exports.HTTP_CONNECTION_BASIC = {
type: "http_basic",
label: "Basic Auth for HTTP Requests",
fields: [
{ fieldName: "username" },
{ fieldName: "password" }
]
};
exports.HTTP_CONNECTION_APIKEYAUTHKEY = {
type: "http_apiKeyAuthKey",
label: "ApiKeyAuthKey Auth for HTTP Requests",
fields: [
{ fieldName: "authApiKey" }
]
};
exports.HTTP_CONNECTION_APIKEYXKEY = {
type: "http_apiKeyXKey",
label: "ApiKeyXKey Auth for HTTP Requests",
fields: [
{ fieldName: "authApiKey" }
]
};
exports.IHttpOAuthConnectionFieldSchema = {
title: "foreignSettingsDataSchema",
type: "object",
additionalProperties: false,
properties: {
oAuth2Url: { type: "string" },
oAuth2ClientId: { type: "string" },
oAuth2ClientSecret: { type: "string" },
oAuth2Scope: { type: "string" }
}
};
exports.HTTP_CONNECTION_OAUTH2 = {
type: "http_oauth2",
label: "OAuth2 for HTTP Requests",
fields: [
{ fieldName: "oAuth2Url" },
{ fieldName: "oAuth2ClientId" },
{ fieldName: "oAuth2ClientSecret" },
{ fieldName: "oAuth2Scope" }
]
};
;
/**
* Node name: 'httpRequest'
*
* Purpose:
* Sends HTTP request
*/
exports.HTTP_REQUEST = (0, createNodeDescriptor_1.createNodeDescriptor)({
type: "httpRequest",
defaultLabel: "HTTP Request",
summary: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__SUMMARY",
appearance: {
showIcon: false
},
fields: [
{
key: "type",
type: "select",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__TYPE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__TYPE__DESCRIPTION",
defaultValue: "GET",
params: {
required: true,
options: [
{
label: "GET",
value: "GET"
},
{
label: "POST",
value: "POST"
},
{
label: "PATCH",
value: "PATCH"
},
{
label: "PUT",
value: "PUT"
},
{
label: "DELETE",
value: "DELETE"
}
]
}
},
{
key: "url",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__URL__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__URL__DESCRIPTION",
params: {
required: true
}
},
{
key: "headers",
type: "keyValuePairs",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__HEADERS__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__HEADERS__DESCRIPTION",
defaultValue: "{}",
},
{
key: "payloadType",
type: "select",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__PAYLOAD_TYPE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__PAYLOAD_TYPE__DESCRIPTION",
defaultValue: "json",
params: {
required: true,
options: [
{
label: "JSON",
value: "json"
},
{
label: "Text",
value: "text"
},
{
label: "Form-Data",
value: "form-data"
}
]
}
},
{
key: "payloadText",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__PAYLOAD_TEXT__LABEL",
defaultValue: "",
condition: {
key: "payloadType",
value: "text"
}
},
{
key: "payloadJSON",
type: "json",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__PAYLOAD_JSON__LABEL",
defaultValue: "{}",
condition: {
key: "payloadType",
value: "json"
}
},
{
key: "payloadFormData",
type: "json",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__PAYLOAD_FORM_DATA__LABEL",
defaultValue: "{}",
condition: {
key: "payloadType",
value: "form-data"
}
},
{
key: "storeLocation",
type: "select",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__STORE_LOCATION__LABEL",
params: {
options: [
{
label: "Input",
value: "input"
},
{
label: "Context",
value: "context"
}
],
required: true
},
defaultValue: "input"
},
{
key: "inputKey",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__INPUT_KEY__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__INPUT_KEY__DESCRIPTION",
defaultValue: "httprequest",
condition: {
key: "storeLocation",
value: "input"
}
},
{
key: "contextKey",
type: "cognigyText",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__CONTEXT_KEY__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__CONTEXT_KEY__DESCRIPTION",
defaultValue: "httprequest",
condition: {
key: "storeLocation",
value: "context"
}
},
{
key: "authType",
type: "select",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__AUTH_TYPE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__AUTH_TYPE__DESCRIPTION",
defaultValue: "none",
params: {
required: true,
options: [
{
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__AUTH_TYPE__OPTIONS__NONE__LABEL",
value: "none"
},
{
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__AUTH_TYPE__OPTIONS__BASIC__LABEL",
value: "basic"
},
{
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__AUTH_TYPE__OPTIONS__OAUTH2__LABEL",
value: "oAuth2"
},
{
label: 'UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__AUTH_TYPE__OPTIONS__API_kEY__LABEL',
value: "apiKeyAuthKey"
},
{
label: 'UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__AUTH_TYPE__OPTIONS__X_API_KEY__LABEL',
value: "apiKeyXKey"
}
]
},
resetOption: {
lookupValue: "none",
fieldsToReset: ["basicConnection", "apiKeyAuthKeyConnection", "apiKeyXKeyConnection", "oAuth2Connection"]
}
},
{
key: "basicConnection",
type: "connection",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__BASIC_CONNECTION__LABEL",
params: {
connectionType: exports.HTTP_CONNECTION_BASIC.type
},
condition: {
key: "authType",
value: "basic"
}
},
{
key: "apiKeyAuthKeyConnection",
type: "connection",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__API_KEY_AUTH_CONNECTION__LABEL",
params: {
connectionType: exports.HTTP_CONNECTION_APIKEYAUTHKEY.type
},
condition: {
key: "authType",
value: "apiKeyAuthKey"
}
},
{
key: "apiKeyXKeyConnection",
type: "connection",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__API_KEY_XKEY_CONNECTION__LABEL",
params: {
connectionType: exports.HTTP_CONNECTION_APIKEYXKEY.type
},
condition: {
key: "authType",
value: "apiKeyXKey"
}
},
{
key: "oAuth2Connection",
type: "connection",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__OAUTH2_CONNECTION__LABEL",
params: {
connectionType: exports.HTTP_CONNECTION_OAUTH2.type
},
condition: {
key: "authType",
value: "oAuth2"
}
},
{
key: "async",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ASYNC__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ASYNC__DESCRIPTION",
defaultValue: false
},
{
key: "cache",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__CACHE__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__CACHE__DESCRIPTION",
defaultValue: false
},
{
key: "cacheExpiry",
type: "number",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__CACHE_EXPIRY__LABEL",
defaultValue: 0,
condition: {
key: "cache",
value: true
}
},
{
key: "timeout",
type: "number",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__TIMEOUT__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__TIMEOUT__DESCRIPTION",
defaultValue: 8000,
params: {
min: 2000,
max: 30000 // 30 sec
},
condition: {
key: "async",
value: true
}
},
{
key: "retryAttempts",
type: "number",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__RETRY_ATTEMPTS__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__RETRY_ATTEMPTS__DESCRIPTION",
defaultValue: 0,
params: {
min: 0,
max: 3
},
condition: {
key: "async",
value: true
}
},
{
key: "storeResponseHeaders",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__STORE_RESPONSE_HEADERS__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__STORE_RESPONSE_HEADERS__DESCRIPTION",
defaultValue: false
},
{
key: "allowSelfSigned",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ALLOW_SELF_SIGNED__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ALLOW_SELF_SIGNED__DESCRIPTION",
defaultValue: false
},
{
key: "errorLogging",
type: "select",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ERROR_LOGGING__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ERROR_LOGGING__DESCRIPTION",
defaultValue: "none",
params: {
required: true,
options: [
{
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ERROR_LOGGING__OPTIONS__NONE__LABEL",
value: "none"
},
{
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ERROR_LOGGING__OPTIONS__BASIC__LABEL",
value: "basic"
},
{
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ERROR_LOGGING__OPTIONS__FULL__LABEL",
value: "full"
}
]
}
},
{
key: "debugLogging",
type: "select",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__DEBUG_LOGGING__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__DEBUG_LOGGING__DESCRIPTION",
defaultValue: "none",
params: {
required: true,
options: [
{
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__DEBUG_LOGGING__OPTIONS__NONE__LABEL",
value: "none"
},
{
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__DEBUG_LOGGING__OPTIONS__REQUEST__LABEL",
value: "request"
},
{
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__DEBUG_LOGGING__OPTIONS__RESPONSE__LABEL",
value: "response"
},
{
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__DEBUG_LOGGING__OPTIONS__FULL__LABEL",
value: "full"
}
]
}
},
{
key: "abortOnError",
type: "toggle",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ABORT_ON_ERROR__LABEL",
description: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__ABORT_ON_ERROR__DESCRIPTION",
defaultValue: false
},
{
key: "logWarning",
type: "description",
label: " ",
params: {
text: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__FIELDS__LOG_WARNING__PARAMS__TEXT"
},
condition: {
key: "errorLogging",
value: "full"
}
}
],
sections: [
{
key: "payloadSection",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__SECTIONS__PAY_LOAD_SECTION__LABEL",
defaultCollapsed: false,
fields: [
"payloadType",
"payloadText",
"payloadJSON",
"payloadFormData",
],
condition: {
key: "type",
value: ["POST", "PUT", "PATCH"]
}
},
{
key: "storage",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__SECTIONS__STORAGE__LABEL",
defaultCollapsed: true,
fields: [
"storeLocation",
"inputKey",
"contextKey",
]
},
{
key: "advanced",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__SECTIONS__ADVANCED__LABEL",
defaultCollapsed: true,
fields: [
"headers",
"storeResponseHeaders",
]
},
{
key: "auth",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__SECTIONS__AUTHENTICATION__LABEL",
defaultCollapsed: true,
fields: [
"authType",
"oAuth2Connection",
"apiKeyXKeyConnection",
"apiKeyAuthKeyConnection",
"basicConnection"
]
},
{
key: "executionAndCaching",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__SECTIONS__EXECUTING_AND_CACHING__LABEL",
defaultCollapsed: true,
fields: [
"async",
"timeout",
"retryAttempts",
"cache",
"cacheExpiry",
]
},
{
key: "security",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__SECTIONS__SECURITY__LABEL",
defaultCollapsed: true,
fields: [
"allowSelfSigned"
]
},
{
key: "errors",
label: "UI__NODE_EDITOR__SERVICE__HTTP_REQUEST__SECTIONS__ERRORS__LABEL",
defaultCollapsed: true,
fields: [
"errorLogging",
"logWarning",
"abortOnError",
"debugLogging"
]
}
],
form: [
{ type: "field", key: "connection" },
{ type: "field", key: "type" },
{ type: "field", key: "url" },
{ type: "section", key: "payloadSection" },
{ type: "section", key: "storage" },
{ type: "section", key: "advanced" },
{ type: "section", key: "auth" },
{ type: "section", key: "executionAndCaching" },
{ type: "section", key: "security" },
{ type: "section", key: "errors" }
],
preview: {
key: "url",
type: "text",
},
tags: ["service", "get", "post", "put", "patch"],
function: async (httpRequestParams) => {
const { cognigy, config } = httpRequestParams;
const { api } = cognigy;
const { url, inputKey, contextKey, payloadType, payloadJSON, payloadText, payloadFormData, async, storeLocation, authType, } = config;
const { oAuth2Connection } = config;
const { basicConnection } = config;
const { apiKeyAuthKeyConnection } = config;
const { apiKeyXKeyConnection } = config;
if (!url) {
throw new Error("Unable to execute http request. Url is missing.");
}
if (storeLocation === "context" && !contextKey) {
throw new Error("Unable to execute http request. Context Key is missing.");
}
if (storeLocation === "input" && !inputKey) {
throw new Error("Unable to execute http request. Input Key is missing.");
}
// Check if an authType has been set
if (authType && authType !== "none") {
switch (authType) {
case "basic":
if (!basicConnection) {
throw new Error("Unable to execute HTTP request. No authentication connection (basic) selected.");
}
break;
case "oAuth2":
if (!oAuth2Connection) {
throw new Error("Unable to execute HTTP request. No authentication connection (oAuth2) selected.");
}
break;
case "apiKeyAuthKey":
if (!apiKeyAuthKeyConnection) {
throw new Error("Unable to execute HTTP request. No authentication connection (apiKeyAuthKey) selected.");
}
break;
case "apiKeyXKey":
if (!apiKeyXKeyConnection) {
throw new Error("Unable to execute HTTP request. No authentication connection (apiKeyXKey) selected.");
}
break;
}
}
if (payloadType === "json" && typeof payloadJSON === "object") {
config.payloadIsJSON = true;
config.payload = payloadJSON;
}
else if (payloadType === "form-data" && typeof payloadFormData === "object") {
config.payloadIsFormData = true;
config.payload = payloadFormData;
}
else {
config.payloadIsJSON = false;
config.payload = payloadText;
}
if (async) {
api.sendHttpRequest(httpRequestParams);
}
else {
return await api.sendHttpRequest(httpRequestParams);
}
}
});
//# sourceMappingURL=httpRequest.js.map