n8n-nodes-arubacentral
Version:
n8n community node for Aruba Central API integration with comprehensive monitoring, configuration, and management capabilities
126 lines (125 loc) • 5.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.getSuspectApList = getSuspectApList;
const apiRequest_1 = require("../../../../helpers/apiRequest");
const errorHandler_1 = require("../../../../helpers/errorHandler");
const logger_1 = require("../../../../helpers/logger");
const responseFormatter_1 = require("../../../../helpers/responseFormatter");
const pagination_1 = require("../../../../helpers/pagination");
/**
* Get suspect APs over a time period
*
* @param this The n8n execution context
* @returns List of suspect APs
*/
async function getSuspectApList() {
try {
const returnAll = this.getNodeParameter('returnAll', 0, true);
const limit = this.getNodeParameter('limit', 0, 100);
const additionalFields = this.getNodeParameter('additionalFields', 0, {});
logger_1.logger.debug('rapids:rogues:getSuspectApList', 'Retrieving suspect AP list');
// Build query parameters - using a simple object first
const queryParams = {};
// Add time range parameters
try {
const timeRange = this.getNodeParameter('timeRange', 0, {});
if (timeRange.from_timestamp) {
queryParams.from_timestamp = Math.floor(new Date(timeRange.from_timestamp).getTime() / 1000);
}
if (timeRange.to_timestamp) {
queryParams.to_timestamp = Math.floor(new Date(timeRange.to_timestamp).getTime() / 1000);
}
}
catch (e) {
// Time range not specified
}
// Add pagination limit
if (!returnAll) {
queryParams.limit = limit;
}
// Create a URLSearchParams object for proper query parameter formatting
const urlParams = new URLSearchParams();
// Add non-array parameters
Object.entries(queryParams).forEach(([key, value]) => {
if (value !== undefined && value !== null && value !== '') {
urlParams.append(key, value.toString());
}
});
// Handle array parameters specially
if (additionalFields.site) {
const siteValues = additionalFields.site
.split(',')
.map((s) => s.trim())
.filter((s) => s !== '');
siteValues.forEach((site) => {
urlParams.append('site', site);
});
}
if (additionalFields.group) {
const groupValues = additionalFields.group
.split(',')
.map((g) => g.trim())
.filter((g) => g !== '');
groupValues.forEach((group) => {
urlParams.append('group', group);
});
}
if (additionalFields.label) {
const labelValues = additionalFields.label
.split(',')
.map((l) => l.trim())
.filter((l) => l !== '');
labelValues.forEach((label) => {
urlParams.append('label', label);
});
}
if (additionalFields.swarm_id && additionalFields.swarm_id.trim() !== '') {
urlParams.append('swarm_id', additionalFields.swarm_id.trim());
}
// Convert URLSearchParams to plain object for apiRequest
const finalQueryParams = {};
urlParams.forEach((value, key) => {
// If we have multiple values for the same key, create an array
if (finalQueryParams[key] === undefined) {
finalQueryParams[key] = value;
}
else if (Array.isArray(finalQueryParams[key])) {
finalQueryParams[key].push(value);
}
else {
finalQueryParams[key] = [finalQueryParams[key], value];
}
});
logger_1.logger.debug('rapids:rogues:getSuspectApList:params', JSON.stringify(finalQueryParams));
const endpoint = '/rapids/v1/suspect_aps';
// Use pagination or direct request
if (returnAll) {
return await pagination_1.handlePagination.call(this, endpoint, 'GET', {}, finalQueryParams, {
path: ['suspect_aps'],
fallbackPaths: [['data', 'suspect_aps']],
}, true, undefined, 1000);
}
else {
// Log request parameters
logger_1.logger.debug('rapids:rogues:getSuspectApList:request', {
method: 'GET',
endpoint,
queryParams: finalQueryParams,
});
const response = await apiRequest_1.apiRequest.call(this, 'GET', endpoint, {}, finalQueryParams);
// Log response details
if (response) {
logger_1.logger.debug('rapids:rogues:getSuspectApList:response', {
count: response.count,
total: response.total,
items: response.suspect_aps ? response.suspect_aps.length : 0,
});
}
return (0, responseFormatter_1.formatResponse)(response);
}
}
catch (error) {
logger_1.logger.error('rapids:rogues:getSuspectApList:error', error.message);
return errorHandler_1.handleApiError.call(this, error, 'Failed to retrieve suspect AP list');
}
}