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
JavaScript
"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