o
    VÌhP  ã                   @   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   úp/var/www/html/construction_image-detection-poc/venv/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$   Ú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   )ÚsuperrA   r   Úproxy_usernameÚproxy_passwordÚ
proxy_auth)r   r	   r
   rC   rD   ©Ú	__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   ÚHTTPProxyAuthrC   rD   rE   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   ÚHTTPProxyDigestAuthrC   rD   rE   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   rI   rL   )r   r#   r$   Úproxy_authenticater   r   r   rK      s   ÿzGuessProxyAuth.handle_407c                    sV   | j d ur
|   |¡}z|j ¡ | _W n	 ty   Y nw | d| j¡ tt| ƒ 	|¡S r7   )
rE   r   r9   r   r,   r:   rK   rB   rA   r<   r;   rF   r   r   r<   ˆ   s   

ÿzGuessProxyAuth.__call__)NNNN)
r=   r>   r?   r@   r   rI   rL   rK   r<   Ú__classcell__r   r   rF   r   rA   R   s    ÿ	rA   N)r@   Úrequestsr   r   r0   r   r)   r   ÚAuthBaser   rA   r   r   r   r   Ú<module>   s   I