UNPKG

n8n-nodes-quepasa

Version:

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

244 lines 10.7 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.QuepasaTrigger = void 0; const n8n_workflow_1 = require("n8n-workflow"); const GenericFunctions_1 = require("./GenericFunctions"); const isbot_1 = __importDefault(require("isbot")); class QuepasaTrigger { constructor() { this.description = { displayName: 'Quepasa Trigger', name: 'quepasaTrigger', icon: 'file:favicon.png', group: ['trigger'], version: 1, description: 'Starts the workflow when Quepasa events occur', defaults: { name: 'Quepasa Trigger', }, inputs: [], outputs: ['main'], credentials: [ { name: 'quepasaTokenAuthApi', testedBy: 'quepasaTokenAuthApiTest', required: true, displayOptions: { show: { authentication: [ 'predefinedCredentialType', ], }, }, }, ], webhooks: [ { name: 'default', httpMethod: 'POST', responseMode: 'onReceived', path: 'default', }, ], properties: [ { displayName: 'Authentication', name: 'authentication', noDataExpression: true, type: 'options', required: true, options: [ { name: 'Parameters', value: 'parametersCredentialType', }, { name: 'Predefined Quepasa Credentials', value: 'predefinedCredentialType', description: 'BaseUrl + Token', }, ], default: 'parametersCredentialType', }, { displayName: 'BaseUrl', name: 'baseUrl', type: 'string', default: '', required: true, description: 'Base URL', placeholder: 'https://api.quepasa.org:31000', displayOptions: { show: { authentication: [ 'parametersCredentialType', ], }, }, }, { displayName: 'Token', name: 'token', type: 'string', typeOptions: { password: true }, default: '', required: true, description: 'Token of Whatsapp bot, override credentials', placeholder: '00000000-0000-0000-0000-000000000000', displayOptions: { show: { authentication: [ 'parametersCredentialType', ], }, }, }, { displayName: 'Forward Internal', name: 'forwardInternal', type: 'boolean', default: false, description: 'Whether should forward internal messages sent by api', }, { displayName: 'Track ID', name: 'trackid', type: 'string', default: '', description: '(Optional) System identifier, avoid duplicated messages', displayOptions: { show: { forwardInternal: [ true, ], }, }, }, { displayName: 'Extra Attributes', name: 'extraAttributes', placeholder: 'Add Attributes', type: 'fixedCollection', typeOptions: { multipleValues: true, }, default: {}, options: [ { name: 'attribute', displayName: 'Attributes', values: [ { displayName: 'Key', name: 'key', type: 'string', default: '', description: 'Key of the attribute', }, { displayName: 'Value', name: 'value', type: 'string', default: '', description: 'Value to set for the attribute', }, ], }, ], }, ], }; this.webhookMethods = { default: { async checkExists() { var _a, _b; const webhookData = this.getWorkflowStaticData('node'); if (webhookData.webhookUrl === undefined) { return false; } try { const webhook = (0, GenericFunctions_1.createWebHookFromTrigger)(this); const headers = { 'X-QUEPASA-WHURL': webhook.url, }; const fullResponse = await GenericFunctions_1.apiRequest.call(this, 'GET', '/webhook', {}, {}, undefined, headers); if (fullResponse.statusCode !== 200) { throw new n8n_workflow_1.NodeApiError(this.getNode(), { httpCode: fullResponse.statusCode, message: (_a = fullResponse.statusMessage) !== null && _a !== void 0 ? _a : "invalid request" }); } const response = fullResponse.body; if (!response.success) { throw new n8n_workflow_1.NodeApiError(this.getNode(), response); } (_b = response.webhooks) === null || _b === void 0 ? void 0 : _b.forEach((item) => { if (item === webhook) return true; }); return false; } catch { return false; } }, async create() { var _a; const webhookData = this.getWorkflowStaticData('node'); const webhook = (0, GenericFunctions_1.createWebHookFromTrigger)(this); try { const fullResponse = await GenericFunctions_1.apiRequest.call(this, 'POST', '/webhook', webhook); if (fullResponse.statusCode !== 200) { throw new n8n_workflow_1.NodeApiError(this.getNode(), { httpCode: fullResponse.statusCode, message: (_a = fullResponse.statusMessage) !== null && _a !== void 0 ? _a : "invalid request" }); } const response = fullResponse.body; if (response.affected === undefined || response.affected === 0) { return false; } webhookData.webhookUrl = webhook.url; return true; } catch { return false; } }, async delete() { var _a; const webhookData = this.getWorkflowStaticData('node'); if (webhookData.webhookUrl !== undefined) { const body = { url: webhookData.webhookUrl, }; try { const fullResponse = await GenericFunctions_1.apiRequest.call(this, 'DELETE', '/webhook', body); if (fullResponse.statusCode !== 200) { throw new n8n_workflow_1.NodeApiError(this.getNode(), { httpCode: fullResponse.statusCode, message: (_a = fullResponse.statusMessage) !== null && _a !== void 0 ? _a : "invalid request" }); } const response = fullResponse.body; if (response.affected === undefined || response.affected === 0) { return false; } delete webhookData.webhookUrl; return true; } catch { return false; } } return true; }, }, }; } async webhook() { const realm = 'Webhook'; const resp = this.getResponseObject(); const headers = this.getHeaderData(); const userAgent = headers['user-agent']; if (!userAgent.startsWith("Quepasa") && (0, isbot_1.default)(userAgent)) { return (0, GenericFunctions_1.authorizationError)(resp, realm, 403); } const req = this.getRequestObject(); return { workflowData: [this.helpers.returnJsonArray(req.body)], }; } } exports.QuepasaTrigger = QuepasaTrigger; //# sourceMappingURL=QuepasaTrigger.node.js.map