n8n-nodes-quepasa
Version:
This is an n8n community node. It lets you use Quepasa in your n8n workflows. (use with Quepasa >= v4)
214 lines • 8.37 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.Quepasa = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const descriptions_1 = require("./descriptions");
const methods_1 = require("./methods");
const GenericFunctions_1 = require("./GenericFunctions");
class Quepasa {
constructor() {
this.description = {
displayName: 'Quepasa (Whatsapp)',
name: 'quepasa',
icon: 'file:quepasa.png',
group: ['output'],
version: 1,
subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}',
description: 'Non Official Whatsapp API',
defaults: {
name: 'Quepasa',
},
inputs: ['main'],
outputs: ['main'],
credentials: [
{
name: 'quepasaTokenAuthApi',
testedBy: 'quepasaTokenAuthApiTest',
required: true,
displayOptions: {
show: {
authentication: [
'predefinedCredentialType',
],
},
},
},
],
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: 'Resource',
name: 'resource',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Information',
value: 'information',
},
{
name: 'Message',
value: 'message',
},
{
name: 'Webhook',
value: 'webhook',
},
{
name: 'Control',
value: 'control',
},
],
default: 'message',
required: true,
},
{
displayName: 'Operation',
name: 'operation',
type: 'hidden',
noDataExpression: true,
displayOptions: {
show: {
resource: [
'information',
],
},
},
default: 'information',
required: true,
},
...descriptions_1.controlDescription,
...descriptions_1.controlFields,
...descriptions_1.messageDescription,
...descriptions_1.messageFields,
...descriptions_1.webhookDescription,
...descriptions_1.webhookFields,
],
};
this.methods = {
credentialTest: {
async quepasaTokenAuthApiTest(credential) {
const credentials = credential.data;
const options = (0, GenericFunctions_1.requestBotInfo)(credentials);
try {
await this.helpers.request(options);
return {
status: 'OK',
message: 'Authentication successful',
};
}
catch (error) {
return {
status: 'Error',
message: error.message,
};
}
},
},
};
}
async execute() {
const items = this.getInputData();
const resource = this.getNodeParameter('resource', 0);
const operation = this.getNodeParameter('operation', 0);
const returnData = [];
for (let i = 0; i < items.length; i++) {
let responseData;
try {
if (resource === 'information') {
const fullResponse = await GenericFunctions_1.apiRequest.call(this, 'GET', '/info');
responseData = fullResponse.body;
}
else if (resource === 'message') {
responseData = await methods_1.resourceMessage.call(this, operation, items, i);
}
else if (resource === 'webhook') {
responseData = await methods_1.resourceWebhook.call(this, operation, items, i);
}
else if (resource === 'control') {
responseData = await methods_1.resourceControl.call(this, operation, items, i);
}
if (Array.isArray(responseData)) {
returnData.push.apply(returnData, responseData);
}
else if (responseData !== undefined) {
returnData.push(responseData);
}
}
catch (error) {
if (this.continueOnFail()) {
if (operation === 'download' || operation === 'picdata' || items[i].binary) {
items[i].json = { error: error.message };
}
else {
returnData.push(error);
}
continue;
}
if (error instanceof n8n_workflow_1.NodeError)
throw error;
else
throw new n8n_workflow_1.NodeOperationError(this.getNode(), error);
}
}
if (operation === 'download') {
return this.prepareOutputData(items);
}
else {
return [this.helpers.returnJsonArray(returnData)];
}
}
}
exports.Quepasa = Quepasa;
//# sourceMappingURL=Quepasa.node.js.map