ramanjitsingh1368 commited on
Commit
269b3c2
·
1 Parent(s): e234fba

Add WebSocket routing for conversation handling and refactor controllers

Browse files
src/app.py CHANGED
@@ -4,7 +4,7 @@ from contextlib import asynccontextmanager
4
  from fastapi import FastAPI
5
  from fastapi.middleware.cors import CORSMiddleware
6
 
7
- from src.controllers import api_router
8
  from src.config import logger, DatabaseConfig
9
  from src.middlewares import AuthenticationMiddleware
10
 
@@ -48,3 +48,4 @@ async def check_health():
48
 
49
 
50
  app.include_router(api_router, prefix="/api")
 
 
4
  from fastapi import FastAPI
5
  from fastapi.middleware.cors import CORSMiddleware
6
 
7
+ from src.controllers import api_router, websocket_router
8
  from src.config import logger, DatabaseConfig
9
  from src.middlewares import AuthenticationMiddleware
10
 
 
48
 
49
 
50
  app.include_router(api_router, prefix="/api")
51
+ app.include_router(websocket_router, prefix="/ws")
src/controllers/__init__.py CHANGED
@@ -6,9 +6,11 @@ from ._file_controller import FileController
6
  from ._conversation_controller import ConversationController
7
 
8
  api_router = APIRouter()
 
9
 
10
  auth_router = AuthController().api_router
11
- conversation_router = ConversationController().api_router
 
12
  file_router = FileController().api_router
13
 
14
  API_KEY_HEADER = APIKeyHeader(name="Authorization", auto_error=False)
@@ -20,11 +22,16 @@ api_router.include_router(
20
  dependencies=[Depends(API_KEY_HEADER)],
21
  )
22
  api_router.include_router(
23
- conversation_router,
24
  prefix="/v1",
25
  tags=["Conversation"],
26
  dependencies=[Depends(API_KEY_HEADER)],
27
  )
 
 
 
 
 
28
  api_router.include_router(
29
  file_router,
30
  prefix="/v1",
@@ -32,6 +39,6 @@ api_router.include_router(
32
  dependencies=[Depends(API_KEY_HEADER)],
33
  )
34
 
35
- __all__ = ["api_router"]
36
  __version__ = "0.1.0"
37
  __author__ = "Ramanjit Singh"
 
6
  from ._conversation_controller import ConversationController
7
 
8
  api_router = APIRouter()
9
+ websocket_router = APIRouter()
10
 
11
  auth_router = AuthController().api_router
12
+ conversation_api_router = ConversationController().api_router
13
+ conversation_websocket_router = ConversationController().websocket_router
14
  file_router = FileController().api_router
15
 
16
  API_KEY_HEADER = APIKeyHeader(name="Authorization", auto_error=False)
 
22
  dependencies=[Depends(API_KEY_HEADER)],
23
  )
24
  api_router.include_router(
25
+ conversation_api_router,
26
  prefix="/v1",
27
  tags=["Conversation"],
28
  dependencies=[Depends(API_KEY_HEADER)],
29
  )
30
+ websocket_router.include_router(
31
+ conversation_websocket_router,
32
+ prefix="/v1",
33
+ tags=["Conversation"],
34
+ )
35
  api_router.include_router(
36
  file_router,
37
  prefix="/v1",
 
39
  dependencies=[Depends(API_KEY_HEADER)],
40
  )
41
 
42
+ __all__ = ["api_router", "websocket_router"]
43
  __version__ = "0.1.0"
44
  __author__ = "Ramanjit Singh"
src/controllers/_conversation_controller.py CHANGED
@@ -74,6 +74,7 @@ class ConversationController:
74
  self.redis_client = RedisClient().client
75
  self.service = ConversationService
76
  self.api_router = APIRouter()
 
77
  self.api_router.add_api_route(
78
  "/conversations",
79
  self.create_conversation,
@@ -92,7 +93,7 @@ class ConversationController:
92
  methods=["POST"],
93
  response_model=CreateConversationSummaryResponse,
94
  )
95
- self.api_router.add_websocket_route("/conversations", self.conversation)
96
 
97
  async def create_conversation(
98
  self, request: Request, data: CreateConversationSchema
 
74
  self.redis_client = RedisClient().client
75
  self.service = ConversationService
76
  self.api_router = APIRouter()
77
+ self.websocket_router = APIRouter()
78
  self.api_router.add_api_route(
79
  "/conversations",
80
  self.create_conversation,
 
93
  methods=["POST"],
94
  response_model=CreateConversationSummaryResponse,
95
  )
96
+ self.websocket_router.add_websocket_route("/conversations", self.conversation)
97
 
98
  async def create_conversation(
99
  self, request: Request, data: CreateConversationSchema
src/services/_web_rtc_service.py CHANGED
@@ -24,9 +24,10 @@ class WebRTCService:
24
  data = await websocket.receive_text()
25
  message = json.loads(data)
26
 
27
- user_status = await redis_client.get(f"session:{user_id}{conversation_id}")
28
- if not user_status:
29
- raise Exception("A max 25 minute session has ended")
 
30
 
31
  openai_server_events = {
32
  "session_created": message["type"] == "session.created",
 
24
  data = await websocket.receive_text()
25
  message = json.loads(data)
26
 
27
+ # user_status = await redis_client.get(f"session:{user_id}{conversation_id}")
28
+ # if not user_status:
29
+ # logger.error("User session has ended")
30
+ # raise Exception("A max 25 minute session has ended")
31
 
32
  openai_server_events = {
33
  "session_created": message["type"] == "session.created",