UNPKG

n8n-nodes-tenable-community

Version:

n8n node for the Tenable One platform

139 lines (138 loc) 6.15 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.AttackSurfaceManagement = void 0; const GenericFunctions_1 = require("./GenericFunctions"); const AttackSurfaceManagement_node_options_1 = require("./AttackSurfaceManagement.node.options"); class AttackSurfaceManagement { constructor() { this.description = { displayName: 'Tenable Attack Surface Management', name: 'attackSurfaceManagement', icon: 'file:tenable.svg', group: ['transform'], version: 1, subtitle: '={{$parameter["operation"] + ": " + $parameter["resource"]}}', description: 'Interacts with the Tenable Attack Surface Management API', defaults: { name: 'Tenable Attack Surface Management', }, inputs: ["main" /* NodeConnectionType.Main */], outputs: ["main" /* NodeConnectionType.Main */], credentials: [ { name: 'tenableApi', required: true, }, ], properties: [ { displayName: 'Resource', name: 'resource', type: 'options', noDataExpression: true, options: [ { name: 'Assets', value: 'assets', }, { name: 'Export', value: 'export', }, ], default: 'assets', }, ...AttackSurfaceManagement_node_options_1.attackSurfaceManagementOperations, ...AttackSurfaceManagement_node_options_1.attackSurfaceManagementFields, ], }; } async execute() { const items = this.getInputData(); const returnData = []; const length = items.length; let responseData; for (let i = 0; i < length; i++) { const resource = this.getNodeParameter('resource', i); const operation = this.getNodeParameter('operation', i); const body = {}; const qs = {}; if (resource === 'assets') { if (operation === 'list') { const additionalFields = this.getNodeParameter('additionalFields', i); if (additionalFields.columns) { qs.columns = additionalFields.columns; } const filters = this.getNodeParameter('filters', i); if (filters.asset_ids) { body.asset_ids = filters.asset_ids.split(','); } } if (operation === 'get') { const assetId = this.getNodeParameter('assetId', i); qs.id = assetId; } if (operation === 'history') { const assetId = this.getNodeParameter('assetId', i); qs.id = assetId; } if (operation === 'archive') { const additionalFields = this.getNodeParameter('additionalFields', i); if (additionalFields.asset_ids) { body.asset_ids = additionalFields.asset_ids.split(','); } if (additionalFields.filters) { body.filters = additionalFields.filters; } } if (operation === 'unarchive') { const additionalFields = this.getNodeParameter('additionalFields', i); if (additionalFields.asset_ids) { body.asset_ids = additionalFields.asset_ids.split(','); } if (additionalFields.filters) { body.filters = additionalFields.filters; } } } if (resource === 'export') { if (operation === 'download') { const token = this.getNodeParameter('token', i); body.token = token; } if (operation === 'assetsXlsx') { const additionalFields = this.getNodeParameter('additionalFields', i); if (additionalFields.filters) { body.filters = additionalFields.filters; } if (additionalFields.columns) { body.columns = additionalFields.columns.split(','); } } if (operation === 'assetsCsv') { const additionalFields = this.getNodeParameter('additionalFields', i); if (additionalFields.filters) { body.filters = additionalFields.filters; } if (additionalFields.columns) { body.columns = additionalFields.columns.split(','); } } if (operation === 'assetsJson') { const additionalFields = this.getNodeParameter('additionalFields', i); if (additionalFields.filters) { body.filters = additionalFields.filters; } if (additionalFields.columns) { body.columns = additionalFields.columns.split(','); } } } responseData = await GenericFunctions_1.attackSurfaceManagementApiRequest.call(this, resource, operation, body, qs); const executionData = this.helpers.constructExecutionMetaData(this.helpers.returnJsonArray(responseData), { itemData: { item: i } }); returnData.push(...executionData); } return [this.helpers.returnJsonArray(returnData)]; } } exports.AttackSurfaceManagement = AttackSurfaceManagement;