U
     Wh                     @   s   d dl Z d dlm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 ddlmZ d	e je
eZd
ZG dd deddddgZG dd dZeG dd dZeG dd dZG dd dZdS )    N)	dataclass)
namedtuple)Optional   )	__title____version__   )
ReplyErrorzPython/{0[0]}.{0[1]} {1}/{2}z
c                       sT   e Zd ZdZdeeed d fddZedeed ddd	Zed
ddZ  Z	S )	BasicAuthz!Http basic authentication helper. latin1)loginpasswordencodingreturnc                    sB   |d krt d|d kr t dd|kr0t dt | |||S )Nz"None is not allowed as login valuez%None is not allowed as password value:z5A ":" is not allowed in login (RFC 1945#section-11.1))
ValueErrorsuper__new__)clsr   r   r   	__class__ ^/var/www/html/arya_register/venvv2/lib/python3.8/site-packages/python_socks/_protocols/http.pyr      s    zBasicAuth.__new__)auth_headerr   r   c                 C   s   z| dd\}}W n tk
r0   tdY nX | dkrJtd| ztj|ddd|}W n tjk
r   td	Y nX z| d
d\}}W n tk
r   tdY nX | |||dS )z<Create a BasicAuth object from an Authorization HTTP header. r   z%Could not parse authorization header.basiczUnknown authorization method %sasciiT)validatezInvalid base64 encoding.r   zInvalid credentials.r   )	splitr   lowerbase64	b64decodeencodedecodebinasciiError)r   r   r   	auth_typeencoded_credentialsdecodedusernamer   r   r   r   r%   %   s"    zBasicAuth.decoder   c                 C   s.   d| j | jf | j}dt|| j S )zEncode credentials.z%s:%szBasic %s)r   r   r$   r   r"   	b64encoder%   )selfcredsr   r   r   r$   C   s    zBasicAuth.encode)r   r   )r   )
__name__
__module____qualname____doc__strr   classmethodr%   r$   __classcell__r   r   r   r   r
      s
   r
   r   r   r   c                   @   s:   e Zd ZdedddZdedddZed	d
dZdS )_Bufferutf-8r   c                 C   s   || _ t | _d S N)	_encoding	bytearray_buffer)r.   r   r   r   r   __init__J   s    z_Buffer.__init__r   )linec                 C   s.   |r| j || j | j td d S )Nr   )r<   extendr$   r:   CRLF)r.   r>   r   r   r   append_lineN   s    z_Buffer.append_liner,   c                 C   s
   t | jS r9   )bytesr<   )r.   r   r   r   dumpsT   s    z_Buffer.dumpsN)r8   )r   )r0   r1   r2   r4   r=   rA   rB   rC   r   r   r   r   r7   I   s   r7   c                   @   sD   e Zd ZU eed< eed< ee ed< ee ed< edddZdS )	ConnectRequesthostportr+   r   r,   c                 C   s   t  }|d| j d| j d |d| j d| j  |dt  | jrz| jrzt| j| j}|d|   |  |	 S )NzCONNECT r   z	 HTTP/1.1zHost: zUser-Agent: zProxy-Authorization: )
r7   rA   rE   rF   DEFAULT_USER_AGENTr+   r   r
   r$   rC   )r.   Zbuffauthr   r   r   rC   _   s    zConnectRequest.dumpsN)	r0   r1   r2   r4   __annotations__intr   rB   rC   r   r   r   r   rD   X   s
   
rD   c                   @   s2   e Zd ZU eed< eed< eed dddZdS )ConnectReplystatus_codemessagedatar   c           	      C   s   |st d|tddd }|dd}z| ^}}}W n" tk
rb   t d| Y nX zt|}W n" tk
r   t d| Y nX d	|}|d
kr| d	| }t ||d| ||dS )NzInvalid proxy responser   r   r   r8   surrogateescapezInvalid status line: zInvalid status code: r      )
error_code)rL   rM   )r	   r    r@   r$   r%   r   rJ   join)	r   rO   r>   versioncodereasonrL   Zstatus_messagemsgr   r   r   loadss   s"    
zConnectReply.loadsN)	r0   r1   r2   rJ   rI   r4   r5   rB   rX   r   r   r   r   rK   n   s   
rK   c                   @   s,   e Zd ZeedddZeedddZdS )
Connection)requestr   c                 C   s   |  S r9   )rC   )r.   rZ   r   r   r   send   s    zConnection.sendrN   c                 C   s
   t |S r9   )rK   rX   )r.   rO   r   r   r   receive   s    zConnection.receiveN)r0   r1   r2   rD   rB   r[   rK   r\   r   r   r   r   rY      s   rY   )sysdataclassesr   r"   r&   collectionsr   typingr   _versionr   r   errorsr	   formatversion_inforG   r@   r
   r7   rD   rK   rY   r   r   r   r   <module>   s(   4 