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