n8n-nodes-mautic-advanced
Version:
Enhanced n8n node for Mautic with comprehensive API coverage including tags, campaigns, categories, and advanced contact management
164 lines (163 loc) • 6.92 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeUserOperation = void 0;
const n8n_workflow_1 = require("n8n-workflow");
const ApiHelpers_1 = require("../utils/ApiHelpers");
const DataHelpers_1 = require("../utils/DataHelpers");
async function executeUserOperation(context, operation, i) {
let responseData;
try {
switch (operation) {
case 'create':
responseData = await createUser(context, i);
break;
case 'update':
responseData = await updateUser(context, i);
break;
case 'get':
responseData = await getUser(context, i);
break;
case 'getAll':
responseData = await getAllUsers(context, i);
break;
case 'delete':
responseData = await deleteUser(context, i);
break;
default:
throw new n8n_workflow_1.NodeOperationError(context.getNode(), `Operation '${operation}' is not supported for User resource.`, { itemIndex: i });
}
return context.helpers.returnJsonArray((0, DataHelpers_1.wrapSingleItem)(responseData));
}
catch (error) {
return (0, ApiHelpers_1.handleApiError)(context, error, operation, 'User');
}
}
exports.executeUserOperation = executeUserOperation;
async function createUser(context, itemIndex) {
const username = (0, ApiHelpers_1.getRequiredParam)(context, 'username', itemIndex);
const email = (0, ApiHelpers_1.getRequiredParam)(context, 'email', itemIndex);
const body = {
username,
email,
};
const firstName = (0, ApiHelpers_1.getOptionalParam)(context, 'firstName', itemIndex, undefined);
const lastName = (0, ApiHelpers_1.getOptionalParam)(context, 'lastName', itemIndex, undefined);
if (firstName)
body.firstName = firstName;
if (lastName)
body.lastName = lastName;
// Password
const plainPassword = (0, ApiHelpers_1.getOptionalParam)(context, 'plainPassword', itemIndex, undefined);
if (plainPassword && plainPassword.passwordValues) {
const { passwordValues } = plainPassword;
const password = passwordValues.password;
const confirm = passwordValues.confirm;
if (password || confirm) {
body.plainPassword = {
password,
confirm,
};
}
}
const role = (0, ApiHelpers_1.getOptionalParam)(context, 'role', itemIndex, undefined);
if (role !== undefined) {
body.role = role;
}
const additionalFields = (0, ApiHelpers_1.getOptionalParam)(context, 'additionalFields', itemIndex, {});
const { isPublished, position, timezone, locale, onlineStatus, signature, ...rest } = additionalFields;
if (isPublished !== undefined)
body.isPublished = isPublished;
if (position)
body.position = position;
if (timezone)
body.timezone = timezone;
if (locale)
body.locale = locale;
if (onlineStatus)
body.onlineStatus = onlineStatus;
if (signature)
body.signature = signature;
Object.assign(body, rest);
const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'POST', '/users/new', body);
const result = response.user ?? response;
return (0, DataHelpers_1.convertNumericStrings)(result);
}
async function updateUser(context, itemIndex) {
const userId = (0, ApiHelpers_1.getRequiredParam)(context, 'userId', itemIndex);
const body = {};
const updateFields = (0, ApiHelpers_1.getOptionalParam)(context, 'updateFields', itemIndex, {});
const { username, email, firstName, lastName, role, plainPassword, isPublished, position, timezone, locale, onlineStatus, signature, ...rest } = updateFields;
if (username)
body.username = username;
if (email)
body.email = email;
if (firstName)
body.firstName = firstName;
if (lastName)
body.lastName = lastName;
if (role !== undefined)
body.role = role;
if (isPublished !== undefined)
body.isPublished = isPublished;
if (position)
body.position = position;
if (timezone)
body.timezone = timezone;
if (locale)
body.locale = locale;
if (onlineStatus)
body.onlineStatus = onlineStatus;
if (signature)
body.signature = signature;
if (plainPassword && plainPassword.passwordValues) {
const { passwordValues } = plainPassword;
const password = passwordValues.password;
const confirm = passwordValues.confirm;
if (password || confirm) {
body.plainPassword = {
password,
confirm,
};
}
}
Object.assign(body, rest);
const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'PATCH', `/users/${userId}/edit`, body);
const result = response.user ?? response;
return (0, DataHelpers_1.convertNumericStrings)(result);
}
async function getUser(context, itemIndex) {
const userId = (0, ApiHelpers_1.getRequiredParam)(context, 'userId', itemIndex);
const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', `/users/${userId}`);
const result = response.user ?? response;
return (0, DataHelpers_1.convertNumericStrings)(result);
}
async function getAllUsers(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, 'users', 'GET', '/users', {}, qs, limit);
}
else {
const limit = (0, ApiHelpers_1.getRequiredParam)(context, 'limit', itemIndex);
qs.limit = limit;
const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'GET', '/users', {}, qs);
const usersContainer = response.users ?? [];
responseData = Array.isArray(usersContainer)
? usersContainer
: Object.values(usersContainer);
}
return (0, DataHelpers_1.convertNumericStrings)(responseData);
}
async function deleteUser(context, itemIndex) {
const userId = (0, ApiHelpers_1.getRequiredParam)(context, 'userId', itemIndex);
const response = await (0, ApiHelpers_1.makeApiRequest)(context, 'DELETE', `/users/${userId}/delete`);
const result = response.user ?? response;
return (0, DataHelpers_1.convertNumericStrings)(result);
}