UNPKG

n8n-nodes-arubacentral

Version:

n8n community node for Aruba Central API integration with comprehensive monitoring, configuration, and management capabilities

71 lines (70 loc) 3.09 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.listSites = listSites; const logger_1 = require("../../../../helpers/logger"); const errorHandler_1 = require("../../../../helpers/errorHandler"); const pagination_1 = require("../../../../helpers/pagination"); const siteHelpers_1 = require("../../../../helpers/siteHelpers"); /** * List Sites * * GET /central/v2/sites * * @param this The n8n execution context * @returns Formatted API response */ async function listSites() { try { // Get parameters const returnAll = this.getNodeParameter('returnAll', 0, false); const limit = returnAll ? 0 : this.getNodeParameter('limit', 0, 50); const additionalFields = this.getNodeParameter('additionalFields', 0, {}); // Construct query parameters const queryParams = {}; // Add additional fields to query parameters (except site_name - handled by client-side filtering) if (additionalFields.calculate_total !== undefined) { queryParams.calculate_total = additionalFields.calculate_total; } if (additionalFields.sort !== undefined) { queryParams.sort = additionalFields.sort; } logger_1.logger.debug('monitoring:site:listSites', `Getting sites with params: ${JSON.stringify(queryParams)}`); // Handle pagination const results = await pagination_1.handlePagination.call(this, '/central/v2/sites', 'GET', {}, queryParams, { path: ['sites'], fallbackPaths: [['data', 'sites'], ['data']], }, returnAll, limit); // Apply client-side site name filtering if specified if (additionalFields.site_name) { const siteName = additionalFields.site_name; logger_1.logger.debug('monitoring:site:listSites', `Filtering results by site name: ${siteName}`); // Filter the results const filteredResults = results .map((result) => { if (result.json && Array.isArray(result.json)) { return { ...result, json: (0, siteHelpers_1.filterSitesByName)(result.json, siteName), }; } else if (result.json && typeof result.json === 'object') { // Handle single site object const sites = [result.json]; const filtered = (0, siteHelpers_1.filterSitesByName)(sites, siteName); return { ...result, json: filtered.length > 0 ? filtered[0] : null, }; } return result; }) .filter((result) => result.json !== null); return filteredResults; } return results; } catch (error) { logger_1.logger.error('monitoring:site:listSites:error', { message: error.message }); return errorHandler_1.handleApiError.call(this, error, 'Failed to list sites'); } }