n8n-nodes-base
Version:
Base nodes of n8n
154 lines • 5.3 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.description = void 0;
exports.execute = execute;
const form_data_1 = __importDefault(require("form-data"));
const n8n_workflow_1 = require("n8n-workflow");
const utilities_1 = require("../../../../utils/utilities");
const descriptions_1 = require("../../descriptions");
const utils_1 = require("../../helpers/utils");
const transport_1 = require("../../transport");
const properties = [
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-miscased
displayName: 'Create in',
name: 'createIn',
type: 'options',
options: [
{
name: 'Case',
value: 'case',
},
{
name: 'Alert',
value: 'alert',
},
],
default: 'case',
},
{
...descriptions_1.caseRLC,
name: 'id',
displayOptions: {
show: {
createIn: ['case'],
},
},
},
{
...descriptions_1.alertRLC,
name: 'id',
displayOptions: {
show: {
createIn: ['alert'],
},
},
},
{
// eslint-disable-next-line n8n-nodes-base/node-param-display-name-wrong-for-dynamic-options
displayName: 'Data Type',
name: 'dataType',
type: 'options',
description: 'Choose from the list, or specify an ID using an <a href="https://docs.n8n.io/code/expressions/">expression</a>',
required: true,
default: 'file',
typeOptions: {
loadOptionsMethod: 'loadObservableTypes',
},
},
{
displayName: 'Data',
name: 'data',
type: 'string',
default: '',
required: true,
displayOptions: {
hide: {
dataType: ['file'],
},
},
},
{ ...descriptions_1.attachmentsUi, required: true, displayOptions: { show: { dataType: ['file'] } } },
{
displayName: 'Fields',
name: 'observableFields',
type: 'resourceMapper',
default: {
mappingMode: 'defineBelow',
value: null,
},
noDataExpression: true,
required: true,
typeOptions: {
resourceMapper: {
resourceMapperMethod: 'getObservableFields',
mode: 'add',
valuesLabel: 'Fields',
},
},
},
];
const displayOptions = {
show: {
resource: ['observable'],
operation: ['create'],
},
};
exports.description = (0, utilities_1.updateDisplayOptions)(displayOptions, properties);
async function execute(i, item) {
let responseData = {};
let body = {};
const createIn = this.getNodeParameter('createIn', i);
const id = this.getNodeParameter('id', i, '', { extractValue: true });
const endpoint = `/v1/${createIn}/${id}/observable`;
const dataMode = this.getNodeParameter('observableFields.mappingMode', i);
if (dataMode === 'autoMapInputData') {
const schema = this.getNodeParameter('observableFields.schema', i);
body = (0, utils_1.prepareInputItem)(item.json, schema, i);
}
if (dataMode === 'defineBelow') {
const observableFields = this.getNodeParameter('observableFields.value', i, []);
body = observableFields;
}
body = (0, utils_1.fixFieldType)(body);
const dataType = this.getNodeParameter('dataType', i);
body.dataType = dataType;
if (dataType === 'file') {
const inputDataFields = this.getNodeParameter('attachmentsUi.values', i, []).map((entry) => entry.field.trim());
const formData = new form_data_1.default();
for (const inputDataField of inputDataFields) {
const binaryData = this.helpers.assertBinaryData(i, inputDataField);
const dataBuffer = await this.helpers.getBinaryDataBuffer(i, inputDataField);
formData.append('attachment', dataBuffer, {
filename: binaryData.fileName,
contentType: binaryData.mimeType,
});
}
formData.append('_json', JSON.stringify(body));
responseData = await transport_1.theHiveApiRequest.call(this, 'POST', endpoint, undefined, undefined, undefined, {
Headers: {
'Content-Type': 'multipart/form-data',
},
formData,
});
}
else {
const data = this.getNodeParameter('data', i);
body.data = data;
responseData = await transport_1.theHiveApiRequest.call(this, 'POST', endpoint, body);
}
if (responseData.failure) {
const message = responseData.failure
.map((error) => error.message)
.join(', ');
throw new n8n_workflow_1.NodeOperationError(this.getNode(), message, { itemIndex: i });
}
const executionData = this.helpers.constructExecutionMetaData((0, utilities_1.wrapData)(responseData), {
itemData: { item: i },
});
return executionData;
}
//# sourceMappingURL=create.operation.js.map