n8n-nodes-walichat
Version:
n8n plugin for WaliChat
297 lines (296 loc) • 12.6 kB
JavaScript
"use strict";
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.WaliChat = void 0;
const options = __importStar(require("./methods"));
const team_1 = require("../actions/team");
const send_messages_1 = require("../actions/send-messages");
const other_1 = require("../actions/other");
const labels_1 = require("../actions/labels");
const channels_1 = require("../actions/channels");
const groups_1 = require("../actions/groups");
const catalog_1 = require("../actions/catalog");
const meeting_links_1 = require("../actions/meeting-links");
const userStatus_1 = require("../actions/userStatus");
const session_1 = require("../actions/session");
const quick_replies_1 = require("../actions/quick-replies");
const queue_1 = require("../actions/queue");
const profile_1 = require("../actions/profile");
const departments_1 = require("../actions/departments");
const campaigns_1 = require("../actions/campaigns");
const chats_1 = require("../actions/chats");
const chatContacts_1 = require("../actions/chatContacts");
const chatMessages_1 = require("../actions/chatMessages");
const chatFiles_1 = require("../actions/chatFiles");
const outboundMessages_1 = require("../actions/outboundMessages");
const outboundFiles_1 = require("../actions/outboundFiles");
const webhooks_1 = require("../actions/webhooks");
const numbers_1 = require("../actions/numbers");
class WaliChat {
constructor() {
this.description = {
displayName: 'WaliChat',
name: 'walichat',
icon: 'file:icon.png',
group: ['output'],
version: 1,
subtitle: '={{$parameter["resource"] + ": " + $parameter["operation"]}}',
description: 'Interact with WaliChat WhatsApp API',
defaults: {
name: 'WaliChat',
},
inputs: ['main'],
outputs: ['main'],
credentials: [
{
name: 'walichatApiKey',
required: true,
},
],
properties: [
{
displayName: 'Resource',
name: 'resource',
type: 'options',
noDataExpression: true,
options: [
{
name: 'Send messages',
value: 'send-messages',
},
{
name: 'Outbound Messages',
value: 'outbound-messages',
},
{
name: 'WhatsApp Numbers',
value: 'numbers',
},
{
name: 'Groups',
value: 'groups',
},
{
name: 'Channels',
value: 'channels',
},
{
name: 'Chats',
value: 'chats',
},
{
name: 'Chat Contacts',
value: 'chat-contacts',
},
{
name: 'Chat Messages',
value: 'chat-messages',
},
{
name: 'Chat Files',
value: 'chat-files',
},
{
name: 'Contacts',
value: 'contacts',
},
{
name: 'Team',
value: 'team',
},
{
name: 'Labels',
value: 'labels',
},
{
name: 'Departments',
value: 'departments'
},
{
name: 'Files',
value: 'outbound-files',
},
{
name: 'Quick replies',
value: 'quick-replies',
},
{
name: 'Queue',
value: 'queue',
},
{
name: 'WhatsApp session',
value: 'session',
},
{
name: 'WhatsApp profile',
value: 'profile'
},
{
name: 'Business catalog',
value: 'catalog',
},
{
name: 'Campaigns',
value: 'campaigns',
},
{
name: 'Meeting Links',
value: 'meeting-links',
},
{
name: 'User Status',
value: 'user-status',
},
{
name: 'Webhooks',
value: 'webhooks',
},
{
name: 'Other',
value: 'other',
}
],
default: 'send-messages',
},
...send_messages_1.messageProperties,
...team_1.teamProperties,
...labels_1.labelProperties,
...channels_1.channelProperties,
...groups_1.groupProperties,
...catalog_1.catalogProperties,
...meeting_links_1.meetingLinkProperties,
...userStatus_1.userStatusProperties,
...session_1.sessionProperties,
...quick_replies_1.quickReplyProperties,
...queue_1.queueProperties,
...profile_1.profileProperties,
...departments_1.departmentProperties,
...campaigns_1.campaignProperties,
...chats_1.chatProperties,
...chatContacts_1.chatContactProperties,
...chatMessages_1.chatMessageProperties,
...chatFiles_1.chatFileProperties,
...outboundMessages_1.outboundMessageProperties,
...outboundFiles_1.outboundFileProperties,
...webhooks_1.webhookProperties,
...numbers_1.numberProperties,
...other_1.otherProperties,
],
};
this.methods = {
loadOptions: { ...options }
};
}
async execute() {
const items = this.getInputData();
const returnData = [];
for (let i = 0; i < items.length; i += 1) {
try {
const resource = this.getNodeParameter('resource', i);
let result;
if (resource === 'send-messages') {
result = await send_messages_1.executeMessageOperations.call(this, i);
}
else if (resource === 'team') {
result = await team_1.executeTeamOperations.call(this, i);
}
else if (resource === 'labels') {
result = await labels_1.executeLabelOperations.call(this, i);
}
else if (resource === 'channels') {
result = await channels_1.executeChannelOperations.call(this, i);
}
else if (resource === 'groups') {
result = await groups_1.executeGroupOperations.call(this, i);
}
else if (resource === 'catalog') {
result = await catalog_1.executeCatalogOperations.call(this, i);
}
else if (resource === 'meeting-links') {
result = await meeting_links_1.executeMeetingLinkOperations.call(this, i);
}
else if (resource === 'user-status') {
result = await userStatus_1.executeUserStatusOperations.call(this, i);
}
else if (resource === 'session') {
result = await session_1.executeSessionOperations.call(this, i);
}
else if (resource === 'quick-replies') {
result = await quick_replies_1.executeQuickReplyOperations.call(this, i);
}
else if (resource === 'queue') {
result = await queue_1.executeQueueOperations.call(this, i);
}
else if (resource === 'profile') {
result = await profile_1.executeProfileOperations.call(this, i);
}
else if (resource === 'departments') {
result = await departments_1.executeDepartmentOperations.call(this, i);
}
else if (resource === 'campaigns') {
result = await campaigns_1.executeCampaignOperations.call(this, i);
}
else if (resource === 'chats') {
result = await chats_1.executeChatOperations.call(this, i);
}
else if (resource === 'chat-contacts') {
result = await chatContacts_1.executeChatContactOperations.call(this, i);
}
else if (resource === 'chat-messages') {
result = await chatMessages_1.executeChatMessageOperations.call(this, i);
}
else if (resource === 'chat-files') {
result = await chatFiles_1.executeChatFileOperations.call(this, i);
}
else if (resource === 'outbound-messages') {
result = await outboundMessages_1.executeOutboundMessageOperations.call(this, i);
}
else if (resource === 'outbound-files') {
result = await outboundFiles_1.executeOutboundFileOperations.call(this, i);
}
else if (resource === 'webhooks') {
result = await webhooks_1.executeWebhookOperations.call(this, i);
}
else if (resource === 'numbers') {
result = await numbers_1.executeNumberOperations.call(this, i);
}
else if (resource === 'other') {
result = await other_1.executeOtherOperations.call(this, i);
}
returnData.push({ json: result });
}
catch (error) {
if (this.continueOnFail()) {
returnData.push({ json: { error: error.message } });
continue;
}
throw error;
}
}
return [returnData];
}
}
exports.WaliChat = WaliChat;