UNPKG

n8n-nodes-instantly

Version:
121 lines 4.66 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.InstantlyApi = void 0; const generic_functions_1 = require("../generic.functions"); const OperationRouter_1 = require("./operations/OperationRouter"); // Import parameter definitions const AccountParameters_1 = require("./parameters/AccountParameters"); const CampaignParameters_1 = require("./parameters/CampaignParameters"); const LeadParameters_1 = require("./parameters/LeadParameters"); const AnalyticsParameters_1 = require("./parameters/AnalyticsParameters"); /** * List search methods for resource locators */ async function getCampaigns() { const campaigns = await generic_functions_1.instantlyApiRequest.call(this, 'GET', '/api/v2/campaigns'); return { results: campaigns.items?.map((campaign) => ({ name: campaign.name, value: campaign.id, })) || [], }; } async function getEmailAccounts() { const accounts = await generic_functions_1.instantlyApiRequest.call(this, 'GET', '/api/v2/accounts'); return { results: accounts.items?.map((account) => ({ name: `${account.first_name} ${account.last_name} (${account.email})`, value: account.email, })) || [], }; } /** * Main Instantly API Node - Refactored for modularity */ class InstantlyApi { constructor() { this.description = { displayName: 'Instantly', name: 'instantly', icon: 'file:instantly.svg', group: ['transform'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Interact with Instantly API', defaults: { name: 'Instantly', }, inputs: ["main" /* NodeConnectionType.Main */], outputs: ["main" /* NodeConnectionType.Main */], credentials: [ { name: 'instantlyApi', required: true, }, ], properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Account', value: 'account', }, { name: 'Analytics', value: 'analytics', }, { name: 'Campaign', value: 'campaign', }, { name: 'Lead', value: 'lead', }, ], default: 'campaign', }, // Import all parameter definitions from modular files ...CampaignParameters_1.campaignParameters, ...LeadParameters_1.leadParameters, ...AccountParameters_1.accountParameters, ...AnalyticsParameters_1.analyticsParameters, ], }; this.methods = { listSearch: { getCampaigns, getEmailAccounts, }, }; } async execute() { const items = this.getInputData(); const returnData = []; for (let i = 0; i < items.length; i++) { try { const resource = this.getNodeParameter('resource', i); const operation = this.getNodeParameter('operation', i); // Route to appropriate operation handler using the modular system const responseData = await OperationRouter_1.OperationRouter.execute(this, i, resource, operation); const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } }); returnData.push(...executionData); } catch (error) { if (this.continueOnFail()) { const executionData = this.helpers.constructExecutionMetaData([{ json: { error: error.message } }], { itemData: { item: i } }); returnData.push(...executionData); continue; } throw error; } } return [returnData]; } } exports.InstantlyApi = InstantlyApi; //# sourceMappingURL=InstantlyApi.node.refactored.js.map