
    }<i](                    N   d dl mZ d dlmZmZmZmZmZmZ d dl	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
f   z  df   Zeeez  ez  eee
f   z     Z  ed	      Z! G d
 de      Z" G d d      Z# G d de      Z$y)    )annotations)AsyncGeneratorAsyncIterable	AwaitableCallableMappingMutableMapping)AnyTypeVarN)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.
    c                l    t         |   ||       d| _        d| _        | j	                         | _        y )NF)super__init___wrapped_rcv_disconnected_wrapped_rcv_consumedstream_wrapped_rc_stream)selfscopereceive	__class__s      ^/home/www/utuvibe.miabetepe.com/venv/lib/python3.12/site-packages/starlette/middleware/base.pyr   z_CachedRequest.__init__   s0    ().&%*""&++-    c                0  K   | j                   rddiS | j                  rQ| j                  rd| _         ddiS | j                          d {   }|d   dk7  rt	        d|d          d| _         |S t        | dd       d| _        d| j                  ddS | j                  rd| _        dd	ddS 	 | j                         }|j                          d {   }| j                  | _        d|| j                   dS 7 7 (# t        $ r d| _         ddicY S w xY w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]    )) -..%% $$ 26. 122 &C6{// #%B3v;-#PQQ-1D*J 4$'3)-D&&

" 
 "" *.D&&" 3$..00-1-B-B**!%)%:%:!: C '> 1 $ 315. 1223sI   AD	C8
A#D.#C< C:%C< 7D:C< <DDDD)r    r   r!   r   returnr   )__name__
__module____qualname____doc__r   r3   __classcell__)r"   s   @r#   r   r      s    0;3r$   r   c                  &    e Zd ZdddZddZddZy)	BaseHTTPMiddlewareNc                H    || _         || j                  | _        y || _        y N)appdispatchdispatch_func)r   r?   r@   s      r#   r   zBaseHTTPMiddleware.__init__a   s!    .6.>T]]Hr$   c           
        	
K   d   dk7  r j                  ||       d {    y t        |      }|j                  t        j                         d d	d	
 f	d}t        j
                         }|\  

5  5  t               5  t        j                         4 d {    j                  ||       d {   } ||       d {    j                          
j                          d d d       d {    d d d        d d d        d d d        	sy y 7 7 7 k7 [7 -# 1 d {  7  sw Y   =xY w# 1 sw Y   AxY w# 1 sw Y   ExY w# 1 sw Y   IxY ww)Nr&   httpFc                  	K   dfddfddfd}j                  |       	 
j                          d {   }|j                  dd       }|d   dk(  r|
j                          d {   }|d   d	k(  sJ d
fd
}t        |d    |       |      }|d   |_	        |S 7 j7 8# t        j                  $ r+ d	j
                  xs j                  t        d      w xY ww)Nc                 V  K   j                         rddiS t        j                         4 d {   dfd} j                  | j                          |        d {   }d d d       d {    j                         rddiS S 7 \7 ,7 # 1 d {  7  sw Y   .xY ww)Nr&   r'   c                f   K    |         d {   }j                   j                          |S 7  wr>   )cancel_scopecancel)funcresult
task_groups     r#   wrapz[BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect.<locals>.wrapw   s,     '+v"//668% ".s   1/!1)rI   zCallable[[], Awaitable[T]]r5   r   )is_setanyiocreate_task_group
start_soonwait)rL   messagerK   response_sentr3   s     @r#   receive_or_disconnectzMBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnectq   s      '')"$566 224 : :
&
 ))$0B0BC$($99G: : !'')"$566: :: : : :sV   -B)BB).B#B$B(B)3B4B)BB)B&BB&"B)c                x   K   	 j                  |        d {    y 7 # t        j                  $ r Y y w xY wwr>   )sendrN   BrokenResourceError)rR   send_streams    r#   send_no_errorzEBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.send_no_error   s7     %**733300 s(   :! ! :! 7:7:c                    K   5  	 j                         d {    d d d        y 7 # t        $ r} | Y d } ~ d } ~ ww xY w# 1 sw Y   y xY wwr>   )r?   	Exception)excapp_excrT   r    r   rY   rX   s    r#   coroz<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coro   sY      ! &&"hhu.C]SSS& &S$ &"%&& &sD   AA.,.	A.	A>AAAAAinfor&   http.response.debugTzNo response returned.http.response.startc                   K   2 3 d {   } | d   dk(  r|   y | d   dk(  s
J d|         | j                  dd      }|r| | j                  dd      rV y 7 S6 y w)	Nr&   zhttp.response.pathsendhttp.response.bodyzUnexpected message: r*   r$   r+   F)get)rR   r*   recv_streams     r#   body_streamzCBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.body_stream   s~     %0 	 	'v*BB%"6?.BBdFZ[bZcDddB";;vs3D"
";;{E:	[s,   A"A AA AA"A"A  A"status)status_codecontentr_   headersr4   )rR   r   r5   None)r5   rk   )r5   BodyStreamGenerator)
rP   r!   rd   rN   EndOfStream	__cause____context__r-   _StreamingResponseraw_headers)requestr^   rR   r_   rf   responserT   rY   r]   exception_already_raisedre   rS   r    r   rX   rK   r3   s         @@r#   	call_nextz.BaseHTTPMiddleware.__call__.<locals>.call_nextp   s    && & !!$'< + 3 3 55{{6406?&;;@P$/$7$7$99G" 6?&;;;;
 *gh6GQ\Q^eijH#*9#5H OI 6 :$$ <&/3, "w'8'8'OG<O<OO"#:;;<s@   *C3B2 B.3B2 7B08B2 <2C3.B2 0B2 2>C00C3)rr   r   r5   r   )r?   r   r3   rN   Eventcreate_memory_object_streamr   rO   rA   setclose)r   r    r!   rV   rr   ru   streamsrs   r]   rt   re   rS   rX   rK   r3   s   ``      @@@@@@@r#   __call__zBaseHTTPMiddleware.__call__e   sq    =F"((5'4000 0!11$(#( K	 K	Z ?D>_>_>a#* [ 	$+ 	$'9'; 	$..0 $ $J!%!3!3GY!GGuot<<<!!#!!#	$ $	$ 	$ 	$ '?M (@} 1r$G<$ $ $ $	$ 	$ 	$ 	$ 	$ 	$s   E5D1AE5	E)EE0D41E4D<	
