UNPKG

n8n-nodes-quepasa

Version:

This is an n8n community node. It lets you use Quepasa in your n8n workflows. (use with Quepasa >= v4)

129 lines 4.77 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.getFileNameFromHeaderContent = exports.createWebHookFromTrigger = exports.requestBotInfo = exports.authorizationError = exports.eventExists = exports.apiRequest = void 0; const n8n_workflow_1 = require("n8n-workflow"); const lodash_1 = require("lodash"); async function apiRequest(method, endpoint = '', body = {}, qs = {}, uri, headers = {}) { var _a, _b; let baseUrl = this.getNodeParameter('baseUrl', 0, ''); let token = this.getNodeParameter('token', 0, ''); if (!baseUrl || !token) { const credentials = await this.getCredentials('quepasaTokenAuthApi'); baseUrl = baseUrl || credentials.baseUrl; token = token || credentials.accessToken; } const fullUri = baseUrl + `${endpoint}`; const options = { headers: { Accept: 'application/json', 'X-QUEPASA-TOKEN': token, }, method, qs, url: uri || fullUri, timeout: 15000, returnFullResponse: true, }; if (endpoint === '/download' || endpoint === '/picdata') { options.encoding = 'arraybuffer'; options.json = false; } else { options.encoding = 'json'; options.json = true; } if (Object.keys(headers).length !== 0) { options.headers = Object.assign({}, options.headers, headers); } if (Object.keys(body).length !== 0) { options.body = body; } qs = qs || {}; if (options.qs && Object.keys(options.qs).length === 0) { delete options.qs; } try { return await this.helpers.httpRequest(options); } catch (innerException) { const status = ((_b = (_a = innerException.response) === null || _a === void 0 ? void 0 : _a.data) === null || _b === void 0 ? void 0 : _b.string) || undefined; throw new n8n_workflow_1.NodeApiError(this.getNode(), innerException); } } exports.apiRequest = apiRequest; function eventExists(currentEvents, webhookEvents) { for (const currentEvent of currentEvents) { if ((0, lodash_1.get)(webhookEvents, `${currentEvent.split('.')[0]}.${currentEvent.split('.')[1]}`) !== true) { return false; } } return true; } exports.eventExists = eventExists; function authorizationError(resp, realm, responseCode, message) { if (message === undefined) { message = 'Authorization problem!'; if (responseCode === 401) { message = 'Authorization is required!'; } else if (responseCode === 403) { message = 'Authorization data is wrong!'; } } resp.writeHead(responseCode, { 'WWW-Authenticate': `Basic realm="${realm}"` }); resp.end(message); return { noWebhookResponse: true, }; } exports.authorizationError = authorizationError; function requestBotInfo(credentials) { let baseUrl = credentials.baseUrl; if (baseUrl.endsWith("/")) { baseUrl = baseUrl.slice(0, -1); } const options = { method: 'GET', headers: { Accept: 'application/json', 'X-QUEPASA-TOKEN': credentials.accessToken, }, uri: baseUrl, json: true, }; return options; } exports.requestBotInfo = requestBotInfo; function createWebHookFromTrigger(source) { var _a; const reqBody = { url: source.getNodeWebhookUrl('default'), forwardinternal: source.getNodeParameter('forwardInternal', false), trackid: (_a = source.getNodeParameter('trackid', '')) !== null && _a !== void 0 ? _a : undefined, }; const parExtraAttributes = source.getNodeParameter('extraAttributes', {}); if (parExtraAttributes && parExtraAttributes.attribute) { const data = {}; const atts = parExtraAttributes.attribute; atts.map(property => { data[property.key] = property.value; }); reqBody.extra = data; } return reqBody; } exports.createWebHookFromTrigger = createWebHookFromTrigger; function getFileNameFromHeaderContent(source) { if (source) { const disposition = source['content-disposition']; if (disposition && disposition.indexOf('attachment') !== -1) { const filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/; const matches = filenameRegex.exec(disposition); if (matches != null && matches[1]) { return matches[1].replace(/['"]/g, ''); } } } } exports.getFileNameFromHeaderContent = getFileNameFromHeaderContent; //# sourceMappingURL=GenericFunctions.js.map