n8n-nodes-arubaclearpass
Version:
n8n community node for Aruba ClearPass API integration with comprehensive identity, policy, and enforcement profile management
410 lines (409 loc) • 15.7 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.listDevices = listDevices;
exports.getDevice = getDevice;
exports.getDeviceByMac = getDeviceByMac;
exports.createDevice = createDevice;
exports.updateDevice = updateDevice;
exports.updateDeviceByMac = updateDeviceByMac;
exports.replaceDevice = replaceDevice;
exports.replaceDeviceByMac = replaceDeviceByMac;
exports.deleteDevice = deleteDevice;
exports.deleteDeviceByMac = deleteDeviceByMac;
// methods/Identities/Device.methods.ts
const n8n_workflow_1 = require("n8n-workflow");
const apiRequest_1 = require("../../helpers/apiRequest");
const responseFormatter_1 = require("../../helpers/responseFormatter");
/**
* List all device accounts
*/
async function listDevices() {
try {
const returnAll = this.getNodeParameter('returnAll', 0);
const filters = this.getNodeParameter('filters', 0, {});
const endpoint = '/device';
let responseData;
if (returnAll) {
responseData = await apiRequest_1.apiRequestAllItems.call(this, 'GET', endpoint, {}, filters);
}
else {
const limit = this.getNodeParameter('limit', 0);
if (!filters.limit) {
filters.limit = limit;
}
responseData = await apiRequest_1.apiRequest.call(this, 'GET', endpoint, {}, filters);
}
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
const errorObject = {};
if (error instanceof Error) {
errorObject.message = error.message;
if (error.stack) {
errorObject.stackTrace = error.stack;
}
}
else {
errorObject.message = 'Unknown error in listDevices';
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject);
}
}
/**
* Get a device account by ID
*/
async function getDevice() {
try {
const deviceId = this.getNodeParameter('deviceId', 0);
const endpoint = `/device/${deviceId}`;
const responseData = await apiRequest_1.apiRequest.call(this, 'GET', endpoint);
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
const errorObject = {};
if (error instanceof Error) {
errorObject.message = error.message;
if (error.stack) {
errorObject.stackTrace = error.stack;
}
}
else {
errorObject.message = 'Unknown error in getDevice';
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject);
}
}
/**
* Get a device account by MAC address
*/
async function getDeviceByMac() {
try {
const macAddress = this.getNodeParameter('macAddress', 0);
const endpoint = `/device/mac/${macAddress}`;
const responseData = await apiRequest_1.apiRequest.call(this, 'GET', endpoint);
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
const errorObject = {};
if (error instanceof Error) {
errorObject.message = error.message;
if (error.stack) {
errorObject.stackTrace = error.stack;
}
}
else {
errorObject.message = 'Unknown error in getDeviceByMac';
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject);
}
}
/**
* Create a new device account
*/
async function createDevice() {
try {
const body = {};
// Add required fields
body.mac = this.getNodeParameter('mac', 0);
body.role_id = this.getNodeParameter('role_id', 0);
// Add optional fields
const additionalFields = this.getNodeParameter('additionalFields', 0, {});
Object.assign(body, additionalFields);
// Add custom fields if provided
if (additionalFields.customFields) {
try {
const customFields = JSON.parse(additionalFields.customFields);
delete additionalFields.customFields; // Remove from body as we'll add the parsed fields directly
// Merge custom fields with the body
Object.entries(customFields).forEach(([key, value]) => {
body[key] = value;
});
}
catch (parseError) {
throw new Error(`Invalid JSON in customFields: ${parseError.message}`);
}
}
// Get options for query parameters
const options = this.getNodeParameter('options', 0, {});
const queryParams = {};
if (options.changeOfAuthorization !== undefined) {
queryParams.change_of_authorization = options.changeOfAuthorization;
}
const endpoint = '/device';
const responseData = await apiRequest_1.apiRequest.call(this, 'POST', endpoint, body, queryParams);
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
const errorObject = {};
if (error instanceof Error) {
errorObject.message = error.message;
if (error.stack) {
errorObject.stackTrace = error.stack;
}
}
else {
errorObject.message = 'Unknown error in createDevice';
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject);
}
}
/**
* Update a device account by ID
*/
async function updateDevice() {
try {
const deviceId = this.getNodeParameter('deviceId', 0);
const updateFields = this.getNodeParameter('updateFields', 0, {});
if (!Object.keys(updateFields).length) {
throw new Error('Please specify at least one field to update');
}
const body = { ...updateFields };
// Handle custom fields if provided
if (updateFields.customFields) {
try {
const customFields = JSON.parse(updateFields.customFields);
delete body.customFields; // Remove from body as we'll add the parsed fields directly
// Merge custom fields with the body
Object.entries(customFields).forEach(([key, value]) => {
body[key] = value;
});
}
catch (parseError) {
throw new Error(`Invalid JSON in customFields: ${parseError.message}`);
}
}
// Get options for query parameters
const options = this.getNodeParameter('options', 0, {});
const queryParams = {};
if (options.changeOfAuthorization !== undefined) {
queryParams.change_of_authorization = options.changeOfAuthorization;
}
const endpoint = `/device/${deviceId}`;
const responseData = await apiRequest_1.apiRequest.call(this, 'PATCH', endpoint, body, queryParams);
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
const errorObject = {};
if (error instanceof Error) {
errorObject.message = error.message;
if (error.stack) {
errorObject.stackTrace = error.stack;
}
}
else {
errorObject.message = 'Unknown error in updateDevice';
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject);
}
}
/**
* Update a device account by MAC address
*/
async function updateDeviceByMac() {
try {
const macAddress = this.getNodeParameter('macAddress', 0);
const updateFields = this.getNodeParameter('updateFields', 0, {});
if (!Object.keys(updateFields).length) {
throw new Error('Please specify at least one field to update');
}
const body = { ...updateFields };
// Handle custom fields if provided
if (updateFields.customFields) {
try {
const customFields = JSON.parse(updateFields.customFields);
delete body.customFields; // Remove from body as we'll add the parsed fields directly
// Merge custom fields with the body
Object.entries(customFields).forEach(([key, value]) => {
body[key] = value;
});
}
catch (parseError) {
throw new Error(`Invalid JSON in customFields: ${parseError.message}`);
}
}
// Get options for query parameters
const options = this.getNodeParameter('options', 0, {});
const queryParams = {};
if (options.changeOfAuthorization !== undefined) {
queryParams.change_of_authorization = options.changeOfAuthorization;
}
const endpoint = `/device/mac/${macAddress}`;
const responseData = await apiRequest_1.apiRequest.call(this, 'PATCH', endpoint, body, queryParams);
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
const errorObject = {};
if (error instanceof Error) {
errorObject.message = error.message;
if (error.stack) {
errorObject.stackTrace = error.stack;
}
}
else {
errorObject.message = 'Unknown error in updateDeviceByMac';
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject);
}
}
/**
* Replace a device account by ID
*/
async function replaceDevice() {
try {
const deviceId = this.getNodeParameter('deviceId', 0);
const body = {};
// Add required fields
body.mac = this.getNodeParameter('mac', 0);
body.role_id = this.getNodeParameter('role_id', 0);
// Add optional fields
const additionalFields = this.getNodeParameter('additionalFields', 0, {});
Object.assign(body, additionalFields);
// Add custom fields if provided
if (additionalFields.customFields) {
try {
const customFields = JSON.parse(additionalFields.customFields);
delete body.customFields; // Remove from body as we'll add the parsed fields directly
// Merge custom fields with the body
Object.entries(customFields).forEach(([key, value]) => {
body[key] = value;
});
}
catch (parseError) {
throw new Error(`Invalid JSON in customFields: ${parseError.message}`);
}
}
// Get options for query parameters
const options = this.getNodeParameter('options', 0, {});
const queryParams = {};
if (options.changeOfAuthorization !== undefined) {
queryParams.change_of_authorization = options.changeOfAuthorization;
}
const endpoint = `/device/${deviceId}`;
const responseData = await apiRequest_1.apiRequest.call(this, 'PUT', endpoint, body, queryParams);
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
const errorObject = {};
if (error instanceof Error) {
errorObject.message = error.message;
if (error.stack) {
errorObject.stackTrace = error.stack;
}
}
else {
errorObject.message = 'Unknown error in replaceDevice';
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject);
}
}
/**
* Replace a device account by MAC address
*/
async function replaceDeviceByMac() {
try {
const macAddress = this.getNodeParameter('macAddress', 0);
const body = {};
// Add required fields
body.mac = this.getNodeParameter('mac', 0);
body.role_id = this.getNodeParameter('role_id', 0);
// Add optional fields
const additionalFields = this.getNodeParameter('additionalFields', 0, {});
Object.assign(body, additionalFields);
// Add custom fields if provided
if (additionalFields.customFields) {
try {
const customFields = JSON.parse(additionalFields.customFields);
delete body.customFields; // Remove from body as we'll add the parsed fields directly
// Merge custom fields with the body
Object.entries(customFields).forEach(([key, value]) => {
body[key] = value;
});
}
catch (parseError) {
throw new Error(`Invalid JSON in customFields: ${parseError.message}`);
}
}
// Get options for query parameters
const options = this.getNodeParameter('options', 0, {});
const queryParams = {};
if (options.changeOfAuthorization !== undefined) {
queryParams.change_of_authorization = options.changeOfAuthorization;
}
const endpoint = `/device/mac/${macAddress}`;
const responseData = await apiRequest_1.apiRequest.call(this, 'PUT', endpoint, body, queryParams);
return responseFormatter_1.formatResponse.call(this, responseData);
}
catch (error) {
const errorObject = {};
if (error instanceof Error) {
errorObject.message = error.message;
if (error.stack) {
errorObject.stackTrace = error.stack;
}
}
else {
errorObject.message = 'Unknown error in replaceDeviceByMac';
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject);
}
}
/**
* Delete a device account by ID
*/
async function deleteDevice() {
try {
const deviceId = this.getNodeParameter('deviceId', 0);
// Get options for query parameters
const options = this.getNodeParameter('options', 0, {});
const queryParams = {};
if (options.changeOfAuthorization !== undefined) {
queryParams.change_of_authorization = options.changeOfAuthorization;
}
const endpoint = `/device/${deviceId}`;
await apiRequest_1.apiRequest.call(this, 'DELETE', endpoint, {}, queryParams);
return [{ json: { success: true } }];
}
catch (error) {
const errorObject = {};
if (error instanceof Error) {
errorObject.message = error.message;
if (error.stack) {
errorObject.stackTrace = error.stack;
}
}
else {
errorObject.message = 'Unknown error in deleteDevice';
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject);
}
}
/**
* Delete a device account by MAC address
*/
async function deleteDeviceByMac() {
try {
const macAddress = this.getNodeParameter('macAddress', 0);
// Get options for query parameters
const options = this.getNodeParameter('options', 0, {});
const queryParams = {};
if (options.changeOfAuthorization !== undefined) {
queryParams.change_of_authorization = options.changeOfAuthorization;
}
const endpoint = `/device/mac/${macAddress}`;
await apiRequest_1.apiRequest.call(this, 'DELETE', endpoint, {}, queryParams);
return [{ json: { success: true } }];
}
catch (error) {
const errorObject = {};
if (error instanceof Error) {
errorObject.message = error.message;
if (error.stack) {
errorObject.stackTrace = error.stack;
}
}
else {
errorObject.message = 'Unknown error in deleteDeviceByMac';
}
throw new n8n_workflow_1.NodeApiError(this.getNode(), errorObject);
}
}