Files
dify/api/services/trigger/webhook_gateway.py
T

23 lines
968 B
Python

"""Native webhook file storage through the shared tool-file owner."""
from core.app.file_access import DatabaseFileAccessController
from core.tools.tool_file_manager import ToolFileManager
from factories import file_factory
from graphon.file import File, FileTransferMethod
class ToolWebhookFiles:
def __init__(self, *, manager: ToolFileManager, access: DatabaseFileAccessController) -> None:
self._manager = manager
self._access = access
def create(self, *, tenant_id: str, user_id: str, content: bytes, mimetype: str) -> File:
record = self._manager.create_file_by_raw(
user_id=user_id, tenant_id=tenant_id, conversation_id=None, file_binary=content, mimetype=mimetype
)
return file_factory.build_from_mapping(
mapping={"tool_file_id": record.id, "transfer_method": FileTransferMethod.TOOL_FILE.value},
tenant_id=tenant_id,
access_controller=self._access,
)