n8n-nodes-arubacentral
Version:
n8n community node for Aruba Central API integration with comprehensive monitoring, configuration, and management capabilities
152 lines (130 loc) • 4.71 kB
text/typescript
// ArubaCentral/methods/configuration/ap/dot11aRadio.methods.ts
import { IExecuteFunctions, INodeExecutionData, IDataObject } from 'n8n-workflow';
import { apiRequest } from '../../../helpers/apiRequest';
import { formatResponse } from '../../../helpers/responseFormatter';
import { handlePagination } from '../../../helpers/pagination';
import { RadioProfile } from './apConfiguration.types';
export async function getAllDot11aRadioProfiles(
this: IExecuteFunctions,
): Promise<INodeExecutionData[]> {
try {
// Get parameters
const groupNameOrGuidOrSerial = this.getNodeParameter('groupNameOrGuidOrSerial', 0) as string;
const returnAll = this.getNodeParameter('returnAll', 0, false) as boolean;
let limit: number | undefined;
if (!returnAll) {
limit = this.getNodeParameter('limit', 0, 50) as number;
}
// Build the endpoint
const endpoint = `/configuration/v1/dot11a_radio_profiles/${groupNameOrGuidOrSerial}`;
// Log the request
console.log('Getting all Dot11a radio profiles with parameters:', {
groupNameOrGuidOrSerial,
returnAll,
limit,
});
if (returnAll || limit) {
// Use pagination helper with a batch size of 100
return await handlePagination.call(
this,
endpoint,
'GET',
{},
{},
{
path: ['dot11a_list'],
fallbackPaths: [['data', 'dot11a_list']],
},
returnAll,
limit,
100, // Conservative batch size for dot11a profiles
);
} else {
// Make a single API call without pagination
const response = await apiRequest.call(this, 'GET', endpoint, {}, {});
console.log('Received Dot11a radio profiles');
return formatResponse.call(this, response);
}
} catch (error) {
console.log('ERROR in getAllDot11aRadioProfiles:', error);
throw error;
}
}
export async function getDot11aRadioProfile(
this: IExecuteFunctions,
): Promise<INodeExecutionData[]> {
try {
// Get parameters
const groupNameOrGuidOrSerial = this.getNodeParameter('groupNameOrGuidOrSerial', 0) as string;
const profileName = this.getNodeParameter('profileName', 0) as string;
// Log the request
console.log('Getting Dot11a radio profile with parameters:', {
groupNameOrGuidOrSerial,
profileName,
});
// Build the endpoint
const endpoint = `/configuration/v1/dot11a_radio_profile/${groupNameOrGuidOrSerial}/${profileName}`;
// Make API call
const response = await apiRequest.call(this, 'GET', endpoint, {}, {});
console.log('Received Dot11a radio profile');
return formatResponse.call(this, response);
} catch (error) {
console.log('ERROR in getDot11aRadioProfile:', error);
throw error;
}
}
export async function updateDot11aRadioProfile(
this: IExecuteFunctions,
): Promise<INodeExecutionData[]> {
try {
// Get parameters
const groupNameOrGuidOrSerial = this.getNodeParameter('groupNameOrGuidOrSerial', 0) as string;
const profileName = this.getNodeParameter('profileName', 0) as string;
const radioProfileJson = this.getNodeParameter('radioProfile', 0) as string;
// Parse the Radio Profile JSON
let radioProfile: RadioProfile;
try {
radioProfile = JSON.parse(radioProfileJson);
} catch (parseError) {
throw new Error(`Invalid JSON format for radio profile: ${parseError.message}`);
}
// Log the request
console.log('Updating Dot11a radio profile:', {
groupNameOrGuidOrSerial,
profileName,
radioProfile,
});
// Build the endpoint
const endpoint = `/configuration/v1/dot11a_radio_profile/${groupNameOrGuidOrSerial}/${profileName}`;
// Make API call
const response = await apiRequest.call(this, 'POST', endpoint, radioProfile as IDataObject, {});
console.log('Dot11a radio profile updated successfully');
return formatResponse.call(this, response);
} catch (error) {
console.log('ERROR in updateDot11aRadioProfile:', error);
throw error;
}
}
export async function deleteDot11aRadioProfile(
this: IExecuteFunctions,
): Promise<INodeExecutionData[]> {
try {
// Get parameters
const groupNameOrGuidOrSerial = this.getNodeParameter('groupNameOrGuidOrSerial', 0) as string;
const profileName = this.getNodeParameter('profileName', 0) as string;
// Log the request
console.log('Deleting Dot11a radio profile with parameters:', {
groupNameOrGuidOrSerial,
profileName,
});
// Build the endpoint
const endpoint = `/configuration/v1/dot11a_radio_profile/${groupNameOrGuidOrSerial}/${profileName}`;
// Make API call
const response = await apiRequest.call(this, 'DELETE', endpoint, {}, {});
console.log('Dot11a radio profile deleted successfully');
return formatResponse.call(this, response);
} catch (error) {
console.log('ERROR in deleteDot11aRadioProfile:', error);
throw error;
}
}