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
JavaScript
;
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);
}