U
    	f6                     @   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AsyncIterableAsyncIteratorListOptionalTupleTypeUnion   )AsyncNetworkStream)ConnectionNotAvailableLocalProtocolErrorRemoteProtocolError
WriteErrormap_exceptions)OriginRequestResponse)	AsyncLockAsyncShieldCancellation)Trace   )AsyncConnectionInterfacez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#   Y/var/www/html/apigroqsegura/apigroq/lib/python3.8/site-packages/httpcore/_async/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AsyncHTTP11Connectioni   i  N)originstreamkeepalive_expiryreturnc                 C   sF   || _ || _|| _d | _tj| _t | _d| _	t
jt
j| jd| _d S )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)selfr&   r'   r(   r#   r#   r$   __init__6   s    zAsyncHTTP11Connection.__init__)requestr)   c                    s@  |  |jjs(td|jj d| j | j4 I d H < | jtjtj	fkrh|  j
d7  _
tj| _d | _nt W 5 Q I d H R X zLd|i}zxtdt||4 I d H }| jf |I d H  W 5 Q I d H R X tdt||4 I d H }| jf |I d H  W 5 Q I d H R X W n tk
r   Y nX tdt||4 I d H 0}| jf |I d H \}}}}}||||f|_W 5 Q I d H R X | j}	|dks|jd	krd
|  krdk rn n
t|	|}	t||t| ||||	ddW S  tk
r: }
 zNt : tdt|4 I d H }|  I d H  W 5 Q I d H R X W 5 Q R X |
W 5 d }
~
X Y nX d S )NzAttempted to send request to z on connection to r   r:   send_request_headerssend_request_bodyreceive_response_headerse   s   CONNECT   i,  )http_versionreason_phrasenetwork_stream)statusheaderscontent
extensionsresponse_closed)can_handle_requesturlr&   RuntimeErrorr,   r1   r0   r   r   r!   r2   r    r/   r   r   logger_send_request_headers_send_request_bodyr   _receive_response_headersreturn_valuer-   methodAsyncHTTP11UpgradeStreamr   HTTP11ConnectionByteStreamBaseExceptionr   _response_closed)r8   r:   kwargstracer@   rC   rA   rD   trailing_datarB   excr#   r#   r$   handle_async_requestH   s       "&   
 


(z*AsyncHTTP11Connection.handle_async_requestc              	      sd   |j di }|dd }ttjti tj|j|jj|j	d}W 5 Q R X | j
||dI d H  d S )Ntimeoutwrite)rP   targetrD   rZ   )rF   getr   r3   r   r   rP   rI   r\   rD   _send_eventr8   r:   timeoutsrZ   eventr#   r#   r$   rL      s    z+AsyncHTTP11Connection._send_request_headersc                    s|   |j di }|dd }t|jts*t|j2 z,3 d H W }tj|d}| j||dI d H  q06 | jt	 |dI d H  d S )NrZ   r[   )datar]   )
rF   r^   
isinstancer'   r   AssertionErrorr3   Datar_   EndOfMessage)r8   r:   ra   rZ   chunkrb   r#   r#   r$   rM      s    z(AsyncHTTP11Connection._send_request_body)rb   rZ   r)   c                    s.   | j |}|d k	r*| jj||dI d H  d S )Nr]   )r7   sendr-   r[   )r8   rb   rZ   bytes_to_sendr#   r#   r$   r_      s    z!AsyncHTTP11Connection._send_eventc           	         s   |j di }|dd }| j|dI d H }t|tjr:qTt|tjr|jdkrqTqd|j }|j	
 }| jj\}}||j|j||fS )NrZ   readr]   r>   s   HTTP/)rF   r^   _receive_eventrd   r3   r   InformationalResponsestatus_coder@   rD   	raw_itemsr7   rW   reason)	r8   r:   ra   rZ   rb   r@   rD   rW   _r#   r#   r$   rN      s    


z/AsyncHTTP11Connection._receive_response_headersc                 C  s`   |j di }|dd }| j|dI d H }t|tjrFt|jV  qt|tjtj	frq\qd S )NrZ   rk   r]   )
rF   r^   rl   rd   r3   rf   bytesrc   rg   PAUSEDr`   r#   r#   r$   _receive_response_body   s    z,AsyncHTTP11Connection._receive_response_body)rZ   r)   c              	      s   t tjti | j }W 5 Q R X |tjkrv| jj| j|dI d H }|dkrh| jj	tj
krhd}t|| j| q |S q d S )Nr]       z/Server disconnected without sending a response.)r   r3   r   r7   
next_event	NEED_DATAr-   rk   READ_NUM_BYTEStheir_stateSEND_RESPONSEreceive_data)r8   rZ   rb   rc   msgr#   r#   r$   rl      s    
 z$AsyncHTTP11Connection._receive_eventr)   c              
      s   | j 4 I d H b | jjtjkr^| jjtjkr^tj| _| j	  | j
d k	rlt }|| j
 | _n|  I d H  W 5 Q I d H R X d S N)r1   r7   	our_stater3   DONEry   r   r!   r0   start_next_cycler.   time	monotonicr/   aclose)r8   nowr#   r#   r$   rT      s    

