n8n-nodes-arubacentral
Version:
n8n community node for Aruba Central API integration with comprehensive monitoring, configuration, and management capabilities
75 lines (64 loc) • 2.21 kB
text/typescript
import { IExecuteFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow';
import { apiRequest } from '../../../../helpers/apiRequest';
import { logger } from '../../../../helpers/logger';
import { handleApiError } from '../../../../helpers/errorHandler';
import { handlePagination } from '../../../../helpers/pagination';
/**
* Retrieves a list of firmware versions for a device
* GET /firmware/v1/compliance
*
* @param this The n8n execution context
* @returns List of firmware versions
*/
export async function getVersions(this: IExecuteFunctions): Promise<INodeExecutionData[]> {
try {
// Get parameters
const returnAll = this.getNodeParameter('returnAll', 0) as boolean;
const limit = returnAll ? 0 : (this.getNodeParameter('limit', 0) as number);
const deviceType = this.getNodeParameter('deviceType', 0) as string;
const additionalFields = this.getNodeParameter('additionalFields', 0, {}) as IDataObject;
// Construct request options
const qs: IDataObject = {
device_type: deviceType,
};
// Add optional parameters
if (additionalFields.swarm_id) {
qs.swarm_id = additionalFields.swarm_id;
}
if (additionalFields.serial) {
qs.serial = additionalFields.serial;
}
if (additionalFields.group) {
qs.group = additionalFields.group;
}
// Use the proper endpoint from the firmware.json
const endpoint = '/firmware/v1/compliance';
// Handle pagination properly
if (returnAll) {
return await handlePagination.call(
this,
endpoint,
'GET',
{},
qs,
{ path: ['data'], fallbackPaths: [['firmware_compliance_versions']] },
returnAll,
limit,
);
}
// Direct request if not using pagination
const responseData = await apiRequest.call(
this,
'GET',
endpoint,
{}, // body
qs,
);
// Format the response properly
const result = responseData.data || responseData.firmware_compliance_versions || responseData;
return Array.isArray(result) ? result.map((item) => ({ json: item })) : [{ json: result }];
} catch (error) {
logger.error('firmware:version:getVersions:error', { message: error.message });
return handleApiError.call(this, error, 'Failed to retrieve firmware versions');
}
}