@panoptic-it-solutions/n8n-nodes-datto-rmm
Version:
n8n node for Datto RMM integration
158 lines • 7.38 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeSystemOperation = executeSystemOperation;
const n8n_workflow_1 = require("n8n-workflow");
const api_helper_1 = require("../../helpers/api.helper");
const errorHandler_1 = require("../../helpers/errorHandler");
async function executeSystemOperation() {
const items = this.getInputData();
const operation = this.getNodeParameter('operation', 0);
const returnData = [];
return (0, errorHandler_1.handleErrors)(this, async () => {
for (let i = 0; i < items.length; i++) {
try {
let responseData;
switch (operation) {
case 'getStatus':
{
const includeMetrics = this.getNodeParameter('includeMetrics', i, false);
const queryParams = {};
if (includeMetrics) {
queryParams.includeMetrics = true;
}
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', '/api/v2/system/status', {}, queryParams);
}
break;
case 'getRateLimit':
{
const timePeriod = this.getNodeParameter('timePeriod', i, 'current');
const includeHistory = this.getNodeParameter('includeHistory', i, false);
const queryParams = {};
if (timePeriod !== 'current') {
queryParams.period = timePeriod;
}
if (includeHistory) {
queryParams.includeHistory = true;
}
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', '/api/v2/system/ratelimit', {}, queryParams);
}
break;
case 'getPagination':
{
const detailLevel = this.getNodeParameter('detailLevel', i, 'basic');
const queryParams = {};
if (detailLevel !== 'basic') {
queryParams.detail = detailLevel;
}
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', '/api/v2/system/pagination', {}, queryParams);
}
break;
case 'getHealth':
{
const includeMetrics = this.getNodeParameter('includeMetrics', i, false);
const queryParams = {};
if (includeMetrics) {
queryParams.includeMetrics = true;
queryParams.detailed = true;
}
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', '/api/v2/system/health', {}, queryParams);
}
break;
default:
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The operation "${operation}" is not supported for system resource`, {
description: `Available operations: getStatus, getRateLimit, getPagination, getHealth`,
});
}
if (Array.isArray(responseData)) {
responseData.forEach((item) => {
returnData.push({
json: item,
pairedItem: { item: i },
});
});
}
else if (responseData && typeof responseData === 'object') {
let dataArray = [];
if (responseData.data && Array.isArray(responseData.data)) {
dataArray = responseData.data;
}
else if (responseData.status && typeof responseData.status === 'object') {
returnData.push({
json: responseData,
pairedItem: { item: i },
});
continue;
}
else if (responseData.rateLimit && typeof responseData.rateLimit === 'object') {
returnData.push({
json: responseData,
pairedItem: { item: i },
});
continue;
}
else if (responseData.pagination && typeof responseData.pagination === 'object') {
returnData.push({
json: responseData,
pairedItem: { item: i },
});
continue;
}
else if (responseData.health && typeof responseData.health === 'object') {
returnData.push({
json: responseData,
pairedItem: { item: i },
});
continue;
}
else {
returnData.push({
json: responseData,
pairedItem: { item: i },
});
continue;
}
if (dataArray.length > 0) {
dataArray.forEach((item) => {
returnData.push({
json: item,
pairedItem: { item: i },
});
});
}
else {
returnData.push({
json: {
message: `No data found for ${operation}`,
operation: operation,
systemContext: {
timestamp: new Date().toISOString(),
operation: operation,
},
},
pairedItem: { item: i },
});
}
}
}
catch (error) {
if (this.continueOnFail()) {
returnData.push({
json: {
error: error.message || 'Unknown error occurred',
itemIndex: i,
operation: operation,
resource: 'system',
},
pairedItem: {
item: i,
},
});
continue;
}
throw error;
}
}
return [returnData];
});
}
//# sourceMappingURL=execute.js.map