fix: add UUID validation for tool file ID extraction (#12011)

Signed-off-by: -LAN- <laipz8200@outlook.com>
This commit is contained in:
-LAN- 2024-12-23 17:53:42 +08:00 committed by GitHub
parent 75bce2822e
commit d0dd8b7955
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

View File

@ -1,5 +1,6 @@
from collections.abc import Mapping, Sequence from collections.abc import Mapping, Sequence
from typing import Any from typing import Any
from uuid import UUID
from sqlalchemy import select from sqlalchemy import select
from sqlalchemy.orm import Session from sqlalchemy.orm import Session
@ -231,6 +232,10 @@ class ToolNode(BaseNode[ToolNodeData]):
url = str(response.message) url = str(response.message)
transfer_method = FileTransferMethod.TOOL_FILE transfer_method = FileTransferMethod.TOOL_FILE
tool_file_id = url.split("/")[-1].split(".")[0] tool_file_id = url.split("/")[-1].split(".")[0]
try:
UUID(tool_file_id)
except ValueError:
raise ToolFileError(f"cannot extract tool file id from url {url}")
with Session(db.engine) as session: with Session(db.engine) as session:
stmt = select(ToolFile).where(ToolFile.id == tool_file_id) stmt = select(ToolFile).where(ToolFile.id == tool_file_id)
tool_file = session.scalar(stmt) tool_file = session.scalar(stmt)