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