z&AsyncHTTP11Connection._response_closedc                    s   t j| _| j I d H  d S r~   )r   r"   r0   r-   r   r8   r#   r#   r$   r     s    zAsyncHTTP11Connection.aclose)r&   r)   c                 C   s
   || j kS r~   )r,   r8   r&   r#   r#   r$   rH     s    z(AsyncHTTP11Connection.can_handle_requestc                 C   s   | j tjkS r~   r0   r   r!   r   r#   r#   r$   is_available  s    z"AsyncHTTP11Connection.is_availablec                 C   s<   t  }| jd k	o|| jk}| jtjko2| jd}|p:|S )Nis_readable)r   r   r/   r0   r   r!   r-   get_extra_info)r8   r   keepalive_expiredserver_disconnectedr#   r#   r$   has_expired  s    
z!AsyncHTTP11Connection.has_expiredc                 C   s   | j tjkS r~   r   r   r#   r#   r$   is_idle'  s    zAsyncHTTP11Connection.is_idlec                 C   s   | j tjkS r~   )r0   r   r"   r   r#   r#   r$   	is_closed*  s    zAsyncHTTP11Connection.is_closedc                 C   s$   t | j}|d| jj d| j S )Nz, HTTP/1.1, , Request Count: )strr,   r0   namer2   r   r#   r#   r$   info-  s    
zAsyncHTTP11Connection.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,   r0   r   r2   )r8   
class_namer&   r#   r#   r$   __repr__4  s    
"zAsyncHTTP11Connection.__repr__c                    s   | S r~   r#   r   r#   r#   r$   
__aenter__?  s    z AsyncHTTP11Connection.__aenter__)exc_type	exc_value	tracebackr)   c                    s   |   I d H  d S r~   )r   )r8   r   r   r   r#   r#   r$   	__aexit__B  s    zAsyncHTTP11Connection.__aexit__)N)N)N)NNN),r   r   r   rx   r6   r   r   r   floatr9   r   r   rY   rL   rM   r3   Eventr_   r   rr   intr   rN   r   rt   r
   r	   rs   rl   rT   r   boolrH   r   r   r   r   r   r   r   r   rS   r   r   r#   r#   r#   r$   r%   2   s\    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 )
rR   N)
connectionr:   r)   c                 C   s   || _ || _d| _d S )NF)_connection_request_closed)r8   r   r:   r#   r#   r$   r9   L  s    z#HTTP11ConnectionByteStream.__init__r}   c                 C  s   d| j i}zRtdt| j |4 I d H * | jjf |2 z3 d H W }|V  q46 W 5 Q I d H R X W nF tk
r } z(t  |  I d H  W 5 Q R X |W 5 d }~X Y nX d S )Nr:   receive_response_body)r   r   rK   r   rt   rS   r   r   )r8   rU   rh   rX   r#   r#   r$   	__aiter__Q  s    
z$HTTP11ConnectionByteStream.__aiter__c              
      sH   | j sDd| _ tdt| j4 I d H  | j I d H  W 5 Q I d H R X d S )NTrG   )r   r   rK   r   r   rT   r   r#   r#   r$   r   _  s    z!HTTP11ConnectionByteStream.aclose)
r   r   r   r%   r   r9   r   rr   r   r   r#   r#   r#   r$   rR   K  s   rR   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 )rQ   N)r'   leading_datar)   c                 C   s   || _ || _d S r~   )_stream_leading_data)r8   r'   r   r#   r#   r$   r9   g  s    z!AsyncHTTP11UpgradeStream.__init__)	max_bytesrZ   r)   c                    s@   | j r(| j d | }| j |d  | _ |S | j||I d H S d S r~   )r   r   rk   )r8   r   rZ   bufferr#   r#   r$   rk   k  s
    zAsyncHTTP11UpgradeStream.read)r   rZ   r)   c                    s   | j ||I d H  d S r~   )r   r[   )r8   r   rZ   r#   r#   r$   r[   s  s    zAsyncHTTP11UpgradeStream.writer}   c                    s   | j  I d H  d S r~   )r   r   r   r#   r#   r$   r   v  s    zAsyncHTTP11UpgradeStream.aclose)ssl_contextserver_hostnamerZ   r)   c                    s   | j |||I d H S r~   )r   	start_tls)r8   r   r   rZ   r#   r#   r$   r   y  s    z"AsyncHTTP11UpgradeStream.start_tls)r   r)   c                 C   s   | j |S r~   )r   r   )r8   r   r#   r#   r$   r     s    z'AsyncHTTP11UpgradeStream.get_extra_info)N)N)NN)r   r   r   r   rr   r9   r   r   r   rk   r[   r   ssl
SSLContextr   r   r   r   r#   r#   r#   r$   rQ   f  s     rQ   )-enumloggingr   r   typesr   typingr   r   r   r   r   r   r	   r
   r3   _backends.baser   _exceptionsr   r   r   r   r   _modelsr   r   r   _synchronizationr   r   _tracer   
interfacesr   	getLoggerrK   rf   rg   H11SendEventIntEnumr   r%   rR   rQ   r#   r#   r#   r$   <module>   s2   (
  