
    	h%                       d dl mZ d dlmZmZmZmZmZ d dlm	Z	m
Z
mZmZ d dlZd dlmZ d dlmZmZ d dlmZ d dlmZmZmZmZmZ e
egee         f         Ze
eegee         f         Zeeeeee	f         f         df         Zeeeee eee	f         f                  Z! ed	          Z" G d
 de          Z# G d d          Z$ G d de          Z%dS )    )annotations)AsyncGeneratorAsyncIterable	AwaitableMappingMutableMapping)AnyCallableTypeVarUnionN)collapse_excgroups)ClientDisconnectRequest)Response)ASGIAppMessageReceiveScopeSendTc                  ,     e Zd ZdZd
 fdZdd	Z xZS )_CachedRequesta  
    If the user calls Request.body() from their dispatch function
    we cache the entire request body in memory and pass that to downstream middlewares,
    but if they call Request.stream() then all we do is send an
    empty body so that downstream things don't hang forever.
    scoper   receiver   c                    t                                          ||           d| _        d| _        |                                 | _        d S )NF)super__init___wrapped_rcv_disconnected_wrapped_rcv_consumedstream_wrapped_rc_stream)selfr   r   	__class__s      f/var/www/html/web-builder-api.evdpl.com/venv/lib/python3.11/site-packages/starlette/middleware/base.pyr   z_CachedRequest.__init__   sC    ((().&%*""&++--    returnr   c                  K   | j         rddiS | j        rY| j        rd| _         ddiS |                                  d {V }|d         dk    rt	          d|d                    d| _         |S t          | dd           d| _        d| j        ddS | j        rd| _        dd	ddS 	 |                                 }|	                                 d {V }| j        | _        d|| j         dS # t          $ r d| _         ddicY S w xY w)
Ntypehttp.disconnectTzUnexpected message received: _bodyzhttp.requestFr(   body	more_bodyr%   )r   r   _is_disconnectedr   RuntimeErrorgetattrr*   _stream_consumedr    	__anext__r   )r"   msgr    chunks       r$   wrapped_receivez_CachedRequest.wrapped_receive"   s     ) 	/ -..% 	 $ 3 26. 122 &&&&&&C6{/// ##P3v;#P#PQQQ-1D*J 4$''3)-D&&
"  
 " 	3 *.D&&"  3$..00000000-1-B**!%)%:!:  
 $ 3 3 315. 122223s   &AC, ,DD)r   r   r   r   r&   r   )__name__
__module____qualname____doc__r   r5   __classcell__)r#   s   @r$   r   r      s[         0 0 0 0 0 0;3 ;3 ;3 ;3 ;3 ;3 ;3 ;3r%   r   c                  (    e Zd ZdddZddZddZdS )BaseHTTPMiddlewareNappr   dispatchDispatchFunction | Noner&   Nonec                4    || _         || j        n|| _        d S N)r>   r?   dispatch_func)r"   r>   r?   s      r$   r   zBaseHTTPMiddleware.__init__a   s"    .6.>T]]Hr%   r   r   r   r   sendr   c           
        	
K   d         dk    r                      ||           d {V  d S t          |          }|j        t          j                    d d	d		
 f	d}t          j                    }|\  

5  5  t                      5  t          j                    4 d {V                      ||           d {V } ||           d {V  	                                 

                                 d d d           d {V  n# 1 d {V swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   d d d            n# 1 swxY w Y   	sd S d S )
Nr(   httpFrequestr   r&   r   c                  	K   dfddfddfd}                     |           	 
                                 d {V }|                    dd           }|d	         d
k    r|
                                 d {V }n(# t          j        $ r d	t          d          w xY w|d	         dk    sJ d
fd}t          |d          |            |          }|d         |_        |S )Nr&   r   c                 L  K                                    rddiS t          j                    4 d {V dfd}                     | j                    |            d {V }d d d           d {V  n# 1 d {V swxY w Y                                    rddiS |S )	Nr(   r)   funcCallable[[], Awaitable[T]]r&   r   c                ^   K    |              d {V }j                                          |S rC   )cancel_scopecancel)rK   result
task_groups     r$   wrapz[BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect.<locals>.wrapw   s8      '+tvv"/66888%r%   )rK   rL   r&   r   )is_setanyiocreate_task_group
start_soonwait)rR   messagerQ   response_sentr5   s     @r$   receive_or_disconnectzMBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnectq   sd      '')) 7"$566 244 : : : : : : :
& & & & & &
 ))$0BCCC$(D$9$9999999G: : : : : : : : : : : : : : : : : : : : : : : : : : : !'')) 7"$566s   3A;;
BBrX   rA   c                p   K   	                      |            d {V  d S # t          j        $ r Y d S w xY wrC   )rE   rT   BrokenResourceError)rX   send_streams    r$   send_no_errorzEBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error   s]      %**7333333333330   FFs   " 55c                    K   5  	                                 d {V  n# t          $ r} | Y d } ~ nd } ~ ww xY wd d d            d S # 1 swxY w Y   d S rC   )r>   	Exception)excapp_excrZ   r   r"   r^   r]   s    r$   coroz<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro   s       ! & &&"hhu.C]SSSSSSSSSS$ & & &"%&& & & & & & & & & & & & & & & & & &s0   A&A
<7A<AAAinfor(   http.response.debugTzNo response returned.http.response.startBodyStreamGeneratorc                   K   2 3 d {V } | d         dk    r| W V   d S | d         dk    sJ d|              |                      dd          }|r|W V  |                      dd          s d S k6 d S )	Nr(   zhttp.response.pathsendhttp.response.bodyzUnexpected message: r,   r%   r-   F)get)rX   r,   recv_streams     r$   body_streamzCBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.body_stream   s      %0 	 	 	 	 	 	 	'v*BBB%"6?.BBBBDd[bDdDdBBB";;vs33D #"



