
    .Phz                     T    d Z ddlZddlmZmZ ddlmZ  G d dej                  Z	dS )z*The module containing HTTPProxyDigestAuth.    N)cookiesutils   )_digest_auth_compatc                        e Zd ZdZ ej        dej                  Z fdZe	d             Z
e
j        d             Z
 fdZd Zd	 Z xZS )
HTTPProxyDigestAuthaO  HTTP digest authentication between proxy

    :param stale_rejects: The number of rejects indicate that:
        the client may wish to simply retry the request
        with a new encrypted response, without reprompting the user for a
        new username and password. i.e., retry build_digest_header
    :type stale_rejects: int
    zdigest )flagsc                 ~     t          t          |           j        |i | d| _        |                                  d S )Nr   )superr   __init__stale_rejectsinit_per_thread_state)selfargskwargs	__class__s      h/var/www/html/test/jupyter/venv/lib/python3.11/site-packages/requests_toolbelt/auth/http_proxy_digest.pyr   zHTTPProxyDigestAuth.__init__   sF    1!4((14B6BBB""$$$$$    c                 D    t          | dd           }|| j        S |j        S N_thread_localgetattr_stale_rejectsr   )r   thread_locals     r   r   z!HTTPProxyDigestAuth.stale_rejects   s+    t_d;;&&))r   c                 L    t          | dd           }|	|| _        d S ||_        d S r   r   )r   valuer   s      r   r   z!HTTPProxyDigestAuth.stale_rejects"   s5    t_d;;"'D).L&&&r   c                 z    	 t          t          |                                            d S # t          $ r Y d S w xY w)N)r   r   r   AttributeError)r   r   s    r   r   z)HTTPProxyDigestAuth.init_per_thread_state*   sM    	%t,,BBDDDDD 	 	 	DD	s   ', 
::c                    |j         dk    r| j        dk     r|j                            d          }|t	          d          | j                            |          s|S t          j        | j        	                    d|d                    | _
        d	|j        j        v rod
| j
        v rf| j
        d
                                         dk    r| xj        dz  c_        n2| j
        d
                                         dk    rt	          d          |j         |                                 |j                                        }t!          j        |j        |j        |j                   |                    |j                   |                     |j        |j                  |j        d	<    |j        j        |fi |}|j                            |           ||_        |S |S )zHandle HTTP 407 only once, otherwise give up

        :param r: current response
        :returns: responses, along with the new response
        i     zproxy-authenticateNzRproxy server violated RFC 7235:407 response MUST contain header proxy-authenticate r   )countProxy-AuthorizationstaletruefalsezUser or password is invalid)status_coder   headersgetIOError_patmatchr   parse_dict_headersubchalrequestlowercontentclosecopyr   extract_cookies_to_jar_cookiesrawprepare_cookiesbuild_digest_headermethodurl
connectionsendhistoryappend)r   rr   s_authprep_rs         r   
handle_407zHTTPProxyDigestAuth.handle_4071   s    =CD$6$:$:Y]]#788F~JK K K Y__V,, /	b&224 4DI
 &):::ty((9W%++--77&&!+&&&Yw'--//7::!"?@@@ IIGGIII9>>##D*4=!)QUKKK  ///262J2JTX3' 3'DL./""422622BJa   BJIHr   c                     |                                   | j        r(|                     |j        |j                  |j        d<   |                    d| j                   |S )Nr$   response)r   
last_noncer:   r;   r<   r)   register_hookrE   )r   rA   s     r   __call__zHTTPProxyDigestAuth.__call___   sa    ""$$$? 	/3/G/G!%0 0AI+, 	

DO444r   )__name__
__module____qualname____doc__recompile
IGNORECASEr,   r   propertyr   setterr   rE   rJ   __classcell__)r   s   @r   r   r   
   s          2:j666D% % % % % * * X* / / /    , , ,\      r   r   )
rN   rO   requestsr   r   r"   r   authHTTPDigestAuthr    r   r   <module>rY      s    0 0 				 # # # # # # # # ) ) ) ) ) )] ] ] ] ]$- ] ] ] ] ]r   