@socradar/n8n-nodes-socradar
Version:
Production-ready n8n integration for SOCRadar Extended Threat Intelligence platform
144 lines • 5.22 kB
JavaScript
"use strict";
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.handleTakedownOperations = handleTakedownOperations;
const n8n_workflow_1 = require("n8n-workflow");
const axios_1 = __importDefault(require("axios"));
async function handleTakedownOperations(baseUrl, headers, i) {
var _a;
const operation = this.getNodeParameter('operation', i);
const companyId = this.getNodeParameter('companyId', i);
try {
if (operation === 'createDomain') {
return await handleCreateDomainTakedown.call(this, baseUrl, headers, companyId, i);
}
else if (operation === 'createSocialMedia') {
return await handleCreateSocialMediaTakedown.call(this, baseUrl, headers, companyId, i);
}
else if (operation === 'createSourceCode') {
return await handleCreateSourceCodeTakedown.call(this, baseUrl, headers, companyId, i);
}
else if (operation === 'getProgress') {
return await handleGetTakedownProgress.call(this, baseUrl, headers, companyId, i);
}
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `The operation "${operation}" is not supported for resource "takedown"!`);
}
catch (error) {
if (this.continueOnFail()) {
return {
json: {
error: error.message,
details: ((_a = error.response) === null || _a === void 0 ? void 0 : _a.data) || 'No additional error details',
},
pairedItem: { item: i },
};
}
throw new n8n_workflow_1.NodeOperationError(this.getNode(), `Takedown Error: ${error.message}`, { itemIndex: i });
}
}
async function handleCreateDomainTakedown(baseUrl, headers, companyId, i) {
const entity = this.getNodeParameter('entity', i);
const abuseType = this.getNodeParameter('abuse_type', i);
const type = this.getNodeParameter('type', i);
const additionalFields = this.getNodeParameter('additionalFields', i, {});
const endpoint = `${baseUrl}/add/company/${companyId}/takedown/request`;
const body = {
entity,
abuse_type: abuseType,
type
};
if (additionalFields.notes) {
body.notes = additionalFields.notes;
}
if (additionalFields.send_alarm !== undefined) {
body.send_alarm = additionalFields.send_alarm;
}
if (additionalFields.email) {
body.email = additionalFields.email;
}
const options = {
method: 'POST',
url: endpoint,
headers,
data: body,
};
const response = await (0, axios_1.default)(options);
return {
json: response.data,
pairedItem: { item: i },
};
}
async function handleCreateSocialMediaTakedown(baseUrl, headers, companyId, i) {
const impersonatingAccount = this.getNodeParameter('impersonating_account', i);
const additionalFields = this.getNodeParameter('additionalFields', i, {});
const endpoint = `${baseUrl}/add/company/${companyId}/takedown/request/social_media_risks`;
const body = {
impersonating_account: impersonatingAccount
};
if (additionalFields.notes) {
body.notes = additionalFields.notes;
}
if (additionalFields.send_alarm !== undefined) {
body.send_alarm = additionalFields.send_alarm;
}
if (additionalFields.email) {
body.email = additionalFields.email;
}
const options = {
method: 'POST',
url: endpoint,
headers,
data: body,
};
const response = await (0, axios_1.default)(options);
return {
json: response.data,
pairedItem: { item: i },
};
}
async function handleCreateSourceCodeTakedown(baseUrl, headers, companyId, i) {
const id = this.getNodeParameter('id', i);
const additionalFields = this.getNodeParameter('additionalFields', i, {});
const endpoint = `${baseUrl}/add/company/${companyId}/takedown/request/source_code_leaks`;
const body = { id };
if (additionalFields.notes) {
body.notes = additionalFields.notes;
}
if (additionalFields.email) {
body.email = additionalFields.email;
}
const options = {
method: 'POST',
url: endpoint,
headers,
data: body,
};
const response = await (0, axios_1.default)(options);
return {
json: response.data,
pairedItem: { item: i },
};
}
async function handleGetTakedownProgress(baseUrl, headers, companyId, i) {
const assetId = this.getNodeParameter('asset_id', i);
const type = this.getNodeParameter('type', i);
const endpoint = `${baseUrl}/get/company/${companyId}/takedown/progress`;
const queryParams = {
asset_id: assetId,
type,
};
const options = {
method: 'GET',
url: endpoint,
headers,
params: queryParams,
};
const response = await (0, axios_1.default)(options);
return {
json: response.data,
pairedItem: { item: i },
};
}
//# sourceMappingURL=takedown.js.map