";;{E::  &1[[s   A1status)status_codecontentrd   headersr6   )rX   r   r&   rA   )r&   rA   )r&   rg   )rV   r   rj   rT   EndOfStreamr/   _StreamingResponseraw_headers)rH   rc   rX   rd   rl   responserZ   r^   rb   exception_already_raisedrk   rY   r   r"   r]   rQ   r5   s         @@r$   	call_nextz.BaseHTTPMiddleware.__call__.<locals>.call_nextp   s           &     & & & & & & & & & & & !!$'''
< + 3 3 5 5555555{{64006?&;;;@P$/$7$7$9$9999999G$ < < <&/3,!M"#:;;;< 6?&;;;;;
 
 
 
 
 
 *gh6GQ\Q\Q^Q^eijjjH#*9#5H Os   AB %B2)rH   r   r&   r   )r>   r   r5   rT   Eventcreate_memory_object_streamr   rU   rD   setclose)r"   r   r   rE   rH   rv   streamsrt   rb   ru   rk   rY   r]   rQ   r5   s   ``      @@@@@@@r$   __call__zBaseHTTPMiddleware.__call__e   sK     =F""((5'4000000000F 00!1$(#( B	 B	 B	 B	 B	 B	 B	 B	 B	 B	 B	 B	 B	 B	H ?D>_>a>a#* [ 	$ 	$+ 	$ 	$'9';'; 	$ 	$.00 $ $ $ $ $ $ $J!%!3!3GY!G!GGGGGGGhuot<<<<<<<<<!!###!!###	$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ 	$ '?M s   E.EE 9AD#	E #
D--E 0D-1E 4E EEEEE.E	E.E	E..E25E2rH   r   rv   RequestResponseEndpointr   c                "   K   t                      rC   )NotImplementedError)r"   rH   rv   s      r$   r?   zBaseHTTPMiddleware.dispatch   s      !###r%   rC   )r>   r   r?   r@   r&   rA   r   r   r   r   rE   r   r&   rA   )rH   r   rv   r}   r&   r   )r7   r8   r9   r   r|   r?    r%   r$   r=   r=   `   s_        M M M M MX X X Xt$ $ $ $ $ $r%   r=   c                  (    e Zd Z	 	 	 	 dddZddZdS )rr      Nro   AsyncContentStreamrn   intrp   Mapping[str, str] | None
media_type
str | Nonerd   Mapping[str, Any] | Noner&   rA   c                v    || _         || _        || _        || _        |                     |           d | _        d S rC   )rd   body_iteratorrn   r   init_headers
background)r"   ro   rn   rp   r   rd   s         r$   r   z_StreamingResponse.__init__   sA     	$&$'"""r%   r   r   r   r   rE   r   c                  K   | j          |d| j         d           d {V   |d| j        | j        d           d {V  d}| j        2 3 d {V }t	          |t
                    rd} ||           d {V  0 |d|dd           d {V  F6 |r |dd	dd           d {V  | j        r|                                  d {V  d S d S )
Nre   )r(   rd   rf   )r(   rm   rp   TFri   r+   r%   )rd   rn   rs   r   
isinstancedictr   )r"   r   r   rE   should_close_bodyr4   s         r$   r|   z_StreamingResponse.__call__   s     9 $ 5tyIIJJJJJJJJJd-*+ 
 
 	
 	
 	
 	
 	
 	
 	
 !- 	Y 	Y 	Y 	Y 	Y 	Y 	Y%%&& $)!d5kk!!!!!!!$ 4eRVWWXXXXXXXXXX .  	X$ 4cPUVVWWWWWWWWW? 	$//###########	$ 	$s   B)r   NNN)ro   r   rn   r   rp   r   r   r   rd   r   r&   rA   r   )r7   r8   r9   r   r|   r   r%   r$   rr   rr      sO         ,0!%)-    $ $ $ $ $ $r%   rr   )&
__future__r   collections.abcr   r   r   r   r   typingr	   r
   r   r   rT   starlette._utilsr   starlette.requestsr   r   starlette.responsesr   starlette.typesr   r   r   r   r   r}   DispatchFunctionbytesstrrg   
memoryviewr   r   r   r=   rr   r   r%   r$   <module>r      s   " " " " " " ] ] ] ] ] ] ] ] ] ] ] ] ] ] 0 0 0 0 0 0 0 0 0 0 0 0  / / / / / / 8 8 8 8 8 8 8 8 ( ( ( ( ( ( B B B B B B B B B B B B B B"G9i.A#AB W&=>	(@SST $U5.c2J+J%KT%QR "5eZPSUXPXAY)Y#Z[ GCLLI3 I3 I3 I3 I3W I3 I3 I3X`$ `$ `$ `$ `$ `$ `$ `$F($ ($ ($ ($ ($ ($ ($ ($ ($ ($r%   