a
    Of4                     @   s"  d dl Z d dlZd dlZd dlZd dlmZ d dlmZmZm	Z	m
Z
mZmZmZ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" e#dZ$eejej%ej&f Z'G dd de j(Z)G dd de"Z*G dd dZ+G dd deZ,dS )    N)TracebackType)AnyIterableIteratorListOptionalTupleTypeUnion   )NetworkStream)ConnectionNotAvailableLocalProtocolErrorRemoteProtocolError
WriteErrormap_exceptions)OriginRequestResponse)LockShieldCancellation)Trace   )ConnectionInterfacezhttpcore.http11c                   @   s   e Zd ZdZdZdZdZdS )HTTPConnectionStater   r   r      N)__name__
__module____qualname__NEWACTIVEIDLECLOSED r#   r#   N/var/www/ai-form-bot/venv/lib/python3.9/site-packages/httpcore/_sync/http11.pyr   +   s   r   c                	   @   s  e Zd ZdZdZd1eeee ddddZ	e
eddd	Ze
ddd
dZe
ddddZd2ejee ddddZe
eeeeeeeef  ef dddZe
ee dddZd3ee eejeej f dddZddddZddddZeedddZ edd d!Z!edd"d#Z"edd$d%Z#edd&d'Z$e%dd(d)Z&e%dd*d+Z'd dd,d-Z(d4eee)  ee) ee* dd.d/d0Z+dS )5HTTP11Connectioni   i  N)originstreamkeepalive_expiryreturnc                 C   sF   || _ || _|| _d | _tj| _t | _d| _	t
jt
j| jd| _d S )Nr   )Zour_roleZmax_incomplete_event_size)_origin_network_stream_keepalive_expiry
_expire_atr   r   _stater   _state_lock_request_counth11
ConnectionZCLIENTMAX_INCOMPLETE_EVENT_SIZE
_h11_state)selfr&   r'   r(   r#   r#   r$   __init__6   s    zHTTP11Connection.__init__)requestr)   c                 C   sn  |  |jjs(td|jj d| j | jF | jtjtj	fv r`|  j
d7  _
tj| _d | _nt W d    n1 sz0    Y  zZd|i}ztdt|| }| jf i | W d    n1 s0    Y  tdt|| }| jf i | W d    n1 s0    Y  W n ty&   Y n0 tdt||8}| jf i |\}}}}}||||f|_W d    n1 sv0    Y  | j}	|dks|jd	krd
|  krdk rn n
t|	|}	t||t| ||||	ddW S  tyh }
 znt F tdt|}|   W d    n1 s&0    Y  W d    n1 sF0    Y  |
W Y d }
~
n
d }
~
0 0 d S )NzAttempted to send request to z on connection to r   r7   Zsend_request_headersZsend_request_bodyZreceive_response_headerse   s   CONNECT   i,  )http_versionreason_phrasenetwork_stream)statusheaderscontent
extensionsresponse_closed)can_handle_requesturlr&   RuntimeErrorr*   r/   r.   r   r   r!   r0   r    r-   r   r   logger_send_request_headers_send_request_bodyr   _receive_response_headersZreturn_valuer+   methodHTTP11UpgradeStreamr   HTTP11ConnectionByteStreamBaseExceptionr   _response_closed)r5   r7   kwargstracer:   r=   r;   r>   trailing_datar<   excr#   r#   r$   handle_requestH   s~    $.4&



HzHTTP11Connection.handle_requestc                 C   sr   |j di }|dd }ttjti( tj|j|jj|j	d}W d    n1 sV0    Y  | j
||d d S )Ntimeoutwrite)rI   targetr>   rS   )r@   getr   r1   r   r   rI   rC   rU   r>   _send_eventr5   r7   timeoutsrS   eventr#   r#   r$   rF      s    $z&HTTP11Connection._send_request_headersc                 C   sf   |j di }|dd }t|jts*J |jD ]}tj|d}| j||d q0| jt |d d S )NrS   rT   )datarV   )	r@   rW   
isinstancer'   r   r1   DatarX   EndOfMessage)r5   r7   rZ   rS   chunkr[   r#   r#   r$   rG      s    
z#HTTP11Connection._send_request_body)r[   rS   r)   c                 C   s(   | j |}|d ur$| jj||d d S )NrV   )r4   sendr+   rT   )r5   r[   rS   Zbytes_to_sendr#   r#   r$   rX      s    zHTTP11Connection._send_eventc           	      C   s   |j di }|dd }| j|d}t|tjr4qNt|tjr|jdkrqNqd|j }|j	
 }| jj\}}||j|j||fS )NrS   readrV   r8   s   HTTP/)r@   rW   _receive_eventr]   r1   r   ZInformationalResponsestatus_coder:   r>   	raw_itemsr4   rP   reason)	r5   r7   rZ   rS   r[   r:   r>   rP   _r#   r#   r$   rH      s    


z*HTTP11Connection._receive_response_headersc                 c   sZ   |j di }|dd }| j|d}t|tjr@t|jV  qt|tjtj	frqVqd S )NrS   rb   rV   )
r@   rW   rc   r]   r1   r^   bytesr\   r_   PAUSEDrY   r#   r#   r$   _receive_response_body   s    z'HTTP11Connection._receive_response_body)rS   r)   c                 C   s   t tjti | j }W d    n1 s.0    Y  |tju r| jj| j|d}|dkrv| jj	tj
krvd}t|| j| q |S q d S )NrV       z/Server disconnected without sending a response.)r   r1   r   r4   Z
next_eventZ	NEED_DATAr+   rb   READ_NUM_BYTEStheir_stateZSEND_RESPONSEZreceive_data)r5   rS   r[   r\   msgr#   r#   r$   rc      s    (
zHTTP11Connection._receive_eventr)   c                 C   s   | j f | jjtju rV| jjtju rVtj| _| j	  | j
d ur^t }|| j
 | _n|   W d    n1 sr0    Y  d S N)r/   r4   Z	our_stater1   ZDONErm   r   r!   r.   Zstart_next_cycler,   time	monotonicr-   close)r5   nowr#   r#   r$   rM      s    

