UNPKG

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
"use strict"; 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'); } }