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