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
JavaScript
;
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');
}
}