
    osj4                       d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlm	Z	 d dl
Z
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 ddlmZmZ dd	lmZ dd
lmZ ddlmZ  ej@                  d      Z!e
j*                  e
jD                  z  e
jF                  z  Z$ G d dejJ                        Z& G d de      Z' G d d      Z( G d de      Z)y)    )annotationsN)	Generator   )NetworkStream)ConnectionNotAvailableLocalProtocolErrorRemoteProtocolError
WriteErrormap_exceptions)OriginRequestResponse)LockShieldCancellation)Trace)safe_iterate   )ConnectionInterfacezhttpcore2.http11c                      e Zd ZdZdZdZdZy)HTTPConnectionStater   r   r      N)__name__
__module____qualname__NEWACTIVEIDLECLOSED     I/root/.hermes/venv/lib/python3.12/site-packages/httpcore2/_sync/http11.pyr   r   "   s    
CFDFr    r   c                      e Zd ZdZdZ	 d	 	 	 	 	 	 	 ddZddZddZddZdddZ		 	 	 	 dd	Z
dd
ZdddZd dZd dZd!dZd"dZd"dZd"dZd"dZd"dZd#dZd#dZd$dZ	 	 	 d%	 	 	 	 	 	 	 d&dZy)'HTTP11Connectioni   i  Nc                    || _         || _        || _        d | _        t        j
                  | _        t               | _        d| _	        t        j                  t        j                  | j                        | _        y )Nr   )our_rolemax_incomplete_event_size)_origin_network_stream_keepalive_expiry
_expire_atr   r   _stater   _state_lock_request_counth11
ConnectionCLIENTMAX_INCOMPLETE_EVENT_SIZE
_h11_state)selforiginstreamkeepalive_expirys       r!   __init__zHTTP11Connection.__init__-   sa     %/?(,)--6..ZZ&*&D&D
r    c           	        | j                  |j                  j                        s/t        d|j                  j                   d| j                         | j
                  5  | j                  t        j                  t        j                  fv r2| xj                  dz  c_
        t        j                  | _        d | _        n
t               	 d d d        	 d|i}	 t        dt        ||      5 } | j                   di | d d d        t        dt        ||      5 } | j"                  di | d d d        t        dt        ||      5 } | j&                  di |\  }}}}}||||f|_        d d d        | j*                  }	dk(  s|j,                  d	k(  rd
|cxk  rdk  rn nt/        |	      }	t1        |t3        | |      |	d      S # 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# t$        $ r Y w xY w# 1 sw Y   xY w# t4        $ r^}
t7               5  t        dt        |      5 }| j9                          d d d        n# 1 sw Y   nxY wd d d        |
# 1 sw Y   |
xY wd }
~
ww xY w)NzAttempted to send request to z on connection to r   requestsend_request_headerssend_request_bodyreceive_response_headerse   s   CONNECT   i,  )http_versionreason_phrasenetwork_stream)statusheaderscontent
extensionsresponse_closedr   )can_handle_requesturlr4   RuntimeErrorr'   r,   r+   r   r   r   r-   r   r*   r   r   logger_send_request_headers_send_request_bodyr
   _receive_response_headersreturn_valuer(   methodHTTP11UpgradeStreamr   HTTP11ConnectionByteStreamBaseExceptionr   _response_closed)r3   r9   kwargstracer?   rB   r@   rC   trailing_datarA   excs              r!   handle_requestzHTTP11Connection.handle_request?   s   &&w{{'9'9:!>w{{?Q?Q>RRdeieqeqdrstt 	/{{2668K8P8PQQ##q(#188"&,..  		/2	)F167FK 9u.D..889.H 6E+D++5f56 167FK u 3D22<V< !! !!	&" "11N #GNNj$@sfGZWZGZ!4^]!S24A$0%2&4		 	Y	/ 	/9 96 6   >  	#% ,,fg> ,%))+, , ,, I, I		s   !A)GH G, +G>G, G +G, 3H $G;)AH GGG,  G)%G, ,	G85H 7G88H ;H H 	I.
I)I,I=	III
I)I&	!I))I.c                n   |j                   j                  di       }|j                  dd       }t        t        j                  t        i      5  t        j
                  |j                  |j                  j                  |j                        }d d d        | j                  |       y # 1 sw Y   xY w)Ntimeoutwrite)rO   targetrC   rZ   )rE   getr   r.   r   r   rO   rH   r\   rC   _send_eventr3   r9   timeoutsrZ   events        r!   rK   z&HTTP11Connection._send_request_headers   s    %%)))R8,,w-S335GHI 	KK~~{{))E	 	0	 	s   AB++B4c                   |j                   j                  di       }|j                  dd       }t        |j                  t        j
                        sJ t        |j                        5 }|D ]+  }t        j                  |      }| j                  ||       - 	 d d d        | j                  t        j                         |       y # 1 sw Y   /xY w)NrZ   r[   )datar]   )rE   r^   
