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
JavaScript
;
// 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;
}
}