@panoptic-it-solutions/n8n-nodes-datto-rmm
Version:
n8n node for Datto RMM integration
211 lines • 11.9 kB
JavaScript
"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.executeSiteOperation = executeSiteOperation;
const n8n_workflow_1 = require("n8n-workflow");
const api_helper_1 = require("../../helpers/api.helper");
const errorHandler_1 = require("../../helpers/errorHandler");
async function executeSiteOperation() {
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 'get':
{
const siteUid = this.getNodeParameter('siteUid', i);
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/site/${siteUid}`);
}
break;
case 'getMany':
{
const retrieveAll = this.getNodeParameter('retrieveAll', i, true);
const siteName = this.getNodeParameter('siteName', i, '');
const qs = {};
if (siteName) {
qs.siteName = siteName;
}
if (retrieveAll) {
const allSites = await api_helper_1.dattoRmmApiRequestAllItems.call(this, 'GET', '/api/v2/account/sites', {}, qs);
responseData = { sites: allSites };
}
else {
const page = this.getNodeParameter('page', i, 0);
const max = this.getNodeParameter('max', i, 100);
qs.page = page;
qs.max = max;
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', '/api/v2/account/sites', {}, qs);
}
}
break;
case 'create':
{
const name = this.getNodeParameter('name', i);
const description = this.getNodeParameter('description', i, '');
const notes = this.getNodeParameter('notes', i, '');
const onDemand = this.getNodeParameter('onDemand', i, false);
const splashtopAutoInstall = this.getNodeParameter('splashtopAutoInstall', i, false);
const body = {
name,
onDemand,
splashtopAutoInstall,
};
if (description)
body.description = description;
if (notes)
body.notes = notes;
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'PUT', '/api/v2/site', body);
}
break;
case 'update':
{
const siteUid = this.getNodeParameter('siteUid', i);
const name = this.getNodeParameter('name', i);
const description = this.getNodeParameter('description', i, '');
const notes = this.getNodeParameter('notes', i, '');
const onDemand = this.getNodeParameter('onDemand', i, false);
const splashtopAutoInstall = this.getNodeParameter('splashtopAutoInstall', i, false);
const body = {
name,
onDemand,
splashtopAutoInstall,
};
if (description)
body.description = description;
if (notes)
body.notes = notes;
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'POST', `/api/v2/site/${siteUid}`, body);
}
break;
case 'getDevices':
{
const siteUid = this.getNodeParameter('siteUid', i);
const retrieveAll = this.getNodeParameter('retrieveAll', i, true);
const filterId = this.getNodeParameter('filterId', i, 0);
const hostname = this.getNodeParameter('hostname', i, '');
const deviceType = this.getNodeParameter('deviceType', i, '');
const operatingSystem = this.getNodeParameter('operatingSystem', i, '');
const qs = {};
if (filterId)
qs.filterId = filterId;
if (hostname)
qs.hostname = hostname;
if (deviceType)
qs.deviceType = deviceType;
if (operatingSystem)
qs.operatingSystem = operatingSystem;
if (retrieveAll) {
const allDevices = await api_helper_1.dattoRmmApiRequestAllItems.call(this, 'GET', `/api/v2/site/${siteUid}/devices`, {}, qs);
responseData = { devices: allDevices };
}
else {
const page = this.getNodeParameter('page', i, 0);
const max = this.getNodeParameter('max', i, 100);
qs.page = page;
qs.max = max;
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/site/${siteUid}/devices`, {}, qs);
}
}
break;
case 'getOpenAlerts':
{
const siteUid = this.getNodeParameter('siteUid', i);
const retrieveAll = this.getNodeParameter('retrieveAll', i, true);
const muted = this.getNodeParameter('muted', i, false);
const qs = { muted };
if (retrieveAll) {
const allAlerts = await api_helper_1.dattoRmmApiRequestAllItems.call(this, 'GET', `/api/v2/site/${siteUid}/alerts/open`, {}, qs);
responseData = { alerts: allAlerts };
}
else {
const page = this.getNodeParameter('page', i, 0);
const max = this.getNodeParameter('max', i, 100);
qs.page = page;
qs.max = max;
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/site/${siteUid}/alerts/open`, {}, qs);
}
}
break;
case 'getResolvedAlerts':
{
const siteUid = this.getNodeParameter('siteUid', i);
const retrieveAll = this.getNodeParameter('retrieveAll', i, true);
const muted = this.getNodeParameter('muted', i, false);
const qs = { muted };
if (retrieveAll) {
const allAlerts = await api_helper_1.dattoRmmApiRequestAllItems.call(this, 'GET', `/api/v2/site/${siteUid}/alerts/resolved`, {}, qs);
responseData = { alerts: allAlerts };
}
else {
const page = this.getNodeParameter('page', i, 0);
const max = this.getNodeParameter('max', i, 100);
qs.page = page;
qs.max = max;
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/site/${siteUid}/alerts/resolved`, {}, qs);
}
}
break;
case 'getVariables':
{
const siteUid = this.getNodeParameter('siteUid', i);
const retrieveAll = this.getNodeParameter('retrieveAll', i, true);
if (retrieveAll) {
const allVariables = await api_helper_1.dattoRmmApiRequestAllItems.call(this, 'GET', `/api/v2/site/${siteUid}/variables`, {}, {});
responseData = { variables: allVariables };
}
else {
const page = this.getNodeParameter('page', i, 0);
const max = this.getNodeParameter('max', i, 100);
const qs = { page, max };
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/site/${siteUid}/variables`, {}, qs);
}
}
break;
case 'getSettings':
{
const siteUid = this.getNodeParameter('siteUid', i);
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/site/${siteUid}/settings`);
}
break;
case 'getFilters':
{
const siteUid = this.getNodeParameter('siteUid', i);
responseData = await api_helper_1.dattoRmmApiRequest.call(this, 'GET', `/api/v2/site/${siteUid}/filters`);
}
break;
default:
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The operation "${operation}" is not supported for site resource`, {
description: `Available operations: get, getMany, create, update, getDevices, getOpenAlerts, getResolvedAlerts, getVariables, getSettings, getFilters`,
});
}
returnData.push({
json: responseData,
pairedItem: {
item: i,
},
});
}
catch (error) {
if (this.continueOnFail()) {
returnData.push({
json: {
error: error.message || 'Unknown error occurred',
itemIndex: i,
operation: operation,
resource: 'site',
},
pairedItem: {
item: i,
},
});
continue;
}
throw error;
}
}
return [returnData];
});
}
//# sourceMappingURL=execute.js.map