UNPKG

n8n-nodes-mautic-advanced

Version:

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

119 lines (118 loc) 5.42 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.executeRoleOperation = void 0; const n8n_workflow_1 = require("n8n-workflow"); const ApiHelpers_1 = require("../utils/ApiHelpers"); const DataHelpers_1 = require("../utils/DataHelpers"); const GenericFunctions_1 = require("../GenericFunctions"); async function executeRoleOperation(context, operation, i) { let responseData; try { switch (operation) { case 'create': responseData = await createRole(context, i); break; case 'update': responseData = await updateRole(context, i); break; case 'get': responseData = await getRole(context, i); break; case 'getAll': responseData = await getAllRoles(context, i); break; case 'delete': responseData = await deleteRole(context, i); break; default: throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Operation '${operation}' is not supported for Role resource.`, { itemIndex: i }); } return context.helpers.returnJsonArray((0, DataHelpers_1.wrapSingleItem)(responseData)); } catch (error) { return (0, ApiHelpers_1.handleApiError)(context, error, operation, 'Role'); } } exports.executeRoleOperation = executeRoleOperation; async function createRole(context, itemIndex) { const name = (0, ApiHelpers_1.getRequiredParam)(context, 'name', itemIndex); const body = { name }; const additionalFields = (0, ApiHelpers_1.getOptionalParam)(context, 'additionalFields', itemIndex, {}); const { description, isAdmin, isPublished, rawPermissions, ...rest } = additionalFields; if (description) body.description = description; if (isAdmin !== undefined) body.isAdmin = isAdmin; if (isPublished !== undefined) body.isPublished = isPublished; if (rawPermissions) { const parsedPermissions = (0, GenericFunctions_1.validateJSON)(rawPermissions); if (parsedPermissions !== undefined) { body.rawPermissions = parsedPermissions; } } Object.assign(body, rest); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', '/roles/new', body); const result = response.role ?? response; return (0, DataHelpers_1.convertNumericStrings)(result); } async function updateRole(context, itemIndex) { const roleId = (0, ApiHelpers_1.getRequiredParam)(context, 'roleId', itemIndex); const body = {}; const updateFields = (0, ApiHelpers_1.getOptionalParam)(context, 'updateFields', itemIndex, {}); const { name, description, isAdmin, isPublished, rawPermissions, ...rest } = updateFields; if (name) body.name = name; if (description) body.description = description; if (isAdmin !== undefined) body.isAdmin = isAdmin; if (isPublished !== undefined) body.isPublished = isPublished; if (rawPermissions) { const parsedPermissions = (0, GenericFunctions_1.validateJSON)(rawPermissions); if (parsedPermissions !== undefined) { body.rawPermissions = parsedPermissions; } } Object.assign(body, rest); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'PATCH', `/roles/${roleId}/edit`, body); const result = response.role ?? response; return (0, DataHelpers_1.convertNumericStrings)(result); } async function getRole(context, itemIndex) { const roleId = (0, ApiHelpers_1.getRequiredParam)(context, 'roleId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', `/roles/${roleId}`); const result = response.role ?? response; return (0, DataHelpers_1.convertNumericStrings)(result); } async function getAllRoles(context, itemIndex) { const returnAll = (0, ApiHelpers_1.getOptionalParam)(context, 'returnAll', itemIndex, false); const additionalFields = (0, ApiHelpers_1.getOptionalParam)(context, 'additionalFields', itemIndex, {}); const qs = (0, DataHelpers_1.buildQueryFromOptions)(additionalFields); if (!qs.orderBy) qs.orderBy = 'id'; if (!qs.orderByDir) qs.orderByDir = 'asc'; let responseData; if (returnAll) { const limit = (0, ApiHelpers_1.getOptionalParam)(context, 'limit', itemIndex, undefined); responseData = await (0, ApiHelpers_1.makePaginatedRequest)(context, 'roles', 'GET', '/roles', {}, qs, limit); } else { const limit = (0, ApiHelpers_1.getRequiredParam)(context, 'limit', itemIndex); qs.limit = limit; const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', '/roles', {}, qs); const rolesContainer = response.roles ?? []; responseData = Array.isArray(rolesContainer) ? rolesContainer : Object.values(rolesContainer); } return (0, DataHelpers_1.convertNumericStrings)(responseData); } async function deleteRole(context, itemIndex) { const roleId = (0, ApiHelpers_1.getRequiredParam)(context, 'roleId', itemIndex); const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'DELETE', `/roles/${roleId}/delete`); const result = response.role ?? response; return (0, DataHelpers_1.convertNumericStrings)(result); }