o
    믪gP                     @   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   X/var/www/html/chatdoc2/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