mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-17 18:12:04 +00:00
feat(TheHive Node): Overhaul (#6457)
This commit is contained in:
100
packages/nodes-base/nodes/TheHiveProject/helpers/utils.ts
Normal file
100
packages/nodes-base/nodes/TheHiveProject/helpers/utils.ts
Normal file
@@ -0,0 +1,100 @@
|
||||
import type { IDataObject } from 'n8n-workflow';
|
||||
|
||||
import get from 'lodash/get';
|
||||
import set from 'lodash/set';
|
||||
|
||||
export function splitAndTrim(str: string | string[]) {
|
||||
if (typeof str === 'string') {
|
||||
return str
|
||||
.split(',')
|
||||
.map((tag) => tag.trim())
|
||||
.filter((tag) => tag);
|
||||
}
|
||||
return str;
|
||||
}
|
||||
|
||||
export function fixFieldType(fields: IDataObject) {
|
||||
const returnData: IDataObject = {};
|
||||
|
||||
for (const key of Object.keys(fields)) {
|
||||
if (
|
||||
[
|
||||
'date',
|
||||
'lastSyncDate',
|
||||
'startDate',
|
||||
'endDate',
|
||||
'dueDate',
|
||||
'includeInTimeline',
|
||||
'sightedAt',
|
||||
].includes(key)
|
||||
) {
|
||||
returnData[key] = Date.parse(fields[key] as string);
|
||||
continue;
|
||||
}
|
||||
|
||||
if (['tags', 'addTags', 'removeTags'].includes(key)) {
|
||||
returnData[key] = splitAndTrim(fields[key] as string);
|
||||
continue;
|
||||
}
|
||||
|
||||
returnData[key] = fields[key];
|
||||
}
|
||||
|
||||
return returnData;
|
||||
}
|
||||
|
||||
export function prepareInputItem(item: IDataObject, schema: IDataObject[], i: number) {
|
||||
const returnData: IDataObject = {};
|
||||
|
||||
for (const entry of schema) {
|
||||
const id = entry.id as string;
|
||||
const value = get(item, id);
|
||||
|
||||
if (value !== undefined) {
|
||||
set(returnData, id, value);
|
||||
} else {
|
||||
if (entry.required) {
|
||||
throw new Error(`Required field "${id}" is missing in item ${i}`);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return returnData;
|
||||
}
|
||||
|
||||
export function constructFilter(entry: IDataObject) {
|
||||
const { field, value } = entry;
|
||||
let { operator } = entry;
|
||||
|
||||
if (operator === undefined) {
|
||||
operator = '_eq';
|
||||
}
|
||||
|
||||
if (operator === '_between') {
|
||||
const { from, to } = entry;
|
||||
return {
|
||||
_between: {
|
||||
_field: field,
|
||||
_from: from,
|
||||
_to: to,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
if (operator === '_in') {
|
||||
const { values } = entry;
|
||||
return {
|
||||
_in: {
|
||||
_field: field,
|
||||
_values: typeof values === 'string' ? splitAndTrim(values) : values,
|
||||
},
|
||||
};
|
||||
}
|
||||
|
||||
return {
|
||||
[operator as string]: {
|
||||
_field: field,
|
||||
_value: value,
|
||||
},
|
||||
};
|
||||
}
|
||||
Reference in New Issue
Block a user