UNPKG

n8n-nodes-mautic-advanced

Version:

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

107 lines (106 loc) 5.74 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeSegmentOperation = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ApiHelpers_1 = require("../utils/ApiHelpers"); const DataHelpers_1 = require("../utils/DataHelpers"); async function executeSegmentOperation(context, operation, i) { let responseData; try { switch (operation) { case 'create': responseData = await createSegment(context, i); break; case 'update': responseData = await updateSegment(context, i); break; case 'get': responseData = await getSegment(context, i); break; case 'getAll': responseData = await getAllSegments(context, i); break; case 'delete': responseData = await deleteSegment(context, i); break; case 'addContact': responseData = await addContactToSegment(context, i); break; case 'removeContact': responseData = await removeContactFromSegment(context, i); break; case 'addContacts': responseData = await addContactsToSegment(context, i); break; default: throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Operation '${operation}' is not supported for Segment resource.`, { itemIndex: i }); } return context.helpers.returnJsonArray((0, DataHelpers_1.wrapSingleItem)(responseData)); } catch (error) { return (0, ApiHelpers_1.handleApiError)(context, error, operation, 'Segment'); } } exports.executeSegmentOperation = executeSegmentOperation; async function createSegment(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', '/segments/new', body); return response.list; } async function updateSegment(context, itemIndex) { const segmentId = (0, ApiHelpers_1.getRequiredParam)(context, 'segmentId', itemIndex); const createIfNotFound = (0, ApiHelpers_1.getOptionalParam)(context, 'createIfNotFound', itemIndex, false); const name = (0, ApiHelpers_1.getOptionalParam)(context, 'name', itemIndex, ''); const additionalFields = (0, ApiHelpers_1.getOptionalParam)(context, 'additionalFields', itemIndex, {}); const body = { ...additionalFields }; if (name) body.name = name; const method = createIfNotFound ? 'PUT' : 'PATCH'; const response = await (0, ApiHelpers_1.makeApiRequest)(context, method, `/segments/${segmentId}/edit`, body); return response.list; } async function getSegment(context, itemIndex) { const segmentId = (0, ApiHelpers_1.getRequiredParam)(context, 'segmentId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', `/segments/${segmentId}`); return (0, DataHelpers_1.convertNumericStrings)(response.list); } async function getAllSegments(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 (returnAll) { const result = await (0, ApiHelpers_1.makePaginatedRequest)(context, 'lists', 'GET', '/segments', {}, qs); return (0, DataHelpers_1.convertNumericStrings)(result); } else { const limit = (0, ApiHelpers_1.getOptionalParam)(context, 'limit', itemIndex, 30); qs.limit = limit; const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', '/segments', {}, qs); const data = response.lists ? Object.values(response.lists) : []; return (0, DataHelpers_1.convertNumericStrings)(data); } } async function deleteSegment(context, itemIndex) { const segmentId = (0, ApiHelpers_1.getRequiredParam)(context, 'segmentId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'DELETE', `/segments/${segmentId}/delete`); return response.list; } async function addContactToSegment(context, itemIndex) { const segmentId = (0, ApiHelpers_1.getRequiredParam)(context, 'segmentId', itemIndex); const contactId = (0, ApiHelpers_1.getRequiredParam)(context, 'contactId', itemIndex); return await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', `/segments/${segmentId}/contact/${contactId}/add`); } async function removeContactFromSegment(context, itemIndex) { const segmentId = (0, ApiHelpers_1.getRequiredParam)(context, 'segmentId', itemIndex); const contactId = (0, ApiHelpers_1.getRequiredParam)(context, 'contactId', itemIndex); return await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', `/segments/${segmentId}/contact/${contactId}/remove`); } async function addContactsToSegment(context, itemIndex) { const segmentId = (0, ApiHelpers_1.getRequiredParam)(context, 'segmentId', itemIndex); const contactIdsString = (0, ApiHelpers_1.getOptionalParam)(context, 'contactIds', itemIndex, ''); const contactIds = (0, DataHelpers_1.processBatchIds)(contactIdsString, context.getInputData(), 'contactId'); const body = { ids: contactIds.split(',').map((s) => Number(s.trim())) }; return await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', `/segments/${segmentId}/contacts/add`, body); }