UNPKG

n8n-nodes-arubacentral

Version:

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

76 lines (75 loc) 2.8 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.findSiteId = findSiteId; exports.filterSitesByName = filterSitesByName; const apiRequest_1 = require("./apiRequest"); const logger_1 = require("./logger"); /** * Find site ID from site name * Based on the pycentral.ArubaCentralBase.find_site_id implementation * * @param this The n8n execution context * @param siteName Name of the site to find * @returns Site ID if found, null otherwise */ async function findSiteId(siteName) { try { const maxLimitSize = 1000; let totalCount = 0; let paginationCheck = true; let offset = 0; logger_1.logger.debug('siteHelpers:findSiteId', `Looking for site: ${siteName}`); while (paginationCheck) { // Get sites with pagination const queryParams = { offset, limit: maxLimitSize, }; const response = await apiRequest_1.apiRequest.call(this, 'GET', '/central/v2/sites', {}, queryParams); if (response && response.sites && Array.isArray(response.sites)) { const count = response.sites.length; totalCount += count; offset += count; // Check if we've reached the end if (response.total && totalCount >= response.total) { paginationCheck = false; } // Search for matching site name for (const site of response.sites) { if (site.site_name === siteName) { logger_1.logger.debug('siteHelpers:findSiteId', `Found site ID: ${site.site_id} for site: ${siteName}`); return site.site_id; } } // If no more sites to check, break if (count === 0) { paginationCheck = false; } } else { // No sites found or invalid response paginationCheck = false; } } logger_1.logger.debug('siteHelpers:findSiteId', `Site not found: ${siteName}`); return null; } catch (error) { logger_1.logger.error('siteHelpers:findSiteId:error', { siteName, message: error.message }); throw error; } } /** * Filter sites by name from a list of sites * Used for client-side filtering when API doesn't support server-side filtering * * @param sites Array of site objects * @param siteName Name to filter by * @returns Filtered array of sites */ function filterSitesByName(sites, siteName) { if (!siteName || !Array.isArray(sites)) { return sites; } return sites.filter((site) => site.site_name === siteName); }