n8n-nodes-instantly
Version:
n8n community node for Instantly API v2
121 lines • 4.66 kB
JavaScript
;
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