o
    «©ZhP  ã                   @   sR   d Z ddlmZ ddlmZ ddlmZmZ G dd„ dejƒZ	G dd	„ d	e	ƒZ
d
S )z-The module containing the code for GuessAuth.é    )Úauth)Úcookiesé   )Ú_digest_auth_compatÚhttp_proxy_digestc                   @   s8   e Zd ZdZdd„ Zdd„ Zdd„ Zdd	„ Zd
d„ ZdS )Ú	GuessAuthz7Guesses the auth type by the WWW-Authentication header.c                 C   s   || _ || _d | _d | _d S ©N)ÚusernameÚpasswordr   Úpos)Úselfr	   r
   © r   úS/var/www/html/lang_env/lib/python3.10/site-packages/requests_toolbelt/auth/guess.pyÚ__init__   s   
zGuessAuth.__init__c                 C   s®   | j d ur|jj | j ¡ |j |j ¡  |j ¡ }t|dƒs$t	 
¡ |_t	 |j|j|j¡ | |j¡ t | j| j¡| _|  |¡}|jj|fi |¤Ž}|j |¡ ||_|S ©NÚ_cookies)r   ÚrequestÚbodyÚseekÚcontentÚrawÚrelease_connÚcopyÚhasattrr   ÚRequestsCookieJarr   Úextract_cookies_to_jarÚprepare_cookiesr   ÚHTTPBasicAuthr	   r
   Ú
connectionÚsendÚhistoryÚappend©r   ÚrÚkwargsÚprepÚ_rr   r   r   Ú_handle_basic_auth_401   s   





z GuessAuth._handle_basic_auth_401c                 C   sh   t  | j| j¡| _z| j ¡  W n	 ty   Y nw t| jdƒr*| jjd u r*d| j_| jj	|fi |¤ŽS )NÚnum_401_callsr   )
Úauth_compatÚHTTPDigestAuthr	   r
   r   Úinit_per_thread_stateÚAttributeErrorr   r(   Ú
handle_401©r   r#   r$   r   r   r   Ú_handle_digest_auth_401'   s   ýz!GuessAuth._handle_digest_auth_401c                 K   s>   |j  dd¡ ¡ }d|v r|  ||¡S d|v r|  ||¡S dS )z/Resends a request with auth headers, if needed.zwww-authenticateÚ ÚbasicÚdigestN)ÚheadersÚgetÚlowerr'   r/   )r   r#   r$   Zwww_authenticater   r   r   r-   :   s   ÿzGuessAuth.handle_401c                 C   sJ   | j d ur
|   |¡S z|j ¡ | _W n	 ty   Y nw | d| j¡ |S ©NÚresponse)r   r   Útellr   r,   Úregister_hookr-   ©r   r   r   r   r   Ú__call__E   s   

ÿzGuessAuth.__call__N)	Ú__name__Ú
__module__Ú__qualname__Ú__doc__r   r'   r/   r-   r;   r   r   r   r   r   	   s    r   c                       sJ   e Zd ZdZ		d‡ fdd„	Zdd„ Zdd„ Zd	d
„ Z‡ fdd„Z‡  Z	S )ÚGuessProxyAuthzZ
    Guesses the auth type by WWW-Authentication and Proxy-Authentication
    headers
    Nc                    s(   t t| ƒ ||¡ || _|| _d | _d S r   )Úsuperr@   r   Úproxy_usernameÚproxy_passwordÚ
proxy_auth)r   r	   r
   rB   rC   ©Ú	__class__r   r   r   W   s   
zGuessProxyAuth.__init__c                 C   s®   | j d ur|jj | j ¡ |j |j ¡  |j ¡ }t|dƒs$t	 
¡ |_t	 |j|j|j¡ | |j¡ t | j| j¡| _|  |¡}|jj|fi |¤Ž}|j |¡ ||_|S r   )r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ÚHTTPProxyAuthrB   rC   rD   r   r   r    r!   r"   r   r   r   Ú_handle_basic_auth_407^   s"   




ÿ
z%GuessProxyAuth._handle_basic_auth_407c                 C   sJ   t j| j| jd| _z| j ¡  W n	 ty   Y nw | jj|fi |¤ŽS )N)r	   r
   )	r   ZHTTPProxyDigestAuthrB   rC   rD   r   r+   r,   Ú
handle_407r.   r   r   r   Ú_handle_digest_auth_407s   s   þÿz&GuessProxyAuth._handle_digest_auth_407c                 K   s>   |j  dd¡ ¡ }d|v r|  ||¡S d|v r|  ||¡S d S )NzProxy-Authenticater0   r1   r2   )r3   r4   r5   rH   rJ   )r   r#   r$   Zproxy_authenticater   r   r   rI      s   ÿzGuessProxyAuth.handle_407c                    sV   | j d ur
|   |¡}z|j ¡ | _W n	 ty   Y nw | d| j¡ tt| ƒ 	|¡S r6   )
rD   r   r8   r   r,   r9   rI   rA   r@   r;   r:   rE   r   r   r;   ˆ   s   

ÿzGuessProxyAuth.__call__)NNNN)
r<   r=   r>   r?   r   rH   rJ   rI   r;   Ú__classcell__r   r   rE   r   r@   R   s    ÿ	r@   N)r?   Úrequestsr   r   r0   r   r)   r   ÚAuthBaser   r@   r   r   r   r   Ú<module>   s   I