UNPKG

n8n-nodes-arubacentralnextgen

Version:

n8n community node for Aruba Central NextGen API integration with modern monitoring and management capabilities

151 lines (150 loc) 6.17 kB
"use strict"; // methods/monitoring/clients/clients.methods.ts var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { if (k2 === undefined) k2 = k; var desc = Object.getOwnPropertyDescriptor(m, k); if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { desc = { enumerable: true, get: function() { return m[k]; } }; } Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === undefined) k2 = k; o[k2] = m[k]; })); var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { Object.defineProperty(o, "default", { enumerable: true, value: v }); }) : function(o, v) { o["default"] = v; }); var __importStar = (this && this.__importStar) || (function () { var ownKeys = function(o) { ownKeys = Object.getOwnPropertyNames || function (o) { var ar = []; for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k; return ar; }; return ownKeys(o); }; return function (mod) { if (mod && mod.__esModule) return mod; var result = {}; if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); __setModuleDefault(result, mod); return result; }; })(); Object.defineProperty(exports, "__esModule", { value: true }); exports.getAllClients = getAllClients; const apiRequest_1 = require("../../../helpers/apiRequest"); const responseFormatter_1 = require("../../../helpers/responseFormatter"); const logger = __importStar(require("../../../helpers/logger")); /** * Get a list of all clients * API: GET /network-monitoring/v1/clients */ async function getAllClients() { const debugMode = logger.isDebugMode(this); if (debugMode) { logger.debug('Starting getAllClients operation', undefined, this); } try { const returnAll = this.getNodeParameter('returnAll', 0, false); const limit = this.getNodeParameter('limit', 0, 100); const siteId = this.getNodeParameter('siteId', 0, ''); const siteName = this.getNodeParameter('siteName', 0, ''); const serialNumber = this.getNodeParameter('serialNumber', 0, ''); const timeRange = this.getNodeParameter('timeRange', 0, {}); const filters = this.getNodeParameter('filters', 0, {}); const sort = this.getNodeParameter('sort', 0, ''); const pagination = this.getNodeParameter('pagination', 0, {}); // Build base query parameters const queryParams = {}; if (siteId) { queryParams['site-id'] = siteId; } if (siteName) { queryParams['site-name'] = siteName; } if (serialNumber) { queryParams['serial-number'] = serialNumber; } // RFC 3339 time parameters if (timeRange.startAt) { queryParams['start-at'] = timeRange.startAt; } if (timeRange.endAt) { queryParams['end-at'] = timeRange.endAt; } if (sort) { queryParams.sort = sort; } // Build OData filter string — filter object keys match API OData field names directly const filterParts = []; for (const [field, value] of Object.entries(filters)) { if (value) { if (Array.isArray(value)) { const valueList = value.map((v) => `'${v}'`).join(','); filterParts.push(`${field} in (${valueList})`); } else { filterParts.push(`${field} eq '${value}'`); } } } if (filterParts.length > 0) { queryParams.filter = filterParts.join(' and '); } if (debugMode) { logger.debug('Built query parameters', { queryParams }, this); } const endpoint = '/network-monitoring/v1/clients'; if (returnAll) { let allResults = []; let nextCursor = '1'; if (debugMode) { logger.debug('Paginating getAllClients to retrieve all results', undefined, this); } while (nextCursor !== null) { const currentParams = { ...queryParams, next: nextCursor, limit: 1000, }; const response = await apiRequest_1.apiRequest.call(this, 'GET', endpoint, {}, currentParams); const items = response === null || response === void 0 ? void 0 : response.items; if (Array.isArray(items) && items.length > 0) { allResults = allResults.concat(items); } // API returns a `next` cursor string when more pages exist; null/absent when done const responseNext = response === null || response === void 0 ? void 0 : response.next; if (responseNext && responseNext !== nextCursor) { nextCursor = String(responseNext); } else { nextCursor = null; } // Safety cap if (allResults.length >= 50000) { break; } } if (debugMode) { logger.debug(`getAllClients pagination complete, total: ${allResults.length}`, undefined, this); } return responseFormatter_1.formatResponse.call(this, { items: allResults }); } else { // Single page if (pagination.next) { queryParams.next = pagination.next; } queryParams.limit = Math.min(limit, 1000); const response = await apiRequest_1.apiRequest.call(this, 'GET', endpoint, {}, queryParams); return responseFormatter_1.formatResponse.call(this, response); } } catch (error) { logger.error('Error in getAllClients operation', error); throw error; } }