
                        f    S SK Jr  S SKrS SKrS SKrS SKJrJrJrJ	r	J
r
Jr  SS jr " S S5      rg)    )annotationsN)ASGIReceiveCallableASGISendCallableHTTPResponseBodyEventHTTPResponseStartEvent	HTTPScopeScopec                   #    [        5       nSnU(       dN  U " 5       I S h  vN nUS   S:X  a  UR                  US   5        US   (       + nO[        US   5      eU(       d  MN  [        U5      $  NN7f)NFtypezhttp.requestbody	more_body)	bytearrayextend
ValueErrorbytes)receiver   body_consumedevents       =platform/gsutil/third_party/urllib3/dummyserver/asgi_proxy.py
_read_bodyr      sm     ;DMi=N*KKf& %k 22MU6]++ m ;  s   A1A/AA1$A1c                  `    \ rS rSrSS	S jjr        S
S jr        SS jrSS jrSrg)ProxyApp   Nc                    Xl         g Nupstream_ca_certs)selfr   s     r   __init__ProxyApp.__init__   s    !2    c                   #    US   S:X  d   eUS   S;   a  U R                  XU5      I S h  vN   g US   S:X  a  U R                  X5      I S h  vN   g [        US   5      e N6 N7f)Nr   httpmethod)GETPOSTCONNECT)absolute_uriconnectr   )r   scoper   sends       r   __call__ProxyApp.__call__"   sp      V}&&&?o-##ED9998_	),,u+++U8_--	 :+s!   *A'A#"A'A%A'%A'c           	       #    [         R                  " U R                  =(       d    SS9 IS h  vN nUR                  US   US   [	        US   5      [        U5      I S h  vN S9I S h  vN nS S S 5      IS h  vN   / nS HV  nWR                  R                  U5      nU(       d  M'  UR                  UR                  5       UR                  5       45        MX     UR                  S[        [        WR                  5      5      R                  5       45        U" [        S	UR                  US
95      I S h  vN   U" [        SUR                  SS95      I S h  vN   g  GN4 GN N N! , IS h  vN  (       d  f       GN= f NM N,7f)NT)verifyr$   pathheaders)r$   urlr1   content)DatezCache-ControlServerzContent-TypeLocations   Content-Lengthhttp.response.startr   statusr1   http.response.bodyFr   r   r   )httpxAsyncClientr   requestlistr   r1   getappendencodestrlenr3   r   status_coder   )	r   r*   r   r+   clientclient_responser1   headervs	            r   r(   ProxyApp.absolute_uri-   sd     $$D,B,B,JdKKv$*NNX&MU9-.(11	 %3 % O LK 
F  ''++F3Aq<=
 	)3s?3J3J/K+L+S+S+UVW"*&22
 	
 	
 !)$,,
 	
 	
9 L
 2	 LKKK*	
	
s   ,FE"F/E,!E%"	E,+E(,E,0F;E*<+F+BF9F:"FF	F%E,(E,*F,F2E53F?	F	Fc                  #          SS jnUS   R                  S5      u  pE[        R                  " U[        U5      5      I S h  vN  IS h  vN nU" SS/ S.5      I S h  vN   U" SSS	S
.5      I S h  vN   [        R
                  " [        R                  US   S   5      n[        R                  " S	S9 IS h  vN nUR                  X7U5        UR                  X6U5        S S S 5      IS h  vN   S S S 5      IS h  vN   g  N N N N NQ N! , IS h  vN  (       d  f       N4= f N+! , IS h  vN  (       d  f       g = f7f)Nc                   #      U R                  S5      I S h  vN nU(       d  OUR                  U5      I S h  vN   M=  UR	                  5       I S h  vN   g  N@! [        R                   a     M2  f = f N< N$7f)Ni   )receive_sometrioClosedResourceErrorsend_allaclose)readerwriterdatas      r   start_forward'ProxyApp.connect.<locals>.start_forwardX   sw      !'!4!4T!::D ood+++  --/!! ;//  ,!sS   A;A AA A;A7A;A9A;A A40A;3A44A;9A;r0   :r7      r8   r:   r!   Tr;   
extensions
_transport)strict_exception_groups)rR   trio.SocketStreamrS   r\   returnNone)	splitrN   open_tcp_streaminttypingcastSocketStreamopen_nursery
start_soon)	r   r*   r+   rU   hostportupstreamrF   nurserys	            r   r)   ProxyApp.connectW   s    	"%	"/@	"	" 6]((-
--dCI>>>>( 5QSTUUU 4cPTUVVV[[!2!2E,4G4UVF((FF'""=(C""=FC GF ?>>UV GFFF ?>>>s   AED
EDED2$D%D28D9AD2 DD2%D)D24D5D29ED0EED2D2D2D2D-	DD-	)D20E2E	8D;9E	Er   r   )r   z
str | None)r*   r	   r   r   r+   r   r]   r^   )r*   r   r   r   r+   r   r]   r^   )r*   r   r+   r   r]   r^   )	__name__
__module____qualname____firstlineno__r   r,   r(   r)   __static_attributes__ r!   r   r   r      s^    3	.	.%8	.@P	.		.(
(
 %(
 	(

 
(
TDr!   r   )r   r   r]   r   )
__future__r   rb   r<   rN   hypercorn.typingr   r   r   r   r   r	   r   r   rq   r!   r   <module>rt      s.    "    
PD PDr!   