UNPKG

n8n-nodes-mautic-advanced

Version:

Enhanced n8n node for Mautic with comprehensive API coverage including tags, campaigns, categories, and advanced contact management

106 lines (105 loc) 5.49 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeCampaignOperation = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ApiHelpers_1 = require("../utils/ApiHelpers"); const DataHelpers_1 = require("../utils/DataHelpers"); async function executeCampaignOperation(context, operation, i) { let responseData; try { switch (operation) { case 'create': responseData = await createCampaign(context, i); break; case 'update': responseData = await updateCampaign(context, i); break; case 'clone': responseData = await cloneCampaign(context, i); break; case 'get': responseData = await getCampaign(context, i); break; case 'getAll': responseData = await getAllCampaigns(context, i); break; case 'getContacts': responseData = await getCampaignContacts(context, i); break; case 'delete': responseData = await deleteCampaign(context, i); break; default: throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Operation '${operation}' is not supported for Campaign resource.`, { itemIndex: i }); } return context.helpers.returnJsonArray((0, DataHelpers_1.wrapSingleItem)(responseData)); } catch (error) { return (0, ApiHelpers_1.handleApiError)(context, error, operation, 'Campaign'); } } exports.executeCampaignOperation = executeCampaignOperation; async function createCampaign(context, itemIndex) { const name = (0, ApiHelpers_1.getRequiredParam)(context, 'name', itemIndex); const additionalFields = (0, ApiHelpers_1.getOptionalParam)(context, 'additionalFields', itemIndex, {}); const body = { name, ...additionalFields }; const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', '/campaigns/new', body); return response.campaign; } async function updateCampaign(context, itemIndex) { const campaignId = (0, ApiHelpers_1.getRequiredParam)(context, 'campaignId', itemIndex); const createIfNotFound = (0, ApiHelpers_1.getOptionalParam)(context, 'createIfNotFound', itemIndex, false); const updateFields = (0, ApiHelpers_1.getOptionalParam)(context, 'updateFields', itemIndex, {}); const body = { ...updateFields }; const method = createIfNotFound ? 'PUT' : 'PATCH'; const response = await (0, ApiHelpers_1.makeApiRequest)(context, method, `/campaigns/${campaignId}/edit`, body); return response.campaign; } async function cloneCampaign(context, itemIndex) { const campaignId = (0, ApiHelpers_1.getRequiredParam)(context, 'campaignId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', `/campaigns/clone/${campaignId}`); return response.campaign; } async function getCampaign(context, itemIndex) { const campaignId = (0, ApiHelpers_1.getRequiredParam)(context, 'campaignId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', `/campaigns/${campaignId}`); return (0, DataHelpers_1.convertNumericStrings)(response.campaign); } async function getAllCampaigns(context, itemIndex) { const returnAll = (0, ApiHelpers_1.getOptionalParam)(context, 'returnAll', itemIndex, false); const options = (0, ApiHelpers_1.getOptionalParam)(context, 'options', itemIndex, {}); const qs = (0, DataHelpers_1.buildQueryFromOptions)(options); if (!qs.orderBy) qs.orderBy = 'id'; if (!qs.orderByDir) qs.orderByDir = 'asc'; if (returnAll) { const result = await (0, ApiHelpers_1.makePaginatedRequest)(context, 'campaigns', 'GET', '/campaigns', {}, qs); return (0, DataHelpers_1.convertNumericStrings)(result); } else { qs.limit = (0, ApiHelpers_1.getOptionalParam)(context, 'limit', itemIndex, 30); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', '/campaigns', {}, qs); return (0, DataHelpers_1.convertNumericStrings)(Object.values(response.campaigns || {})); } } async function getCampaignContacts(context, itemIndex) { const campaignId = (0, ApiHelpers_1.getRequiredParam)(context, 'campaignId', itemIndex); const returnAll = (0, ApiHelpers_1.getOptionalParam)(context, 'returnAll', itemIndex, false); const options = (0, ApiHelpers_1.getOptionalParam)(context, 'options', itemIndex, {}); const qs = (0, DataHelpers_1.buildQueryFromOptions)(options); if (returnAll) { const result = await (0, ApiHelpers_1.makePaginatedRequest)(context, 'contacts', 'GET', `/campaigns/${campaignId}/contacts`, {}, qs); return (0, DataHelpers_1.convertNumericStrings)(result); } else { qs.limit = (0, ApiHelpers_1.getOptionalParam)(context, 'limit', itemIndex, 30); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', `/campaigns/${campaignId}/contacts`, {}, qs); return (0, DataHelpers_1.convertNumericStrings)(response.contacts); } } async function deleteCampaign(context, itemIndex) { const campaignId = (0, ApiHelpers_1.getRequiredParam)(context, 'campaignId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'DELETE', `/campaigns/${campaignId}/delete`); return response.campaign; }