UNPKG

n8n-nodes-arubaclearpass

Version:

n8n community node for Aruba ClearPass API integration with comprehensive identity, policy, and enforcement profile management

73 lines (72 loc) 2.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.apiRequest = apiRequest; exports.apiRequestAllItems = apiRequestAllItems; // helpers/apiRequest.ts const n8n_workflow_1 = require("n8n-workflow"); const tokenManager_1 = require("./tokenManager"); /** * Make an API request to Aruba ClearPass */ async function apiRequest(method, endpoint, body = {}, query = {}) { const credentials = (await this.getCredentials('clearPassApi')); const baseUrl = credentials.url; const options = { method, url: `${baseUrl}/api${endpoint}`, headers: { 'Content-Type': 'application/json', }, qs: query, body, json: true, }; if (Object.keys(body).length === 0) { delete options.body; } try { // If using Client ID/Secret auth, get token directly. Otherwise, use OAuth2 authentication if (credentials.authType === 'clientCredentials') { const token = await tokenManager_1.getToken.call(this, credentials); options.headers = { ...options.headers, Authorization: `Bearer ${token}`, }; return await this.helpers.request(options); } else { // OAuth2 authentication (processed by n8n) return await this.helpers.requestWithAuthentication.call(this, 'clearPassApi', options); } } catch (error) { // Fix error handling throw new n8n_workflow_1.NodeApiError(this.getNode(), error); } } /** * Make paginated API requests to Aruba ClearPass and return all results */ async function apiRequestAllItems(method, endpoint, body = {}, query = {}) { const returnData = []; // Set initial parameters for pagination let responseData; query.limit = query.limit || 100; query.offset = 0; do { responseData = await apiRequest.call(this, method, endpoint, body, query); if (responseData._embedded && responseData._embedded.items) { returnData.push.apply(returnData, responseData._embedded.items); } else if (Array.isArray(responseData)) { returnData.push.apply(returnData, responseData); } else { returnData.push(responseData); } query.offset = query.offset + query.limit; } while (responseData._embedded && responseData._embedded.items && responseData._embedded.items.length === query.limit); return returnData; }