D6D<	D8$D<	ED:
EEE)!E54E6D<	8D<	:E<EEE
EEEE&	"E))E2.E5c                   K   t               wr>   )NotImplementedError)r   rr   ru   s      r#   r@   zBaseHTTPMiddleware.dispatch   s     !##s   r>   )r?   r   r@   zDispatchFunction | Noner5   rk   r    r   r!   r   rV   r   r5   rk   )rr   r   ru   RequestResponseEndpointr5   r   )r6   r7   r8   r   r{   r@    r$   r#   r<   r<   `   s    MaF$r$   r<   c                  <    e Zd Z	 	 	 	 d	 	 	 	 	 	 	 	 	 	 	 ddZddZy)rp   Nc                l    || _         || _        || _        || _        | j	                  |       d | _        y r>   )r_   body_iteratorrh   
media_typeinit_headers
background)r   ri   rh   rj   r   r_   s         r#   r   z_StreamingResponse.__init__   s7     	$&$'"r$   c                  K   | j                    |d| j                   d       d {     |d| j                  | j                  d       d {    d}| j                  2 3 d {   }t	        |t
              rd} ||       d {    , |d|dd       d {    A7 {7 U7 @7  7 6 |r |dd	dd       d {  7   | j                  r| j                          d {  7   y y w)
Nr`   )r&   r_   ra   )r&   rg   rj   TFrc   r)   r$   )r_   rh   rq   r   
isinstancedictr   )r   r    r!   rV   should_close_bodyr2   s         r#   r{   z_StreamingResponse.__call__   s    99  5tyyIJJJ-**++
 	
 	
 !-- 	Y 	Y%%&$)!5k!! 4eRVWXXX! K	
	Y "X .  4cPUVWWW??//### s   %C,B#'C,B%C,"B-&B''B-*C,B)	C,B+C,%C,'B-)C,+C,-C,?C $C,$C'%C,)   NNN)ri   AsyncContentStreamrh   intrj   zMapping[str, str] | Noner   z
str | Noner_   zMapping[str, Any] | Noner5   rk   r~   )r6   r7   r8   r   r{   r   r$   r#   rp   rp      sT     ,0!%)-#  *	
  ' 
$r$   rp   )%
__future__r   collections.abcr   r   r   r   r   r	   typingr
   r   rN   starlette._utilsr   starlette.requestsr   r   starlette.responsesr   starlette.typesr   r   r   r   r   r   DispatchFunctionbytesstrrl   
memoryviewr   r   r   r<   rp   r   r$   r#   <module>r      s    " g g   / 8 ( B B"G9i.A#AB W&=>	(@SST $U^CH-E%Et%KL "3;#;nSRUX>V#VW CLI3W I3Xi$ i$X($ ($r$   