ó
    †>iz  ã                   óV   • S r SSKrSSKJrJr  SSKJr   " S S\R                  5      r	g)z*The module containing HTTPProxyDigestAuth.é    N)ÚcookiesÚutilsé   )Ú_digest_auth_compatc                   ó®   ^ • \ rS rSrSr\R                  " S\R                  S9rU 4S jr	\
S 5       r\R                  S 5       rU 4S jrS	 rS
 rSrU =r$ )ÚHTTPProxyDigestAuthé
   a7  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                 ó\   >• [         [        U ]
  " U0 UD6  SU l        U R	                  5         g )Nr   )Úsuperr   Ú__init__Ústale_rejectsÚinit_per_thread_state)ÚselfÚargsÚkwargsÚ	__class__s      €Úe/home/mande/repo/quber/.venv/lib/python3.13/site-packages/requests_toolbelt/auth/http_proxy_digest.pyr   ÚHTTPProxyDigestAuth.__init__   s,   ø€ ÜÔ! 4Ò1°4ÐB¸6ÒBØˆÔà×"Ñ"Õ$ó    c                 óR   • [        U SS 5      nUc  U R                  $ UR                  $ ©NÚ_thread_local©ÚgetattrÚ_stale_rejectsr   )r   Úthread_locals     r   r   Ú!HTTPProxyDigestAuth.stale_rejects   s.   € ä˜t _°dÓ;ˆØÑØ×&Ñ&Ð&Ø×)Ñ)Ð)r   c                 ó>   • [        U SS 5      nUc  Xl        g Xl        g r   r   )r   Úvaluer   s      r   r   r   "   s"   € ä˜t _°dÓ;ˆØÑØ"'Õà).Õ&r   c                 óL   >•  [         [        U ]  5         g ! [         a     g f = f)N)r   r   r   ÚAttributeError)r   r   s    €r   r   Ú)HTTPProxyDigestAuth.init_per_thread_state*   s(   ø€ ð	ÜÔ% tÑBÕDøÜó 	áð	ús   ƒ –
#¢#c                 óV  • UR                   S:X  Ga  U R                  S:  Ga  UR                  R                  S5      nUc  [	        S5      eU R
                  R                  U5      (       d  U$ [        R                  " U R
                  R                  SUSS95      U l
        SUR                  R                  ;   as  S	U R                  ;   ac  U R                  S	   R                  5       S
:X  a  U =R                  S-  sl        O,U R                  S	   R                  5       S:X  a  [	        S5      eUR                    UR                  5         UR                  R                  5       n[         R"                  " UR$                  UR                  UR&                  5        UR)                  UR$                  5        U R+                  UR,                  UR.                  5      UR                  S'   UR0                  R2                  " U40 UD6nUR4                  R7                  U5        XEl        U$ U$ )zzHandle HTTP 407 only once, otherwise give up

:param r: current response
:returns: responses, along with the new response
i—  é   zproxy-authenticatezRproxy 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_407ÚHTTPProxyDigestAuth.handle_4071   s°  € ð �=‰=˜CÔ D×$6Ñ$6¸Ô$:Ø—Y‘Y—]‘]Ð#7Ó8ˆFØ‰~ÜðJóKð Kð —Y‘Y—_‘_ V×,Ñ,Ø�ä×/Ò/Ø—	‘	—‘˜b &°�Ð2ó4ˆDŒIð
 &¨¯©×):Ñ):Ó:Ø˜tŸy™yÓ(Ø—9‘9˜WÑ%×+Ñ+Ó-°Ó7Ø×&Ò&¨!Ñ+Ö&à—Y‘Y˜wÑ'×-Ñ-Ó/°7Ó:Ü!Ð"?Ó@Ð@ð �IŠIØ�G‰GŒIØ—9‘9—>‘>Ó#ˆDÜ×*Ò*¨4¯=©=¸!¿)¹)ÀQÇUÁUÔKØ× Ñ  §¡Ô/à26×2JÑ2JØ—‘˜TŸX™Xó3'ˆD�L‰LÐ.Ñ/à—‘×"Ò" 4Ñ2¨6Ñ2ˆBØ�J‰J×Ñ˜aÔ ØŒJàˆIàˆHr   c                 óæ   • U R                  5         U R                  (       a3  U R                  UR                  UR                  5      UR
                  S'   UR                  SU R                  5        U$ )Nr(   Úresponse)r   Ú
last_noncer>   r?   r@   r-   Úregister_hookrI   )r   rE   s     r   Ú__call__ÚHTTPProxyDigestAuth.__call___   sU   € Ø×"Ñ"Ô$à�?�?Ø/3×/GÑ/GØ—‘˜!Ÿ%™%ó0ˆA�I‰IÐ+Ñ,ð 	
�‰˜
 D§O¡OÔ4Øˆr   )r   r4   r   )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__Ú__doc__ÚreÚcompileÚ
IGNORECASEr0   r   Úpropertyr   Úsetterr   rI   rO   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r   
   sf   ø† ñð �:Š:�j¨¯©Ñ6€Dõ%ð ñ*ó ð*ð ×Ññ/ó ð/õò,÷\ð r   r   )
rU   rV   Úrequestsr   r   r&   r   ÚauthÚHTTPDigestAuthr   © r   r   Ú<module>ra      s%   ðá 0Û 	ç #å )ô]˜$×-Ñ-õ ]r   