isinstancer5   typingIterabler   r.   Datar_   EndOfMessage)r3   r9   ra   rZ   iteratorchunkrb   s          r!   rL   z#HTTP11Connection._send_request_body   s    %%)))R8,,w-'..&//:::'..) 	9X! 9e,   89	9
 	))+W=	9 	9s   *1C

Cc                z    | j                   j                  |      }|| j                  j                  ||       y y )Nr]   )r2   sendr(   r[   )r3   rb   rZ   bytes_to_sends       r!   r_   zHTTP11Connection._send_event   s:    ,,U3$  &&}g&F %r    c                   |j                   j                  di       }|j                  dd       }	 | j                  |      }t        |t        j
                        rn+t        |t        j                        r|j                  dk(  rnXd|j                  z   }|j                  j                         }| j                  j                  \  }}||j                  |j                  ||fS )NrZ   readr]   r=   s   HTTP/)rE   r^   _receive_eventre   r.   r   InformationalResponsestatus_coder?   rC   	raw_itemsr2   rV   reason)	r3   r9   ra   rZ   rb   r?   rC   rV   _s	            r!   rM   z*HTTP11Connection._receive_response_headers   s     %%)))R8,,vt,'''8E%.%!:!:;@Q@QUX@X   %"4"44 --))+??88qU..g}TTr    c              #  H  K   |j                   j                  di       }|j                  dd       }	 | j                  |      }t        |t        j
                        rt        |j                         n+t        |t        j                  t        j                  f      ry pw)NrZ   rp   r]   )
rE   r^   rq   re   r.   rh   bytesrd   ri   PAUSEDr`   s        r!   _receive_response_bodyz'HTTP11Connection._receive_response_body   s     %%)))R8,,vt,'''8E%*EJJ''EC$4$4cjj#AB s   B B"c                   	 t        t        j                  t        i      5  | j                  j	                         }d d d        t        j
                  u r|| j                  j                  | j                  |      }|dk(  r4| j                  j                  t        j                  k(  rd}t        |      | j                  j                  |       n|S # 1 sw Y   xY w)Nr]   r    z/Server disconnected without sending a response.)r   r.   r	   r2   
next_event	NEED_DATAr(   rp   READ_NUM_BYTEStheir_stateSEND_RESPONSEreceive_data)r3   rZ   rb   rd   msgs        r!   rq   zHTTP11Connection._receive_event   s    !8!8:M NO 52245 %++001D1Dg0V 3;4??#>#>#BSBS#SKC-c22,,T2 - 5 5s   CCc                   | j                   5  | j                  j                  t        j                  u r| j                  j
                  t        j                  u rdt        j                  | _        | j                  j                          | j                  9t        j                         }|| j                  z   | _        n| j                          d d d        y # 1 sw Y   y xY wN)r,   r2   	our_stater.   DONEr   r   r   r+   start_next_cycler)   time	monotonicr*   close)r3   nows     r!   rS   z!HTTP11Connection._response_closed   s     	((CHH49T9TX[X`X`9`166002))5..*C&)D,B,B&BDO

	 	 	s   CCC c                b    t         j                  | _        | j                  j	                          y r   )r   r   r+   r(   r   r3   s    r!   r   zHTTP11Connection.close   s#     *00""$r    c                     || j                   k(  S r   )r'   r3   r4   s     r!   rG   z#HTTP11Connection.can_handle_request   s    %%r    c                $    | j                          S r   )	is_closedr   s    r!   is_connectedzHTTP11Connection.is_connected   s    >>###r    c                <    | j                   t        j                  k(  S r   r+   r   r   r   s    r!   is_availablezHTTP11Connection.is_available   s    
 {{16666r    c                    t        j                         }| j                  }|d uxr ||kD  }| j                  t        j
                  k(  xr | j                  j                  d      }|xs |S )Nis_readable)r   r   r*   r+   r   r   r(   get_extra_info)r3   r   	expire_atkeepalive_expiredserver_disconnecteds        r!   has_expiredzHTTP11Connection.has_expired   so    nn OO	%T1EcIo
 #kk-@-E-EE 
$J^J^JmJmK
 !7$77r    c                <    | j                   t        j                  k(  S r   r   r   s    r!   is_idlezHTTP11Connection.is_idle  s    {{16666r    c                <    | j                   t        j                  k(  S r   )r+   r   r   r   s    r!   r   zHTTP11Connection.is_closed  s    {{18888r    c                |    t        | j                        }|d| j                  j                   d| j                   S )Nz, HTTP/1.1, , Request Count: )strr'   r+   namer-   r   s     r!   infozHTTP11Connection.info  s:    T\\"<(8(8'99J4K^K^J_``r    c           	         | j                   j                  }t        | j                        }d| d|d| j                  j
                   d| j                   d	S )N<z [z, r   z]>)	__class__r   r   r'   r+   r   r-   )r3   
