
    ^hJ                         S SK r S SKJrJrJr  S SKJrJrJr  S SK	J
r
  S SKJr  S\\   S\4S jrS\\   S\4S	 jrS
\S\S\\   S\4S jrg)    N)DictListOptional)Request
UploadFilestatus)verbose_proxy_logger)
Deploymentrequestreturnc                   #     U c  0 $ [        U S9nUR                  SS5      nSU;   a!  [        U R                  5       I Sh  vN 5      $ U R	                  5       I Sh  vN nU(       d  0 $ UR                  5       n[        R                  " U5      $  NO N5! [        R                   a    [        R                  " S5        0 s $ [         a1  n[        R                  " SR                  U5      5        0 s SnA$ SnAff = f7f)z
Safely read the request body and parse it as JSON.

Parameters:
- request: The request object to read the body from

Returns:
- dict: Parsed request data as a dictionary or an empty dictionary if parsing fails
N)r   zcontent-type formzInvalid JSON payload received.z*Unexpected error reading request body - {})_safe_get_request_headersgetdictr   bodydecodejsonloadsJSONDecodeErrorr	   	exception	Exceptionformat)r   _request_headerscontent_typer   body_stres         g/home/james-whalen/.local/lib/python3.13/site-packages/litellm/proxy/common_utils/http_parsing_utils.py_read_request_bodyr    
   s     ?I!:7!K'++NB?\!glln,-- !'D 	 {{}H ::h'' - (  &&'GH	 &&8??B	
 	s   DB D9B BB 
DB BB +D,%B DB B ,C>D	C>&C93C>4D9C>>Dc                      U c  0 $ [        U R                  5      $ ! [         a1  n[        R                  " SR                  U5      5        0 s SnA$ SnAff = f)z/
[Non-Blocking] Safely get the request headers
Nz-Unexpected error reading request headers - {})r   headersr   r	   debugr   )r   r   s     r   r   r   6   sS    ?IGOO$$ "";BB1E	
 		s     
A&AAArequest_datafilerouter_model_namesc                    SSK JnJnJnJn  UR
                  =(       d    SnUS-  nSU ;  a  0 U S'   XS   S'   Sn	Ub]  U S   U;   aT   UR                  U S   S9n
U
(       a:  U
R                  b-  U
R                  R                  b  U
R                  R                  n	U	bp  [        R                  " S
UU	5        U(       d.  U" SUR                  R                   3[         R"                  SSS9eX:  a  U" SU SU	 S3[         R"                  SSS9eg! [         a*  n[        R                  " S	[        U5      5         SnANSnAff = f)z
Check if any files passed in request are under max_file_size_mb

Returns True -> when file size is under max_file_size_mb limit
Raises ProxyException -> when file size is over max_file_size_mb limit or not a premium_user
r   )CommonProxyErrorsProxyException
llm_routerpremium_useri   metadatafile_size_in_mbNmodel)model_group_namez%Got error when checking file size: %sz=Checking file size, file content size=%s, max_file_size_mb=%sz:Tried setting max_file_size_mb for /audio/transcriptions. bad_requestr%   )messagecodetypeparamzGFile size is too large. Please check your file size. Passed file size: z MB. Max file size: z MBT)litellm.proxy.proxy_serverr(   r)   r*   r+   size"get_deployment_by_model_group_namelitellm_paramsmax_file_size_mbr   r	   errorstrr#   not_premium_uservaluer   HTTP_400_BAD_REQUEST)r$   r%   r&   r(   r)   r*   r+   file_contents_sizefile_content_size_in_mbr9   
deploymentr   s               r   check_file_size_under_limitrB   E   s     a0K@%#%Z 2I./,w"7;M"M	==%1'%: >   --9-->>J#-#<#<#M#M  #""K#	

  TUfUwUwU}U}T~00"	  #5 abyaz  {O  P`  Oa  ad  e00"	  5  	 &&7#a& 	s   AD 
E D>>E)r   typingr   r   r   fastapir   r   r   litellm._loggingr	   litellm.types.routerr
   r    r   r   r;   boolrB        r   <module>rJ      s}     ' ' / / 1 +)hw&7 )D )Xx'8 T @@
@ S	@ 
	@rI   