UNPKG

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

Version:

n8n node for Datto RMM integration

114 lines 3.94 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.dattoRmmApiRequest = dattoRmmApiRequest; exports.dattoRmmApiRequestAllItems = dattoRmmApiRequestAllItems; exports.dattoRmmApiRequestAllItemsByOperation = dattoRmmApiRequestAllItemsByOperation; const oauth2_helper_1 = require("./oauth2.helper"); async function dattoRmmApiRequest(method, endpoint, body, qs, headers) { const credentials = (await this.getCredentials('dattoRmmApi')); const accessToken = await oauth2_helper_1.getAccessToken.call(this, credentials); const options = { method, url: `${credentials.apiUrl}${endpoint}`, headers: { Authorization: `Bearer ${accessToken}`, Accept: 'application/json', ...headers, }, json: true, }; if (body) { options.headers['Content-Type'] = 'application/json'; } if (body) { options.body = body; } if (qs) { options.qs = qs; } try { const response = await this.helpers.httpRequest(options); return response; } catch (error) { if (error.statusCode === 401) { delete credentials.tokenData; const newAccessToken = await oauth2_helper_1.getAccessToken.call(this, credentials); options.headers = { ...options.headers, Authorization: `Bearer ${newAccessToken}`, }; return await this.helpers.httpRequest(options); } throw error; } } async function dattoRmmApiRequestAllItems(method, endpoint, body, qs) { const returnData = []; let page = 0; const pageSize = 100; let hasMoreData = true; while (hasMoreData) { const queryParams = { ...qs, page, max: pageSize, }; const responseData = await dattoRmmApiRequest.call(this, method, endpoint, body, queryParams); let dataArray = []; let pageDetails = null; if (Array.isArray(responseData)) { dataArray = responseData; } else if (responseData && typeof responseData === 'object') { if (responseData.sites) { dataArray = responseData.sites; } else if (responseData.devices) { dataArray = responseData.devices; } else if (responseData.users) { dataArray = responseData.users; } else if (responseData.components) { dataArray = responseData.components; } else if (responseData.alerts) { dataArray = responseData.alerts; } else if (responseData.variables) { dataArray = responseData.variables; } else if (responseData.data && Array.isArray(responseData.data)) { dataArray = responseData.data; } else { dataArray = [responseData]; } pageDetails = responseData.pageDetails; } if (dataArray.length > 0) { returnData.push(...dataArray); } if (pageDetails && typeof pageDetails.totalCount === 'number') { hasMoreData = returnData.length < pageDetails.totalCount; } else { hasMoreData = dataArray.length >= pageSize; } if (dataArray.length === 0) { hasMoreData = false; } page++; if (page > 1000) { console.warn(`Pagination safety limit reached (1000 pages) for endpoint: ${endpoint}`); break; } } return returnData; } async function dattoRmmApiRequestAllItemsByOperation(operation, endpoint, qs) { const allItems = await dattoRmmApiRequestAllItems.call(this, 'GET', endpoint, {}, qs); return allItems; } //# sourceMappingURL=api.helper.js.map