class_namer4   s      r!   __repr__zHTTP11Connection.__repr__  sU    ^^,,
T\\":,b
"T[[-=-=,>>OPTPcPcOddfggr    c                    | S r   r   r   s    r!   	__enter__zHTTP11Connection.__enter__!  s    r    c                $    | j                          y r   )r   )r3   exc_type	exc_value	tracebacks       r!   __exit__zHTTP11Connection.__exit__$  s     	

r    r   )r4   r   r5   r   r6   float | NonereturnNone)r9   r   r   r   )r9   r   r   r   )rb   z	h11.EventrZ   r   r   r   )r9   r   r   z:tuple[bytes, int, bytes, list[tuple[bytes, bytes]], bytes])r9   r   r   Generator[bytes])rZ   r   r   zh11.Event | type[h11.PAUSED]r   r   )r4   r   r   bool)r   r   )r   r   )r   r#   )NNN)r   ztype[BaseException] | Noner   zBaseException | Noner   ztypes.TracebackType | Noner   r   )r   r   r   r~   r1   r7   rX   rK   rL   r_   rM   rz   rq   rS   r   rG   r   r   r   r   r   r   r   r   r   r   r    r!   r#   r#   )   s    N * *.	

 
 '	

 

$>D
1
>GUU	CU.	2	%&$78 79ah
 04*.04	, ( .	
 
r    r#   c                  $    e Zd ZddZddZddZy)rQ   c                .    || _         || _        d| _        y )NF)_connection_request_closed)r3   
connectionr9   s      r!   r7   z#HTTP11ConnectionByteStream.__init__.  s    %r    c              #    K   d| j                   i}	 t        dt        | j                   |      5  t         | j                  j
                  di |      5 }|D ]  }|  	 d d d        d d d        y # 1 sw Y   xY w# 1 sw Y   y xY w# t        $ r7}t               5  | j                          d d d        |# 1 sw Y   |xY wd }~ww xY ww)Nr9   receive_response_bodyr   )	r   r   rJ   r   r   rz   rR   r   r   )r3   rT   rj   rk   rW   s        r!   __iter__z#HTTP11ConnectionByteStream.__iter__3  s     T]]+	.vN $!"I$"2"2"I"I"SF"ST $X`!) $#$$$ $$ $$ $  	 $% 

II	s{   CB
 &A>A2!A>)B
 1C2A;	7A>>BB
 CB
 
	C

CB8.
C8C	=CC

Cc                    | j                   sFd| _         t        dt        | j                        5  | j                  j                          d d d        y y # 1 sw Y   y xY w)NTrF   )r   r   rJ   r   r   rS   r   s    r!   r   z HTTP11ConnectionByteStream.closeB  sR    ||DL(&$--@ 4  1134 4 4 4s   AAN)r   r#   r9   r   r   r   )r   r   r   )r   r   r   r7   r   r   r   r    r!   rQ   rQ   -  s    
4r    rQ   c                  T    e Zd ZddZd	d
dZd	ddZddZ	 	 d	 	 	 	 	 	 	 ddZddZy)rP   c                     || _         || _        y r   )_stream_leading_data)r3   r5   leading_datas      r!   r7   zHTTP11UpgradeStream.__init__J  s    )r    Nc                    | j                   r%| j                   d | }| j                   |d  | _         |S | j                  j                  ||      S r   )r   r   rp   )r3   	max_bytesrZ   buffers       r!   rp   zHTTP11UpgradeStream.readN  sN    ''
3F!%!3!3IJ!?DM<<$$Y88r    c                <    | j                   j                  ||       y r   )r   r[   )r3   r   rZ   s      r!   r[   zHTTP11UpgradeStream.writeV  s    67+r    c                8    | j                   j                          y r   )r   r   r   s    r!   r   zHTTP11UpgradeStream.closeY  s    r    c                <    | j                   j                  |||      S r   )r   	start_tls)r3   ssl_contextserver_hostnamerZ   s       r!   r   zHTTP11UpgradeStream.start_tls\  s     ||%%k?GLLr    c                8    | j                   j                  |      S r   )r   r   )r3   r   s     r!   r   z"HTTP11UpgradeStream.get_extra_infod  s    ||**400r    )r5   r   r   rx   r   r   r   )r   intrZ   r   r   rx   )r   rx   rZ   r   r   r   r   )NN)r   zssl.SSLContextr   z
str | NonerZ   r   r   r   )r   r   r   z
typing.Any)	r   r   r   r7   rp   r[   r   r   r   r   r    r!   rP   rP   I  sS    *9, '+ $	M#M $M 	M
 
M1r    rP   )*
__future__r   enumloggingsslr   typesrf   collections.abcr   r.   _backends.baser   _exceptionsr   r   r	   r
   r   _modelsr   r   r   _synchronizationr   r   _tracer   _utilsr   
interfacesr   	getLoggerrJ   rh   ri   H11SendEventIntEnumr   r#   rQ   rP   r   r    r!   <module>r      s    "   
    % 
 *  0 / 7  ! +			-	. {{SXX%(8(88$,, A* AH4 481- 1r    