o
    ¹e  ã                   @   s²   d dl Z e jredƒjZnedƒZd dlmZ d dlmZ d dlZ	G dd„ dej
ƒZG dd	„ d	ejƒZejZG d
d„ dejƒZzd dlZ	W n   Y nG dd„ deƒZdd„ ZdS )é    Nzhttp.clientÚhttplib)Úresponse)Úheaderc                       s   e Zd Z‡ fdd„Z‡  ZS )ÚHTTPLibHeadersc                    s,   t t| ƒ |¡}t|ttfƒrd |¡S |S )Nz, )Úsuperr   Ú__getitem__Ú
isinstanceÚlistÚtupleÚjoin)ÚselfÚkeyÚvalue©Ú	__class__© úHD:\Projects\ConvertPro\env\Lib\site-packages\geventhttpclient/httplib.pyr      s   
zHTTPLibHeaders.__getitem__)Ú__name__Ú
__module__Ú__qualname__r   Ú__classcell__r   r   r   r   r      s    r   c                       s²   e Zd Z		d#‡ fdd„	Zedd„ ƒZedd	„ ƒZed
d„ ƒZedd„ ƒZedd„ ƒZ	dd„ Z
dd„ Zdd„ Zdd„ Zd$‡ fdd„	Zd$dd„Zdd„ Zedd „ ƒZd!d"„ Z‡  ZS )%ÚHTTPResponseÚGETr   Fc                    s6   |d u rd}n|  ¡ }tt| ƒj|fd|i|¤Ž d S )Nr   Úmethod)Úupperr   r   Ú__init__)r   Úsockr   ÚstrictÚ
debuglevelÚ	bufferingÚkwr   r   r   r      s    zHTTPResponse.__init__c                 C   s"   t | dƒr| jS t| jƒ| _| jS )NÚ_msg)Úhasattrr!   r   Ú_headers_index©r   r   r   r   Úmsg    s   
zHTTPResponse.msgc                 C   s   | S ©Nr   r$   r   r   r   Úfp'   s   zHTTPResponse.fpc                 C   s   |   ¡ }|dkr
dS dS )NzHTTP/1.1é   é
   )Zget_http_version)r   Úvr   r   r   Úversion+   s   zHTTPResponse.versionc                 C   ó   | j S r&   )Ústatus_coder$   r   r   r   Ústatus2   ó   zHTTPResponse.statusc                 C   r,   r&   )r%   r$   r   r   r   Úreason6   r/   zHTTPResponse.reasonc                 C   s   | j | j| jfS r&   )r+   r-   r%   r$   r   r   r   Ú_read_status:   ó   zHTTPResponse._read_statusc                 C   s   d S r&   r   r$   r   r   r   Úbegin=   s   zHTTPResponse.beginc                 C   s   |   ¡  d S r&   )Úreleaser$   r   r   r   Úclose@   s   zHTTPResponse.closec                 C   s
   | j d u S r&   )Ú_sockr$   r   r   r   ÚisclosedC   ó   
zHTTPResponse.isclosedNc                    s   t t| ƒ |¡S r&   )r   r   Úread)r   Úamtr   r   r   r9   F   r2   zHTTPResponse.readc                 C   s   |   | ¡ |¡S r&   )ÚgetÚlower)r   ÚnameÚdefaultr   r   r   Ú	getheaderI   r2   zHTTPResponse.getheaderc                 C   s
   | j  ¡ S r&   )r#   Úitemsr$   r   r   r   Ú
getheadersL   r8   zHTTPResponse.getheadersc                 C   s   | j o|  ¡  S r&   )Zmessage_completeÚshould_keep_aliver$   r   r   r   Ú
will_closeO   s   zHTTPResponse.will_closec                 C   s
   |   ¡  S r&   )rB   r$   r   r   r   Ú_check_closeS   r8   zHTTPResponse._check_close)r   r   r   Fr&   )r   r   r   r   Úpropertyr%   r'   r+   r.   r0   r1   r3   r5   r7   r9   r?   rA   rC   rD   r   r   r   r   r   r      s0    ÿ






r   c                   @   s    e Zd ZeZdd„ Zdd„ ZdS )ÚHTTPConnectionc                 O   s0   t j| g|¢R i |¤Ž t| dƒsd | _d S d S )NÚsource_address)ÚHTTPLibConnectionr   r"   rG   )r   Úargsr    r   r   r   r   ^   s   

ÿzHTTPConnection.__init__c                 C   s4   t j | j| jf| j| j¡| _| jr|  	¡  d S d S r&   )
ÚgeventÚsocketÚcreate_connectionÚhostÚportÚtimeoutrG   r   Ú_tunnel_hostÚ_tunnelr$   r   r   r   Úconnectd   s   
þÿzHTTPConnection.connectN)r   r   r   r   Úresponse_classr   rR   r   r   r   r   rF   Z   s    rF   c                   @   s"   e Zd ZdZddd„Zdd„ ZdS )ÚHTTPSConnectioni»  Nc                 K   s&   t j| ||fi |¤Ž || _|| _d S r&   )rF   r   Úkey_fileÚ	cert_file)r   rM   rN   rU   rV   r    r   r   r   r   u   s   
zHTTPSConnection.__init__c                 C   sJ   t j | j| jf| j| j¡}| jr|| _|  	¡  t j
 || j| j¡| _dS )z(Connect to a host on a given (SSL) port.N)rJ   rK   rL   rM   rN   rO   rG   rP   r   rQ   ÚsslÚwrap_socketrU   rV   )r   r   r   r   r   rR   z   s   ÿ

ÿzHTTPSConnection.connect)NNN)r   r   r   Údefault_portr   rR   r   r   r   r   rT   q   s    
rT   c                   C   s.   t t_ tt_ztt_W d S  ty   Y d S w r&   )rF   r   r   rT   Ú	NameErrorr   r   r   r   Úpatch†   s   ÿr[   )ÚsixÚPY3Ú
__import__Úclientr   Zgeventhttpclientr   r   Zgevent.socketrJ   ZHeadersr   ZHTTPSocketResponser   rF   rH   Z
gevent.sslrT   r[   r   r   r   r   Ú<module>   s"    
A