n8n-nodes-arubacentral
Version:
n8n community node for Aruba Central API integration with comprehensive monitoring, configuration, and management capabilities
55 lines (47 loc) • 1.86 kB
text/typescript
import { IExecuteFunctions, INodeExecutionData } from 'n8n-workflow';
import { apiRequest } from '../../../../helpers/apiRequest';
import { logger } from '../../../../helpers/logger';
import { handleApiError } from '../../../../helpers/errorHandler';
import { findSiteId } from '../../../../helpers/siteHelpers';
/**
* Get Site Details
*
* GET /central/v2/sites/{site_id}
*
* @param this The n8n execution context
* @returns Formatted API response
*/
export async function getSiteDetails(this: IExecuteFunctions): Promise<INodeExecutionData[]> {
try {
// Get parameters
const lookupBy = this.getNodeParameter('lookupBy', 0, 'id') as string;
let siteId: number;
if (lookupBy === 'name') {
// Lookup by site name
const siteName = this.getNodeParameter('site_name', 0) as string;
logger.debug('monitoring:site:getSiteDetails', `Looking up site ID for name: ${siteName}`);
const foundSiteId = await findSiteId.call(this, siteName);
if (foundSiteId === null) {
throw new Error(`Site not found with name: ${siteName}`);
}
siteId = foundSiteId;
logger.debug(
'monitoring:site:getSiteDetails',
`Found site ID: ${siteId} for name: ${siteName}`,
);
} else {
// Lookup by site ID
siteId = this.getNodeParameter('site_id', 0) as number;
}
logger.debug('monitoring:site:getSiteDetails', `Getting details for site: ${siteId}`);
// Make API request
const endpoint = `/central/v2/sites/${siteId}`;
const responseData = await apiRequest.call(this, 'GET', endpoint);
logger.debug('monitoring:site:getSiteDetails', 'Successfully retrieved site details');
// Return formatted response
return [{ json: responseData }];
} catch (error) {
logger.error('monitoring:site:getSiteDetails:error', { message: error.message });
return handleApiError.call(this, error, 'Failed to get site details');
}
}