sachin commited on
Commit
20c50d1
·
1 Parent(s): 3cc9692
Files changed (1) hide show
  1. src/server/main.py +12 -2
src/server/main.py CHANGED
@@ -697,19 +697,20 @@ async def translate(
697
  @app.post("/v1/visual_query",
698
  response_model=VisualQueryResponse,
699
  summary="Visual Query with Image",
700
- description="Process a visual query with an encrypted text query, encrypted image, and encrypted language codes provided in a JSON body. Rate limited to 100 requests per minute per user. Requires authentication and X-Session-Key header.",
701
  tags=["Chat"],
702
  responses={
703
  200: {"description": "Query response", "model": VisualQueryResponse},
704
  400: {"description": "Invalid query, encrypted data, or language codes"},
705
  401: {"description": "Unauthorized - Token required"},
 
706
  429: {"description": "Rate limit exceeded"},
707
  504: {"description": "Visual query service timeout"}
708
  })
709
  @limiter.limit(settings.chat_rate_limit)
710
  async def visual_query(
711
  request: Request,
712
- visual_query_request: VisualQueryRequest,
713
  file: UploadFile = File(..., description="Encrypted image file to analyze"),
714
  credentials: HTTPAuthorizationCredentials = Depends(bearer_scheme),
715
  x_session_key: str = Header(..., alias="X-Session-Key")
@@ -717,6 +718,15 @@ async def visual_query(
717
  user_id = await get_current_user(credentials)
718
  session_key = base64.b64decode(x_session_key)
719
 
 
 
 
 
 
 
 
 
 
720
  # Decrypt query
721
  try:
722
  encrypted_query = base64.b64decode(visual_query_request.query)
 
697
  @app.post("/v1/visual_query",
698
  response_model=VisualQueryResponse,
699
  summary="Visual Query with Image",
700
+ description="Process a visual query with an encrypted text query, encrypted image, and encrypted language codes provided in a JSON body named 'data'. Rate limited to 100 requests per minute per user. Requires authentication and X-Session-Key header.",
701
  tags=["Chat"],
702
  responses={
703
  200: {"description": "Query response", "model": VisualQueryResponse},
704
  400: {"description": "Invalid query, encrypted data, or language codes"},
705
  401: {"description": "Unauthorized - Token required"},
706
+ 422: {"description": "Validation error in request body"},
707
  429: {"description": "Rate limit exceeded"},
708
  504: {"description": "Visual query service timeout"}
709
  })
710
  @limiter.limit(settings.chat_rate_limit)
711
  async def visual_query(
712
  request: Request,
713
+ data: str = Form(..., description="JSON string containing encrypted query, src_lang, and tgt_lang"),
714
  file: UploadFile = File(..., description="Encrypted image file to analyze"),
715
  credentials: HTTPAuthorizationCredentials = Depends(bearer_scheme),
716
  x_session_key: str = Header(..., alias="X-Session-Key")
 
718
  user_id = await get_current_user(credentials)
719
  session_key = base64.b64decode(x_session_key)
720
 
721
+ # Parse and validate JSON data
722
+ try:
723
+ import json
724
+ visual_query_request = VisualQueryRequest.parse_raw(data)
725
+ logger.info(f"Received visual query JSON: {data}")
726
+ except Exception as e:
727
+ logger.error(f"Failed to parse JSON data: {str(e)}")
728
+ raise HTTPException(status_code=422, detail=f"Invalid JSON data: {str(e)}")
729
+
730
  # Decrypt query
731
  try:
732
  encrypted_query = base64.b64decode(visual_query_request.query)