o
    j                     @   sP   d dl Z d dlZG dd deZG dd deZG dd dZG dd	 d	ZdS )
    Nc                   @      e Zd ZdS )HTTPProxyAuthRequiredExceptionN__name__
__module____qualname__ r   r   /root/aizidognhua/tmp/workspace/projects/ec89d86c-575f-41c9-af57-ac45cbdbf775/venv/lib/python3.10/site-packages/asysocks/protocol/http.pyr          r   c                   @   r   )HTTPProxyAuthFailedNr   r   r   r   r	   r      r
   r   c                   @   s"   e Zd Zdd ZedddZdS )HTTPResponsec                 C   (   d | _ d | _d | _i | _i | _d | _d S N)versionstatusreasonheadersheaders_upperdataselfr   r   r	   __init__      
zHTTPResponse.__init__Nc              
      s4  zt  }tj| d|dI d H }|dd d }|d dd\}}}| |_t| |_| |_	|dd  D ]'}|
 d	krFq=|d
d\}}	| }
|	
  }||j|
< ||j|
 < q=d|jv rt|jd }tj| ||dI d H |_|d fW S  ty } z
d |fW  Y d }~S d }~ww Ns   

)timeouts   
r                 s   : zCONTENT-LENGTH)r   asynciowait_for	readuntilsplitdecoder   intr   r   stripr   r   upperreadexactlyr   	Exception)readerr   resptempr   r   r   hdr_rawkey_raw	value_rawkeyvaluerem_lener   r   r	   from_streamreader   s2   




zHTTPResponse.from_streamreaderr   )r   r   r   r   staticmethodr4   r   r   r   r	   r   
   s    r   c                   @   s2   e Zd Zdd Zdd Zdd Zed
dd	ZdS )HTTPRequestc                 C   r   r   )methodurir   r   r   r   r   r   r   r	   r   4   r   zHTTPRequest.__init__c                 C   sT   d| j | j| jf }| jD ]}|d|| j| f 7 }q|d7 }| jd ur(|d7 }|S )N
%s %s %s
%s: %s

z<DATA AVAILABLE>)r7   r8   r   r   r   r   txr   r   r	   __str__<   s   

zHTTPRequest.__str__c                 C   s^   d| j | j| jf }| jD ]}|d|| j| f 7 }q|d7 }| }| jd ur-|| j7 }|S )Nr9   r:   r;   )r7   r8   r   r   encoder   r<   r   r   r	   to_bytesE   s   


zHTTPRequest.to_bytesNc              
      s@  zt  }tj| d|dI d H }|d ur|| }|dd d }|d dd\}}}| |_| |_| |_|dd  D ]'}|	 d	krLqC|d
d\}	}
|	 }|
	  }||j
|< ||j| < qCd|jv rt|jd }tj| ||dI d H |_|d fW S  ty } z
d |fW  Y d }~S d }~ww r   )r6   r    r!   r"   r#   r$   r7   r8   r   r&   r   r   r'   r%   r(   r   r)   )r*   r   pre_datareqr,   r7   r8   r   r-   r.   r/   r0   r1   r2   r3   r   r   r	   r4   O   s6   





zHTTPRequest.from_streamreader)NN)r   r   r   r   r?   rA   r5   r4   r   r   r   r	   r6   3   s    	
r6   )r    ior)   r   r   r   r6   r   r   r   r	   <module>   s    )