o
    óT·jf6  ã                   @  s   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  d¡Z!e
je
j"B e
j#B 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 )é    )ÚannotationsN)ÚAsyncGeneratoré   )ÚAsyncNetworkStream)ÚConnectionNotAvailableÚLocalProtocolErrorÚRemoteProtocolErrorÚ
WriteErrorÚmap_exceptions)ÚOriginÚRequestÚResponse)Ú	AsyncLockÚAsyncShieldCancellation)ÚTrace)Úsafe_async_iterateé   )ÚAsyncConnectionInterfacezhttpcore2.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   úZ/home/dinkstrade/pdmp-scanner/venv/lib/python3.10/site-packages/httpcore2/_async/http11.pyr   "   s
    r   c                   @  sì   e Zd ZdZdZ	dEdFdd„ZdGdd„ZdHdd„ZdHdd„ZdEdIdd„Z	dJdd„Z
dKd d!„ZdEdLd#d$„ZdMd%d&„ZdMd'd(„ZdNd*d+„ZdOd,d-„ZdOd.d/„ZdOd0d1„ZdOd2d3„ZdOd4d5„ZdPd7d8„ZdPd9d:„ZdQd;d<„Z			dRdSdCdD„ZdS )TÚAsyncHTTP11Connectioni   i � NÚoriginr   Ústreamr   Úkeepalive_expiryúfloat | NoneÚreturnÚNonec                 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__-   s   þzAsyncHTTP11Connection.__init__Úrequestr   r   c                 Ã  sæ  �|   |jj¡std|jj› d| j› �ƒ‚| j4 I d H š& | jtjtj	fv r5|  j
d7  _
tj| _d | _ntƒ ‚W d   ƒI d H  n1 I d H sHw   Y  zÑd|i}zZtdt||ƒ4 I d H š}| jdi |¤ŽI d H  W d   ƒI d H  n1 I d H szw   Y  tdt||ƒ4 I d H š}| jdi |¤ŽI d H  W d   ƒI d H  n1 I d H s¦w   Y  W n	 tyµ   Y nw tdt||ƒ4 I d H š"}| jdi |¤ŽI d H \}}}}}||||f|_W d   ƒI d H  n1 I d H séw   Y  | j}	|dk�s
|jd	k�rd
|  k�rdk �rn nt|	|ƒ}	t||t| |ƒ|||	dœd�W S  t�yr }
 zGtƒ �9 tdt|ƒ4 I d H š}|  ¡ I d H  W d   ƒI d H  n1 I d H �sNw   Y  W d   ƒ |
‚W d   ƒ |
‚1 �sgw   Y  |
‚d }
~
ww )NzAttempted to send request to z on connection to r   r6   Úsend_request_headersÚsend_request_bodyÚreceive_response_headersée   s   CONNECTéÈ   i,  )Úhttp_versionÚreason_phraseÚnetwork_stream)ÚstatusÚheadersÚcontentÚ
extensionsÚresponse_closedr   )Úcan_handle_requestÚurlr    ÚRuntimeErrorr(   r-   r,   r   r   r   r.   r   r+   r   r   ÚloggerÚ_send_request_headersÚ_send_request_bodyr	   Ú_receive_response_headersÚreturn_valuer)   ÚmethodÚAsyncHTTP11UpgradeStreamr   ÚHTTP11ConnectionByteStreamÚBaseExceptionr   Ú_response_closed)r4   r6   ÚkwargsÚtracer<   r?   r=   r@   Útrailing_datar>   Úexcr   r   r   Úhandle_async_request?   s~   €(ú(ÿ(ÿ€úúü(ø2
ýü
,ÿ
ÿþ
ÿý€üz*AsyncHTTP11Connection.handle_async_requestc                 Ã  sz   �|j  di ¡}| dd ¡}ttjtiƒ� tj|j|jj|j	d�}W d   ƒ n1 s,w   Y  | j
||d�I d H  d S )NÚtimeoutÚwrite)rL   Útargetr@   ©rV   )rB   Úgetr
   r/   r   r   rL   rE   rX   r@   Ú_send_event©r4   r6   ÚtimeoutsrV   Úeventr   r   r   rH   �   s   €ýÿz+AsyncHTTP11Connection._send_request_headersc              	   Ã  s¼   �|j  di ¡}| dd ¡}t|jtjƒsJ ‚t|jƒ4 I d H š%}|2 z3 d H W }tj|d�}| j	||d�I d H  q#6 W d   ƒI d H  n1 I d H sKw   Y  | j	t 
