feat: n8n transform

This commit is contained in:
dextmorgn
2025-07-22 00:28:48 +02:00
parent c2c7e7abb7
commit 8a978aae76
136 changed files with 2008 additions and 696 deletions

View File

@@ -7,6 +7,7 @@ from app.utils import extract_input_schema_transform
from app.scanners.registry import ScannerRegistry
from app.core.celery import celery
from app.types.domain import Domain
from app.types.phrase import Phrase
from app.types.ip import Ip
from app.types.social import SocialProfile
from app.types.organization import Organization
@@ -64,8 +65,8 @@ def get_transforms(
# Returns the "raw_materials" for the transform editor
@router.get("/raw_materials")
async def get_material_list():
scanners = ScannerRegistry.list_by_category()
flattened_scanners = {
scanners = ScannerRegistry.list_by_categories()
scanner_categories = {
category: [
{
"class_name": scanner["class_name"],
@@ -85,8 +86,8 @@ async def get_material_list():
for category, scanner_list in scanners.items()
}
# Ajoute les types comme des "scanners" spéciaux de type 'type'
object_inputs = [
extract_input_schema_transform(Phrase),
extract_input_schema_transform(Organization),
extract_input_schema_transform(Individual),
extract_input_schema_transform(Domain),
@@ -100,10 +101,20 @@ async def get_material_list():
extract_input_schema_transform(CryptoWalletTransaction),
extract_input_schema_transform(CryptoNFT)
]
flattened_scanners["types"] = object_inputs
# Put types first, then add all scanner categories
flattened_scanners = {"types": object_inputs}
flattened_scanners.update(scanner_categories)
return {"items": flattened_scanners}
# Returns the "raw_materials" for the transform editor
@router.get("/input_type/{input_type}")
async def get_material_list(input_type:str):
scanners = ScannerRegistry.list_by_input_type(input_type)
return {"items": scanners}
# Create a new transform
@router.post("/create", response_model=TransformRead, status_code=status.HTTP_201_CREATED)

View File

@@ -32,9 +32,10 @@ from app.types.weapon import Weapon
from app.types.bank_account import BankAccount
from app.types.credit_card import CreditCard
from app.types.web_tracker import WebTracker
from app.types.script import Script
from app.types.reputation_score import ReputationScore
from app.types.risk_profile import RiskProfile
from app.types.phrase import Phrase
# from app.types.script import Script
# from app.types.reputation_score import ReputationScore
# from app.types.risk_profile import RiskProfile
router = APIRouter()
@@ -42,6 +43,17 @@ router = APIRouter()
@router.get("/")
async def get_types_list():
types = [
{
"id": uuid4(),
"type": "global",
"key": "global_category",
"icon": "phrase",
"label": "Global",
"fields": [],
"children": [
extract_input_schema(Phrase, label_key="text"),
],
},
{
"id": uuid4(),
"type": "person",
@@ -51,9 +63,9 @@ async def get_types_list():
"fields": [],
"children": [
extract_input_schema(Individual, label_key="full_name"),
extract_input_schema(SocialProfile, label_key="username", icon="username"),
extract_input_schema(SocialProfile, label_key="username", icon="socialprofile"),
extract_input_schema(Organization, label_key="name"),
extract_input_schema(Username, label_key="username", icon="username"),
extract_input_schema(Username, label_key="username", icon="socialprofile"),
# extract_input_schema(Alias, label_key="alias", icon="alias"),
# extract_input_schema(Affiliation, label_key="organization", icon="affiliation"),
],
@@ -79,7 +91,7 @@ async def get_types_list():
"children": [
extract_input_schema(Phone, label_key="number"),
extract_input_schema(Email, label_key="email"),
extract_input_schema(SocialProfile, label_key="username", icon="username"),
extract_input_schema(SocialProfile, label_key="username", icon="socialprofile"),
extract_input_schema(Message, label_key="content", icon="message"),
],
},