
ˀXP                 @   so   d  Z  d d l m Z d d l m Z d d l m Z m Z Gd d   d e j  Z	 Gd d	   d	 e	  Z
 d
 S)z-The module containing the code for GuessAuth.    )auth)cookies   )_digest_auth_compathttp_proxy_digestc               @   sR   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   >/usr/lib/python3/dist-packages/requests_toolbelt/auth/guess.py__init__   s    			zGuessAuth.__init__c             C   s   |  j  d  k	 r% | j j j |  j   | j | j j   | j j   } t | d  sf t	 j
   | _ t	 j | j | j | j  | j | j  t j |  j |  j  |  _ |  j |  } | j j | |  } | j j |  | | _ | S)N_cookies)r
   requestbodyseekcontentrawrelease_conncopyhasattrr   RequestsCookieJarr   extract_cookies_to_jarprepare_cookiesr   Z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   s   t  j |  j |  j  |  _ y |  j j   Wn t k
 r@ Yn Xt |  j d  rq |  j j d  k rq d |  j _ |  j j	 | |  S)Nnum_401_callsr   )
auth_compatZ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   sW   | j  j d d  j   } d | k r7 |  j | |  Sd | k rS |  j | |  Sd 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   s^   |  j  d  k	 r |  j  |  Sy | j j   |  _ Wn t k
 rF Yn X| j 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(   r3   r   r   r   r   r   	   s   r   c                   sj   e  Z d  Z d Z d d d d   f d d  Z d d   Z d d   Z d	 d
   Z   f d d   Z   S)GuessProxyAuthzZ
    Guesses the auth type by WWW-Authentication and Proxy-Authentication
    headers
    Nc                s8   t  t |   j | |  | |  _ | |  _ d  |  _ d  S)N)superr8   r   proxy_usernameproxy_password
proxy_auth)r   r   r	   r:   r;   )	__class__r   r   r   W   s    		zGuessProxyAuth.__init__c             C   s   |  j  d  k	 r% | j j j |  j   | j | j j   | j j   } t | d  sf t	 j
   | _ t	 j | j | j | j  | j | j  t j |  j |  j  |  _ |  j |  } | j j | |  } | j j |  | | _ | S)Nr   )r
   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZHTTPProxyAuthr:   r;   r<   r   r   r   r   )r   r   r    r!   r"   r   r   r   _handle_basic_auth_407^   s     	z%GuessProxyAuth._handle_basic_auth_407c             C   sZ   t  j d |  j d |  j  |  _ y |  j j   Wn t k
 rF Yn X|  j j | |  S)Nr   r	   )	r   ZHTTPProxyDigestAuthr:   r;   r<   r   r&   r'   
handle_407)r   r   r    r   r   r   _handle_digest_auth_407s   s    		z&GuessProxyAuth._handle_digest_auth_407c             K   sW   | j  j d d  j   } d | k r7 |  j | |  Sd | k rS |  j | |  Sd  S)NzProxy-Authenticater*   r+   r,   )r-   r.   r/   r>   r@   )r   r   r    Zproxy_authenticater   r   r   r?      s
    zGuessProxyAuth.handle_407c                sr   |  j  d  k	 r |  j  |  } y | j j   |  _ Wn t k
 rH Yn X| j d |  j  t t |   j	 |  S)Nr0   )
r<   r   r1   r
   r'   r2   r?   r9   r8   r3   )r   r   )r=   r   r   r3      s    zGuessProxyAuth.__call__)	r4   r5   r6   r7   r   r>   r@   r?   r3   r   r   )r=   r   r8   R   s   	r8   N)r7   Zrequestsr   r   r*   r   r%   r   ZAuthBaser   r8   r   r   r   r   <module>   s
   I