
    )O=d                     "   d dl Z d dlZd dlmZ d dlmZ d dlmZmZm	Z	 d dl
mZmZmZmZmZ e j        ege j        e         f         Ze j        eege j        e         f         Z e j        d          Z G d d          Z G d	 d
e	          ZdS )    N)BackgroundTask)Request)ContentStreamResponseStreamingResponse)ASGIAppMessageReceiveScopeSendTc                   h    e Zd Z	 ddedej        e         ddfdZdede	de
ddfd	Zd
ededefdZdS )BaseHTTPMiddlewareNappdispatchreturnc                 4    || _         || j        n|| _        d S N)r   r   dispatch_func)selfr   r   s      CD:\Sites\api_v1\venv\Lib\site-packages\starlette/middleware/base.py__init__zBaseHTTPMiddleware.__init__   s$     .6.>T]]H    scopereceivesendc                    K   d         dk    r                      ||           d {V  d S t          j                    dt          dt          f fd}t          j                    4 d {V t          |          }                     ||           d {V } |||           d {V                                   d d d           d {V  d S # 1 d {V swxY w Y   d S )Ntypehttprequestr   c                    	
K   d t          j                    \  	dt          f fdd	fd}dt          dd ffd
d
fd}                    |                               |           	 	                                 d {V }|                    dd           }|d         d	k    r|	                                 d {V }n&# t           j        $ r t          d
          w xY w|d         dk    sJ dt          j	        t          d f         f	fd}t          |d          |            |          }|d         |_        |S )Nr   c                    K                                    rddiS t          j                    4 d {V dt          j        g t          j        t                   f         dt          ffd}                     | j                    | 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   zhttp.disconnectfuncr   c                 ^   K    |              d {V }j                                          |S r   )cancel_scopecancel)r#   result
task_groups     r   wrapz[BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect.<locals>.wrap)   s8      '+tvv"/66888%r   )
is_setanyiocreate_task_grouptypingCallable	Awaitabler   
start_soonwaitr   )r)   messager(   r    response_sents     @r   receive_or_disconnectzMBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.receive_or_disconnect#   s      '')) 7"$566 244 : : : : : : :
&V=Ma=P9P)Q &VW & & & & & &
 ))$0BCCC$(D$9$9999999G: : : : : : : : : : : : : : : : : : : : : : : : : : : !'')) 7"$566s   A(B00
B:=B:c                  h   K                                     d {V                                    d S r   )r1   close)recv_streamr3   s   r   "close_recv_stream_on_response_sentzZBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.close_recv_stream_on_response_sent6   sC      #((*********!!#####r   r2   c                 p   K   	                      |            d {V  d S # t          j        $ r Y d S w xY wr   )r   r+   BrokenResourceError)r2   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   4 d {V  	                                 d {V  n# t          $ r} | Y d } ~ nd } ~ ww xY wd d d           d {V  d S # 1 d {V swxY w Y   d S r   )r   	Exception)excapp_excr4   r   r   r<   r;   s    r   coroz<BaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.coroA   s,      ' & & & & & & & &&"hhu.C]SSSSSSSSSS$ & & &"%&& & & & & & & & & & & & & & & & & & & & & & & & & & & & & &s3   A,A
A=AAA
A"%A"infor   http.response.debugzNo response returned.zhttp.response.startc                    K   4 d {V  2 3 d {V } | d         dk    sJ |                      dd          }|r|W V  36 	 d d d           d {V  n# 1 d {V swxY w Y   d S )Nr   zhttp.response.bodybodyr   )get)r2   rE   r@   r7   s     r   body_streamzCBaseHTTPMiddleware.__call__.<locals>.call_next.<locals>.body_streamY   s=     & ' ' ' ' ' ' ' ')4 ' ' ' ' ' ' 'g&v2FFFFF&{{6377 '"&JJJJ	 *5' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' &!M '&s   AA.A
A #A status)status_codecontentrB   headers)r   N)r+   create_memory_object_streamr	   r0   r   rF   EndOfStreamRuntimeErrorr-   AsyncGeneratorbytes_StreamingResponseraw_headers)r    r8   rA   r2   rB   rG   responser@   r4   r7   r<   r;   r3   r   r   r(   s   `      @@@@@r   	call_nextz.BaseHTTPMiddleware.__call__.<locals>.call_next   s6     26G','H'J'J$K       &$ $ $ $ $ $ $W       & & & & & & & & & & & !!"DEEE!!$'''< + 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$ < < <&!M"#:;;;<
 6?&;;;;;	"v'<UD['I 	" 	" 	" 	" 	" 	" 	" *#H-{{}}4  H $+9#5H Os   <AC #C8)r   )r   r+   Eventr   r   r,   r   set)	r   r   r   r   rT   r    rS   r3   r(   s	   ``     @@r   __call__zBaseHTTPMiddleware.__call__   s     =F""((5'4000000000FI	W I	 I	 I	 I	 I	 I	 I	 I	 I	 I	V *,, 	  	  	  	  	  	  	 
eW555G!//CCCCCCCCH(5'4000000000		  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	  	 s   5AC
C'*C'r    rT   c                 "   K   t                      r   )NotImplementedError)r   r    rT   s      r   r   zBaseHTTPMiddleware.dispatchp   s       "###r   r   )__name__
__module____qualname__r   r-   OptionalDispatchFunctionr   r   r
   r   rW   r   RequestResponseEndpointr   r    r   r   r   r      s        JNM MM&,o6F&GM	M M M MV E V G V 4 V D V  V  V  V p$$+B$	$ $ $ $ $ $r   r   c                        e Zd Z	 	 	 	 	 ddededej        ej        eef                  dej        e         dej        e	         dej        ej        eej
        f                  d	df fd
Zded	df fdZ xZS )rQ      NrJ   rI   rK   
media_type
backgroundrB   r   c                 `    || _         t                                          |||||           d S r   )_infosuperr   )r   rJ   rI   rK   rc   rd   rB   	__class__s          r   r   z_StreamingResponse.__init__w   s2     
+w
JOOOOOr   r   c                    K   | j         r |d| j         d           d {V  t                                          |           d {V S )NrC   )r   rB   )rf   rg   stream_response)r   r   rh   s     r   rj   z"_StreamingResponse.stream_response   si      : 	L$ 5tzJJKKKKKKKKKWW,,T222222222r   )rb   NNNN)rZ   r[   r\   r   intr-   r]   Mappingstrr   Anyr   r   rj   __classcell__)rh   s   @r   rQ   rQ   v   s        =A+/6:AE
P 
P
P 
P S!9:	
P
 OC(
P ON3
P ofnS&*_=>
P 

P 
P 
P 
P 
P 
P3$ 34 3 3 3 3 3 3 3 3 3 3r   rQ   )r-   r+   starlette.backgroundr   starlette.requestsr   starlette.responsesr   r   r   starlette.typesr   r	   r
   r   r   r.   r/   r_   r^   TypeVarr   r   rQ   r`   r   r   <module>ru      s;     / / / / / / & & & & & & J J J J J J J J J J B B B B B B B B B B B B B B /7)V5Eh5O*OP ?%&(8(BB  FN3b$ b$ b$ b$ b$ b$ b$ b$J3 3 3 3 3* 3 3 3 3 3r   