From a10b35f6315d26d40c729632d43ae416c219754c Mon Sep 17 00:00:00 2001 From: Gabriel Luiz Freitas Almeida Date: Wed, 3 Sep 2025 10:36:46 -0300 Subject: [PATCH] Add LangflowFileService integration and new API endpoints in main.py This commit integrates the LangflowFileService into main.py, enabling the management of user files through new asynchronous API endpoints for file upload, ingestion, and deletion. The changes enhance the application's functionality and maintainability by providing structured access to Langflow file operations, while ensuring proper authentication and session management for each endpoint. --- src/main.py | 31 ++++++++++++++++++++++++++++++- 1 file changed, 30 insertions(+), 1 deletion(-) diff --git a/src/main.py b/src/main.py index 7ea5a197..dc7366d5 100644 --- a/src/main.py +++ b/src/main.py @@ -20,6 +20,7 @@ from api import ( chat, connectors, knowledge_filter, + langflow_files, oidc, search, settings, @@ -30,13 +31,13 @@ from auth_middleware import optional_auth, require_auth # Configuration and setup from config.settings import INDEX_BODY, INDEX_NAME, SESSION_SECRET, clients - # Existing services from connectors.service import ConnectorService from services.auth_service import AuthService from services.chat_service import ChatService # Services +from services.langflow_file_service import LangflowFileService from services.document_service import DocumentService from services.knowledge_filter_service import KnowledgeFilterService from services.monitor_service import MonitorService @@ -213,11 +214,16 @@ async def initialize_services(): else: print("[CONNECTORS] Skipping connection loading in no-auth mode") + # New: Langflow file service + + langflow_file_service = LangflowFileService() + return { 'document_service': document_service, 'search_service': search_service, 'task_service': task_service, 'chat_service': chat_service, + 'langflow_file_service': langflow_file_service, 'auth_service': auth_service, 'connector_service': connector_service, 'knowledge_filter_service': knowledge_filter_service, @@ -238,6 +244,28 @@ async def create_app(): document_service=services['document_service'], session_manager=services['session_manager']) ), methods=["POST"]), + + # Langflow Files endpoints + Route("/langflow/files/upload", + optional_auth(services['session_manager'])( + partial(langflow_files.upload_user_file, + langflow_file_service=services['langflow_file_service'], + session_manager=services['session_manager']) + ), methods=["POST"]), + + Route("/langflow/ingest", + require_auth(services['session_manager'])( + partial(langflow_files.run_ingestion, + langflow_file_service=services['langflow_file_service'], + session_manager=services['session_manager']) + ), methods=["POST"]), + + Route("/langflow/files", + require_auth(services['session_manager'])( + partial(langflow_files.delete_user_files, + langflow_file_service=services['langflow_file_service'], + session_manager=services['session_manager']) + ), methods=["DELETE"]), Route("/upload_context", require_auth(services['session_manager'])( @@ -530,6 +558,7 @@ async def cleanup_subscriptions_proper(services): except Exception as e: print(f"[ERROR] Failed to cleanup subscriptions: {e}") + if __name__ == "__main__": import uvicorn