UNPKG

@panoptic-it-solutions/n8n-nodes-datto-rmm

Version:

n8n node for Datto RMM integration

158 lines 7.38 kB
"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