z!HTTP11Connection._response_closedc                 C   s   t j| _| j  d S rp   )r   r"   r.   r+   rs   r5   r#   r#   r$   rs     s    zHTTP11Connection.close)r&   r)   c                 C   s
   || j kS rp   )r*   r5   r&   r#   r#   r$   rB     s    z#HTTP11Connection.can_handle_requestc                 C   s   | j tjkS rp   r.   r   r!   ru   r#   r#   r$   is_available  s    zHTTP11Connection.is_availablec                 C   s<   t  }| jd uo|| jk}| jtjko2| jd}|p:|S )NZis_readable)rq   rr   r-   r.   r   r!   r+   get_extra_info)r5   rt   Zkeepalive_expiredZserver_disconnectedr#   r#   r$   has_expired  s    
zHTTP11Connection.has_expiredc                 C   s   | j tjkS rp   rw   ru   r#   r#   r$   is_idle'  s    zHTTP11Connection.is_idlec                 C   s   | j tjkS rp   )r.   r   r"   ru   r#   r#   r$   	is_closed*  s    zHTTP11Connection.is_closedc                 C   s$   t | j}|d| jj d| j S )Nz, HTTP/1.1, , Request Count: )strr*   r.   namer0   rv   r#   r#   r$   info-  s
    
zHTTP11Connection.infoc              	   C   s6   | j j}t| j}d| d|d| jj d| j d	S )N<z [z, r}   z]>)	__class__r   r~   r*   r.   r   r0   )r5   
class_namer&   r#   r#   r$   __repr__4  s    
zHTTP11Connection.__repr__c                 C   s   | S rp   r#   ru   r#   r#   r$   	__enter__?  s    zHTTP11Connection.__enter__)exc_type	exc_value	tracebackr)   c                 C   s   |    d S rp   )rs   )r5   r   r   r   r#   r#   r$   __exit__B  s    zHTTP11Connection.__exit__)N)N)N)NNN),r   r   r   rl   r3   r   r   r   floatr6   r   r   rR   rF   rG   r1   EventrX   r   rh   intr   rH   r   rj   r
   r	   ri   rc   rM   rs   boolrB   rx   rz   r{   r|   r~   r   r   r   rL   r   r   r#   r#   r#   r$   r%   2   sZ    K 

 
   
r%   c                   @   s>   e Zd ZeeddddZee dddZdddd	Z	dS )
rK   N)
connectionr7   r)   c                 C   s   || _ || _d| _d S )NF)_connection_request_closed)r5   r   r7   r#   r#   r$   r6   L  s    z#HTTP11ConnectionByteStream.__init__ro   c                 c   s   d| j i}zRtdt| j |. | jjf i |D ]
}|V  q0W d    n1 sP0    Y  W nV ty } z>t  |   W d    n1 s0    Y  |W Y d }~n
d }~0 0 d S )Nr7   Zreceive_response_body)r   r   rE   r   rj   rL   r   rs   )r5   rN   r`   rQ   r#   r#   r$   __iter__Q  s    
*&z#HTTP11ConnectionByteStream.__iter__c                 C   sH   | j sDd| _ tdt| j | j  W d    n1 s:0    Y  d S )NTrA   )r   r   rE   r   r   rM   ru   r#   r#   r$   rs   _  s    z HTTP11ConnectionByteStream.close)
r   r   r   r%   r   r6   r   rh   r   rs   r#   r#   r#   r$   rK   K  s   rK   c                   @   s   e Zd ZeeddddZdeee edddZ	deee ddd	d
Z
ddddZdejee ee edddZeedddZdS )rJ   N)r'   leading_datar)   c                 C   s   || _ || _d S rp   )_stream_leading_data)r5   r'   r   r#   r#   r$   r6   g  s    zHTTP11UpgradeStream.__init__)	max_bytesrS   r)   c                 C   s:   | j r(| j d | }| j |d  | _ |S | j||S d S rp   )r   r   rb   )r5   r   rS   bufferr#   r#   r$   rb   k  s
    zHTTP11UpgradeStream.read)r   rS   r)   c                 C   s   | j || d S rp   )r   rT   )r5   r   rS   r#   r#   r$   rT   s  s    zHTTP11UpgradeStream.writero   c                 C   s   | j   d S rp   )r   rs   ru   r#   r#   r$   rs   v  s    zHTTP11UpgradeStream.close)ssl_contextserver_hostnamerS   r)   c                 C   s   | j |||S rp   )r   	start_tls)r5   r   r   rS   r#   r#   r$   r   y  s    zHTTP11UpgradeStream.start_tls)r   r)   c                 C   s   | j |S rp   )r   ry   )r5   r   r#   r#   r$   ry     s    z"HTTP11UpgradeStream.get_extra_info)N)N)NN)r   r   r   r   rh   r6   r   r   r   rb   rT   rs   ssl
SSLContextr~   r   r   ry   r#   r#   r#   r$   rJ   f  s     rJ   )-enumloggingr   rq   typesr   typingr   r   r   r   r   r   r	   r
   r1   Z_backends.baser   _exceptionsr   r   r   r   r   Z_modelsr   r   r   Z_synchronizationr   r   Z_tracer   Z
interfacesr   	getLoggerrE   r^   r_   ZH11SendEventIntEnumr   r%   rK   rJ   r#   r#   r#   r$   <module>   s2   (
  