U
    ÑŠ]ý  ã                   @   sÎ   d dl Z 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
mZmZmZmZmZ ddlmZmZmZ ddlmZ dd	lmZ dd
lmZ ddlmZ ejdgejd f ZeeƒZ G dd„ deƒZ!dS )é    Né   )ÚAsyncioBackend)ÚConcurrencyBackend)ÚDEFAULT_TIMEOUT_CONFIGÚ	CertTypesÚHTTPVersionConfigÚHTTPVersionTypesÚ	SSLConfigÚTimeoutConfigÚTimeoutTypesÚVerifyTypes)ÚAsyncRequestÚAsyncResponseÚOrigin)Ú
get_loggeré   )ÚAsyncDispatcher)ÚHTTP2Connection)ÚHTTP11ConnectionÚHTTPConnectionc                
   @   sÜ   e Zd Zdddedddfejeef ee	e
eeeeje dœdd„Zdeee	eedœdd„Zdee	edd	œd
d„Zeejej dœdd„Zddœdd„Zee
dœdd„ƒZee
dœdd„ƒZe
dœdd„Zedœdd„ZdS )r   TN)ÚoriginÚverifyÚcertÚ	trust_envÚtimeoutÚhttp_versionsÚbackendÚrelease_funcc	           	      C   sf   t |tƒrt|ƒn|| _t|||d�| _t|ƒ| _t|ƒ| _	|d krJt
ƒ n|| _|| _d | _d | _d S )N)r   r   r   )Ú
isinstanceÚstrr   r   r	   Ússlr
   r   r   r   r   r   r   Úh11_connectionÚh2_connection)	Úselfr   r   r   r   r   r   r   r   © r$   úy/var/www/html/staging.mfahmagazine.net/magazine_api/magazine_env/lib/python3.8/site-packages/httpx/dispatch/connection.pyÚ__init__   s    

zHTTPConnection.__init__)Úrequestr   r   r   Úreturnc                 Ã   st   | j d kr*| jd kr*| j|||d�I d H  | jd k	rL| jj||d�I d H }n$| j d k	sZt‚| j j||d�I d H }|S )N)r   r   r   )r   )r!   r"   ÚconnectÚsendÚAssertionError)r#   r'   r   r   r   Úresponser$   r$   r%   r*   3   s    
zHTTPConnection.send)r   r   r   r(   c                 Ã   sî   | j j||d�}|d kr| jnt|ƒ}| jj}| jj}|  |¡I d H }| jd krVd }nt	 
| j| ¡}t d|›d|›d|›�¡ | j ||||¡I d H }	|	 ¡ }
t d|
›�¡ |
dkrÌt|	| j|d�| _n|
dksØt‚t|	| j|d�| _d S )	N)r   r   zstart_connect host=z port=z	 timeout=zconnected http_version=zHTTP/2)Ú
on_releasezHTTP/1.1)r    Zwith_overridesr   r
   r   ÚhostÚportÚget_ssl_contextr   Ú	functoolsÚpartialÚloggerÚdebugr   Zopen_tcp_streamZget_http_versionr   r"   r+   r   r!   )r#   r   r   r   r    r.   r/   Zssl_contextr-   ÚstreamZhttp_versionr$   r$   r%   r)   E   s0    
  ÿ
  ÿzHTTPConnection.connect)r    r(   c                 Ã   s$   | j jsd S | j |j| j¡I d H S ©N)r   Zis_sslr   Zrun_in_threadpoolZload_ssl_contextr   )r#   r    r$   r$   r%   r0   f   s     ÿzHTTPConnection.get_ssl_context)r(   c                 Ã   sD   t  d¡ | jd k	r&| j ¡ I d H  n| jd k	r@| j ¡ I d H  d S )NZclose_connection)r3   r4   r"   Úcloser!   ©r#   r$   r$   r%   r7   o   s
    


zHTTPConnection.closec                 C   s
   | j d k	S r6   )r"   r8   r$   r$   r%   Úis_http2v   s    zHTTPConnection.is_http2c                 C   s,   | j d k	r| j jS | jd k	s t‚| jjS d S r6   )r"   Ú	is_closedr!   r+   r8   r$   r$   r%   r:   z   s    
zHTTPConnection.is_closedc                 C   s0   | j d k	r| j  ¡ S | jd k	s"t‚| j ¡ S d S r6   )r"   Úis_connection_droppedr!   r+   r8   r$   r$   r%   r;   ‚   s    

z$HTTPConnection.is_connection_droppedc                 C   s   | j j}|› d| j›d�S )Nz(origin=ú))Ú	__class__Ú__name__r   )r#   Ú
class_namer$   r$   r%   Ú__repr__‰   s    zHTTPConnection.__repr__)NNN)NNN)r>   Ú
__module__Ú__qualname__r   ÚtypingÚUnionr   r   r   r   Úboolr   r   r   ÚOptionalÚReleaseCallbackr&   r   r   r*   r)   r	   r    Z
SSLContextr0   r7   Úpropertyr9   r:   r;   r@   r$   r$   r$   r%   r      sX   ÷÷   ûú   üû!	)"r1   r    rC   Zconcurrency.asyncior   Zconcurrency.baser   Úconfigr   r   r   r   r	   r
   r   r   Zmodelsr   r   r   Úutilsr   Úbaser   Zhttp2r   Zhttp11r   ÚCallableÚ	AwaitablerG   r>   r3   r   r$   r$   r$   r%   Ú<module>   s   (
