UNPKG

n8n-nodes-mautic-advanced

Version:

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

203 lines (202 loc) 8.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeEmailOperation = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ApiHelpers_1 = require("../utils/ApiHelpers"); const DataHelpers_1 = require("../utils/DataHelpers"); async function executeEmailOperation(context, operation, i) { let responseData; try { switch (operation) { case 'create': responseData = await createEmail(context, i); break; case 'update': responseData = await updateEmail(context, i); break; case 'get': responseData = await getEmail(context, i); break; case 'getAll': responseData = await getAllEmails(context, i); break; case 'delete': responseData = await deleteEmail(context, i); break; case 'createReply': responseData = await createReply(context, i); break; default: throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Operation '${operation}' is not supported for Email resource.`, { itemIndex: i }); } return context.helpers.returnJsonArray((0, DataHelpers_1.wrapSingleItem)(responseData)); } catch (error) { return (0, ApiHelpers_1.handleApiError)(context, error, operation, 'Email'); } } exports.executeEmailOperation = executeEmailOperation; async function createEmail(context, itemIndex) { const name = (0, ApiHelpers_1.getRequiredParam)(context, 'name', itemIndex); const additionalFields = (0, ApiHelpers_1.getOptionalParam)(context, 'additionalFields', itemIndex, {}); const body = { name, }; if (additionalFields.subject) { body.subject = additionalFields.subject; } if (additionalFields.customHtml) { body.customHtml = additionalFields.customHtml; } if (additionalFields.plainText) { body.plainText = additionalFields.plainText; } if (additionalFields.emailType) { body.emailType = additionalFields.emailType; } if (additionalFields.fromAddress) { body.fromAddress = additionalFields.fromAddress; } if (additionalFields.fromName) { body.fromName = additionalFields.fromName; } if (additionalFields.replyToAddress) { body.replyToAddress = additionalFields.replyToAddress; } if (additionalFields.bccAddress) { body.bccAddress = additionalFields.bccAddress; } if (additionalFields.isPublished !== undefined) { body.isPublished = additionalFields.isPublished; } if (additionalFields.publishUp) { body.publishUp = additionalFields.publishUp; } if (additionalFields.publishDown) { body.publishDown = additionalFields.publishDown; } if (additionalFields.language) { body.language = additionalFields.language; } if (additionalFields.template) { body.template = additionalFields.template; } if (additionalFields.category) { body.category = additionalFields.category; } if (additionalFields.unsubscribeForm) { body.unsubscribeForm = additionalFields.unsubscribeForm; } if (additionalFields.lists && Array.isArray(additionalFields.lists)) { body.lists = additionalFields.lists; } if (additionalFields.assetAttachments) { if (Array.isArray(additionalFields.assetAttachments)) { body.assetAttachments = additionalFields.assetAttachments; } } if (additionalFields.dynamicContent) { body.dynamicContent = additionalFields.dynamicContent; } const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', '/emails/new', body); return response.email; } async function updateEmail(context, itemIndex) { const emailId = (0, ApiHelpers_1.getRequiredParam)(context, 'emailId', itemIndex); const createIfNotFound = (0, ApiHelpers_1.getOptionalParam)(context, 'createIfNotFound', itemIndex, false); const updateFields = (0, ApiHelpers_1.getOptionalParam)(context, 'updateFields', itemIndex, {}); const body = {}; if (updateFields.name) { body.name = updateFields.name; } if (updateFields.subject !== undefined) { body.subject = updateFields.subject; } if (updateFields.customHtml !== undefined) { body.customHtml = updateFields.customHtml; } if (updateFields.plainText !== undefined) { body.plainText = updateFields.plainText; } if (updateFields.emailType !== undefined) { body.emailType = updateFields.emailType; } if (updateFields.fromAddress !== undefined) { body.fromAddress = updateFields.fromAddress; } if (updateFields.fromName !== undefined) { body.fromName = updateFields.fromName; } if (updateFields.replyToAddress !== undefined) { body.replyToAddress = updateFields.replyToAddress; } if (updateFields.bccAddress !== undefined) { body.bccAddress = updateFields.bccAddress; } if (updateFields.isPublished !== undefined) { body.isPublished = updateFields.isPublished; } if (updateFields.publishUp !== undefined) { body.publishUp = updateFields.publishUp; } if (updateFields.publishDown !== undefined) { body.publishDown = updateFields.publishDown; } if (updateFields.language !== undefined) { body.language = updateFields.language; } if (updateFields.template !== undefined) { body.template = updateFields.template; } if (updateFields.category !== undefined) { body.category = updateFields.category; } if (updateFields.unsubscribeForm !== undefined) { body.unsubscribeForm = updateFields.unsubscribeForm; } if (updateFields.lists !== undefined && Array.isArray(updateFields.lists)) { body.lists = updateFields.lists; } if (updateFields.assetAttachments !== undefined) { if (Array.isArray(updateFields.assetAttachments)) { body.assetAttachments = updateFields.assetAttachments; } } if (updateFields.dynamicContent !== undefined) { body.dynamicContent = updateFields.dynamicContent; } const method = createIfNotFound ? 'PUT' : 'PATCH'; const response = await (0, ApiHelpers_1.makeApiRequest)(context, method, `/emails/${emailId}/edit`, body); return response.email; } async function getEmail(context, itemIndex) { const emailId = (0, ApiHelpers_1.getRequiredParam)(context, 'emailId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', `/emails/${emailId}`); return (0, DataHelpers_1.convertNumericStrings)(response.email); } async function getAllEmails(context, itemIndex) { const returnAll = (0, ApiHelpers_1.getOptionalParam)(context, 'returnAll', itemIndex, false); const limit = (0, ApiHelpers_1.getOptionalParam)(context, 'limit', itemIndex, 50); const options = (0, ApiHelpers_1.getOptionalParam)(context, 'options', itemIndex, {}); const query = (0, DataHelpers_1.buildQueryFromOptions)(options); if (returnAll) { const result = await (0, ApiHelpers_1.makePaginatedRequest)(context, 'emails', 'GET', '/emails', {}, query); return (0, DataHelpers_1.convertNumericStrings)(result); } else { query.limit = limit; const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', '/emails', {}, query); const data = Object.values(response.emails || {}); return (0, DataHelpers_1.convertNumericStrings)(data); } } async function deleteEmail(context, itemIndex) { const emailId = (0, ApiHelpers_1.getRequiredParam)(context, 'emailId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'DELETE', `/emails/${emailId}/delete`); return response.email ?? { success: true }; } async function createReply(context, itemIndex) { const trackingHash = (0, ApiHelpers_1.getRequiredParam)(context, 'trackingHash', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', `/emails/reply/${trackingHash}`); return response; }