¡ |d�I d H  d S )NrV   rW   )ÚdatarY   )rB   rZ   Ú
isinstancer!   ÚtypingÚAsyncIterabler   r/   ÚDatar[   ÚEndOfMessage)r4   r6   r]   rV   ÚiteratorÚchunkr^   r   r   r   rI   �   s   €þ(ÿz(AsyncHTTP11Connection._send_request_bodyr^   ú	h11.EventrV   c                 Ã  s4   �| j  |¡}|d ur| jj||d�I d H  d S d S )NrY   )r3   Úsendr)   rW   )r4   r^   rV   Úbytes_to_sendr   r   r   r[   ™   s
   €ÿz!AsyncHTTP11Connection._send_eventú:tuple[bytes, int, bytes, list[tuple[bytes, bytes]], bytes]c           	      Ã  sŠ   �|j  di ¡}| dd ¡}	 | j|d�I d H }t|tjƒrnt|tjƒr+|jdkr+nqd|j }|j	 
¡ }| jj\}}||j|j||fS )NrV   ÚreadTrY   r:   s   HTTP/)rB   rZ   Ú_receive_eventr`   r/   r   ÚInformationalResponseÚstatus_coder<   r@   Ú	raw_itemsr3   rS   Úreason)	r4   r6   r]   rV   r^   r<   r@   rS   Ú_r   r   r   rJ       s   €û

z/AsyncHTTP11Connection._receive_response_headersúAsyncGenerator[bytes]c                 C sb   �|j  di ¡}| dd ¡}	 | j|d�I d H }t|tjƒr%t|jƒV  nt|tjtj	fƒr0d S q)NrV   rk   TrY   )
rB   rZ   rl   r`   r/   rc   Úbytesr_   rd   ÚPAUSEDr\   r   r   r   Ú_receive_response_body·   s   €ûz,AsyncHTTP11Connection._receive_response_bodyúh11.Event | type[h11.PAUSED]c                 Ã  s”   �	 t tjtiƒ� | j ¡ }W d   ƒ n1 sw   Y  |tju rG| jj| j|d�I d H }|dkr@| jj	tj
kr@d}t|ƒ‚| j |¡ n|S q)NTrY   ó    z/Server disconnected without sending a response.)r
   r/   r   r3   Ú
next_eventÚ	NEED_DATAr)   rk   ÚREAD_NUM_BYTESÚtheir_stateÚSEND_RESPONSEÚreceive_data)r4   rV   r^   r_   Úmsgr   r   r   rl   Â   s   €ÿ

êz$AsyncHTTP11Connection._receive_eventc              	   Ã  s´   �| j 4 I d H šE | jjtju r0| jjtju r0tj| _| j 	¡  | j
d ur/t ¡ }|| j
 | _n|  ¡ I d H  W d   ƒI d H  d S W d   ƒI d H  d S 1 I d H sSw   Y  d S ©N)r-   r3   Ú	our_stater/   ÚDONEr{   r   r   r,   Ústart_next_cycler*   ÚtimeÚ	monotonicr+   Úaclose)r4   Únowr   r   r   rP   Û   s   €

€ø€. z&AsyncHTTP11Connection._response_closedc                 Ã  s   �t j| _| j ¡ I d H  d S r   )r   r   r,   r)   r…   ©r4   r   r   r   r…   è   s   €zAsyncHTTP11Connection.acloseÚboolc                 C  s
   || j kS r   )r(   ©r4   r    r   r   r   rD   ò   ó   
z(AsyncHTTP11Connection.can_handle_requestc                 C  s
   |   ¡  S r   )Ú	is_closedr‡   r   r   r   Úis_connectedõ   rŠ   z"AsyncHTTP11Connection.is_connectedc                 C  ó   | j tjkS r   ©r,   r   r   r‡   r   r   r   Úis_availableø   s   z"AsyncHTTP11Connection.is_availablec                 C  s>   t  ¡ }| j}|d uo||k}| jtjko| j d¡}|p|S )NÚis_readable)rƒ   r„   r+   r,   r   r   r)   Úget_extra_info)r4   r†   Ú	expire_atÚkeepalive_expiredÚserver_disconnectedr   r   r   Úhas_expiredÿ   s   ÿz!AsyncHTTP11Connection.has_expiredc                 C  r�   r   rŽ   r‡   r   r   r   Úis_idle  ó   zAsyncHTTP11Connection.is_idlec                 C  r�   r   )r,   r   r   r‡   r   r   r   r‹     r—   zAsyncHTTP11Connection.is_closedÚstrc                 C  s$   t | jƒ}|›d| jj› d| j› �S )Nz, HTTP/1.1, ú, Request Count: )r˜   r(   r,   Únamer.   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(   r,   rš   r.   )r4   Ú
class_namer    r   r   r   Ú__repr__  s   
$zAsyncHTTP11Connection.__repr__c                 Ã  s   �| S r   r   r‡   r   r   r   Ú
__aenter__!  s   €z AsyncHTTP11Connection.__aenter__Úexc_typeútype[BaseException] | NoneÚ	exc_valueúBaseException | NoneÚ	tracebackútypes.TracebackType | Nonec                 Ã  s   �|   ¡ I d H  d S r   )r…   )r4   r¡   r£   r¥   r   r   r   Ú	__aexit__$  s   €zAsyncHTTP11Connection.__aexit__r   )r    r   r!   r   r"   r#   r$   r%   )r6   r   r$   r   )r6   r   r$   r%   )r^   rg   rV   r#   r$   r%   )r6   r   r$   rj   )r6   r   r$   rr   )rV   r#   r$   rv   ©r$   r%   )r    r   r$   rˆ   )r$   rˆ   )r$   r˜   )r$   r   )NNN)r¡   r¢   r£   r¤   r¥   r¦   r$   r%   )r   r   r   rz   r2   r5   rU   rH   rI   r[   rJ   ru   rl   rP   r…   rD   rŒ   r�   r•   r–   r‹   r›   rŸ   r    r§   r   r   r   r   r   )   s6    ü

