@socradar/n8n-nodes-socradar
Version:
Production-ready n8n integration for SOCRadar Extended Threat Intelligence platform
158 lines • 5.64 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleIncidentOperations = handleIncidentOperations;
const n8n_workflow_1 = require("n8n-workflow");
const axios_1 = __importDefault(require("axios"));
async function handleIncidentOperations(baseUrl, headers, i) {
const operation = this.getNodeParameter('operation', i);
const companyId = this.getNodeParameter('companyId', i);
if (operation === 'getAll') {
return await handleGetAllIncidents.call(this, baseUrl, headers, companyId, i);
}
else if (operation === 'get') {
return await handleGetIncident.call(this, baseUrl, headers, companyId, i);
}
else if (operation === 'addComment') {
return await handleAddComment.call(this, baseUrl, headers, companyId, i);
}
else if (operation === 'addTag') {
return await handleAddTag.call(this, baseUrl, headers, companyId, i);
}
else if (operation === 'removeTag') {
return await handleRemoveTag.call(this, baseUrl, headers, companyId, i);
}
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The operation "${operation}" is not supported for resource "incident"!`);
}
async function handleGetAllIncidents(baseUrl, headers, companyId, i) {
const additionalFields = this.getNodeParameter('additionalFields', i, {});
const endpoint = `${baseUrl}/company/${companyId}/incidents/v4`;
const queryParams = {};
if (additionalFields.page) {
queryParams.page = additionalFields.page;
}
if (additionalFields.limit) {
queryParams.limit = additionalFields.limit;
}
if (additionalFields.status) {
queryParams.status = additionalFields.status;
}
if (additionalFields.severity && additionalFields.severity.length > 0) {
queryParams.severity = additionalFields.severity;
}
if (additionalFields.is_resolved !== undefined) {
queryParams.is_resolved = additionalFields.is_resolved;
}
if (additionalFields.is_false_positive !== undefined) {
queryParams.is_false_positive = additionalFields.is_false_positive;
}
if (additionalFields.start_date) {
queryParams.start_date = additionalFields.start_date.split('T')[0];
}
if (additionalFields.end_date) {
queryParams.end_date = additionalFields.end_date.split('T')[0];
}
if (additionalFields.incident_types && additionalFields.incident_types.length > 0) {
queryParams.incident_types = additionalFields.incident_types;
}
if (additionalFields.tags && additionalFields.tags.length > 0) {
queryParams.tags = additionalFields.tags;
}
if (additionalFields.sort_by) {
queryParams.sort_by = additionalFields.sort_by;
}
if (additionalFields.sort_order) {
queryParams.sort_order = additionalFields.sort_order;
}
const options = {
method: 'GET',
url: endpoint,
headers,
params: queryParams,
};
const response = await (0, axios_1.default)(options);
return {
json: response.data,
pairedItem: { item: i },
};
}
async function handleGetIncident(baseUrl, headers, companyId, i) {
const incidentId = this.getNodeParameter('incidentId', i);
const endpoint = `${baseUrl}/company/${companyId}/incidents/v4`;
const queryParams = {
notification_ids: [incidentId],
};
const options = {
method: 'GET',
url: endpoint,
headers,
params: queryParams,
};
const response = await (0, axios_1.default)(options);
return {
json: response.data,
pairedItem: { item: i },
};
}
async function handleAddComment(baseUrl, headers, companyId, i) {
const incidentId = this.getNodeParameter('incidentId', i);
const comment = this.getNodeParameter('comment', i);
const userEmail = this.getNodeParameter('userEmail', i);
const endpoint = `${baseUrl}/company/${companyId}/alarm/add/comment/v2`;
const options = {
method: 'POST',
url: endpoint,
headers,
data: {
alarm_id: incidentId,
comment: comment,
user_email: userEmail,
},
};
const response = await (0, axios_1.default)(options);
return {
json: response.data,
pairedItem: { item: i },
};
}
async function handleAddTag(baseUrl, headers, companyId, i) {
const incidentId = this.getNodeParameter('incidentId', i);
const tag = this.getNodeParameter('tag', i);
const endpoint = `${baseUrl}/company/${companyId}/alarm/tag`;
const options = {
method: 'POST',
url: endpoint,
headers,
data: {
alarm_id: incidentId,
tag: tag,
},
};
const response = await (0, axios_1.default)(options);
return {
json: response.data,
pairedItem: { item: i },
};
}
async function handleRemoveTag(baseUrl, headers, companyId, i) {
const incidentId = this.getNodeParameter('incidentId', i);
const tag = this.getNodeParameter('tag', i);
const endpoint = `${baseUrl}/company/${companyId}/alarm/tag`;
const options = {
method: 'DELETE',
url: endpoint,
headers,
data: {
alarm_id: incidentId,
tag: tag,
},
};
const response = await (0, axios_1.default)(options);
return {
json: response.data,
pairedItem: { item: i },
};
}
//# sourceMappingURL=incident.js.map