B














ür   c                   @  s*   e Zd Zddd„Zdd
d„Zddd„ZdS )rN   Ú
connectionr   r6   r   r$   r%   c                 C  s   || _ || _d| _d S )NF)Ú_connectionÚ_requestÚ_closed)r4   r©   r6   r   r   r   r5   .  s   
z#HTTP11ConnectionByteStream.__init__rr   c                 C s  �d| j i}zYtdt| j |ƒ4 I d H š? t| jjdi |¤Žƒ4 I d H š}|2 z	3 d H W }|V  q&6 W d   ƒI d H  n1 I d H sAw   Y  W d   ƒI d H  W d S 1 I d H sXw   Y  W d S  tyˆ } ztƒ � |  ¡ I d H  W d   ƒ |‚1 s}w   Y  |‚d }~ww )Nr6   Úreceive_response_bodyr   )	r«   r   rG   r   rª   ru   rO   r   r…   )r4   rQ   re   rf   rT   r   r   r   Ú	__aiter__3  s&   €
 ÿ*ÿ2ÿ
ÿþ€úz$HTTP11ConnectionByteStream.__aiter__c              	   Ã  sj   �| j s3d| _ tdt| jƒ4 I d H š | j ¡ I d H  W d   ƒI d H  d S 1 I d H s,w   Y  d S d S )NTrC   )r¬   r   rG   r«   rª   rP   r‡   r   r   r   r…   B  s   €.ÿþz!HTTP11ConnectionByteStream.acloseN)r©   r   r6   r   r$   r%   )r$   rr   r¨   )r   r   r   r5   r®   r…   r   r   r   r   rN   -  s    

rN   c                   @  sR   e Zd Zd dd„Zd!d"dd„Zd!d#dd„Zd$dd„Z				d%d&dd„Zd'dd„Zd	S )(rM   r!   r   Úleading_datars   r$   r%   c                 C  s   || _ || _d S r   )Ú_streamÚ_leading_data)r4   r!   r¯   r   r   r   r5   J  s   
z!AsyncHTTP11UpgradeStream.__init__NÚ	max_bytesÚintrV   r#   c                 Ã  s>   �| j r| j d |… }| j |d … | _ |S | j ||¡I d H S r   )r±   r°   rk   )r4   r²   rV   Úbufferr   r   r   rk   N  s   €zAsyncHTTP11UpgradeStream.readr´   c                 Ã  s   �| j  ||¡I d H  d S r   )r°   rW   )r4   r´   rV   r   r   r   rW   V  s   €zAsyncHTTP11UpgradeStream.writec                 Ã  s   �| j  ¡ I d H  d S r   )r°   r…   r‡   r   r   r   r…   Y  s   €zAsyncHTTP11UpgradeStream.acloseÚssl_contextússl.SSLContextÚserver_hostnameú
str | Nonec                 Ã  s   �| j  |||¡I d H S r   )r°   Ú	start_tls)r4   rµ   r·   rV   r   r   r   r¹   \  s   €z"AsyncHTTP11UpgradeStream.start_tlsr›   r˜   ú
typing.Anyc                 C  s   | j  |¡S r   )r°   r‘   )r4   r›   r   r   r   r‘   d  r—   z'AsyncHTTP11UpgradeStream.get_extra_info)r!   r   r¯   rs   r$   r%   r   )r²   r³   rV   r#   r$   rs   )r´   rs   rV   r#   r$   r%   r¨   )NN)rµ   r¶   r·   r¸   rV   r#   r$   r   )r›   r˜   r$   rº   )	r   r   r   r5   rk   rW   r…   r¹   r‘   r   r   r   r   rM   I  s    

ürM   )*Ú
__future__r   ÚenumÚloggingÚsslrƒ   Útypesra   Úcollections.abcr   r/   Ú_backends.baser   Ú_exceptionsr   r   r   r	   r
   Ú_modelsr   r   r   Ú_synchronizationr   r   Ú_tracer   Ú_utilsr   Ú
interfacesr   Ú	getLoggerrG   rc   rd   ÚH11SendEventÚIntEnumr   r   rN   rM   r   r   r   r   Ú<module>   s0    
  