o
    #j/                     @  s2  U d Z ddlmZ ddlZddlZddlZddlZddlZddlZddl	m
Z
 ddlmZmZmZmZmZ ddlmZ ddlmZmZmZ dd	lmZ dd
lmZ ergddlmZ ddlmZ ddlmZmZ dZ de!d< dZ"de!d< d"ddZ#G dd dZ$G dd de$Z%G dd de%Z&G d d! d!e$Z'dS )#z]
requests.auth
~~~~~~~~~~~~~

This module contains the authentication handlers for Requests.
    )annotationsN)	b64encode)TYPE_CHECKINGAnyFinalcastoverload   )to_native_string)
basestringstrurlparse)extract_cookies_to_jar)parse_dict_header)	CookieJar)r   )PreparedRequestResponsez!application/x-www-form-urlencodedr   CONTENT_TYPE_FORM_URLENCODEDzmultipart/form-dataCONTENT_TYPE_MULTI_PARTusernamebytes | strpasswordreturnr   c                 C  s   t | tstjd| dtd t| } t |ts*tjdt|dtd t|}t | tr4| d} t |tr>|d}dtt	d
| |f  }|S )zReturns a Basic Auth string.zpNon-string usernames will no longer be supported in Requests 3.0.0. Please convert the object you've passed in (zC) to a string or bytes object in the near future to avoid problems.)categoryzpNon-string passwords will no longer be supported in Requests 3.0.0. Please convert the object you've passed in (latin1zBasic    :)
isinstancer   warningswarnDeprecationWarningr   typeencoder
   r   joinstrip)r   r   authstr r%   N/var/www/html/Deteccion_Ine/venv/lib/python3.10/site-packages/requests/auth.py_basic_auth_str"   s0   






r'   c                   @     e Zd ZdZdddZdS )	AuthBasez4Base class that all auth implementations derive fromrr   r   c                 C  s   t d)NzAuth hooks must be callable.)NotImplementedErrorselfr*   r%   r%   r&   __call__Q   s   zAuthBase.__call__Nr*   r   r   r   __name__
__module____qualname____doc__r.   r%   r%   r%   r&   r)   N       r)   c                   @  sf   e Zd ZU dZded< ded< eddd	Zeddd	Zddd	ZdddZdddZdddZ	dS ) HTTPBasicAuthz?Attaches HTTP Basic Authentication to the given Request object.r   r   r   r   r   Nonec                 C     d S Nr%   r-   r   r   r%   r%   r&   __init__[      zHTTPBasicAuth.__init__bytesc                 C  r8   r9   r%   r:   r%   r%   r&   r;   ]   r<   c                 C  s   || _ || _d S r9   )r   r   r:   r%   r%   r&   r;   `   s   
otherobjectboolc                 C  (   t | jt|dd k| jt|dd kgS Nr   r   allr   getattrr   r-   r>   r%   r%   r&   __eq__d   
   zHTTPBasicAuth.__eq__r   c                 C  
   | |k S r9   r%   rF   r%   r%   r&   __ne__l      
zHTTPBasicAuth.__ne__r*   r   c                 C     t | j| j|jd< |S )NAuthorizationr'   r   r   headersr,   r%   r%   r&   r.   o      zHTTPBasicAuth.__call__Nr   r   r   r   r   r7   r   r=   r   r=   r   r7   r   r   r   r   r   r7   r>   r?   r   r@   r>   r   r   r@   r/   )
r1   r2   r3   r4   __annotations__r   r;   rG   rJ   r.   r%   r%   r%   r&   r6   U   s   
 


r6   c                   @  r(   )	HTTPProxyAuthz=Attaches HTTP Proxy Authentication to a given Request object.r*   r   r   c                 C  rL   )NzProxy-AuthorizationrN   r,   r%   r%   r&   r.   w   rP   zHTTPProxyAuth.__call__Nr/   r0   r%   r%   r%   r&   rW   t   r5   rW   c                   @  s   e Zd ZU dZded< ded< ded< ded< d	ed
< ded< ded< ded< ed1ddZed2ddZd3ddZd4ddZd5ddZd6d"d#Z	d7d$d%Z
d8d'd(Zd9d,d-Zd:d.d/Zd0S );HTTPDigestAuthz@Attaches HTTP Digest Authentication to the given Request object.r   r   r   zthreading.local_thread_localr   
last_nonceintnonce_countzdict[str, str]chalz
int | Noneposnum_401_callsr   r7   c                 C  r8   r9   r%   r:   r%   r%   r&   r;      r<   zHTTPDigestAuth.__init__r=   c                 C  r8   r9   r%   r:   r%   r%   r&   r;      r<   c                 C  s   || _ || _t | _d S r9   )r   r   	threadinglocalrY   r:   r%   r%   r&   r;      s   c                 C  sD   t | jds d| j_d| j_d| j_i | j_d | j_d | j_d S d S )NinitT r   )hasattrrY   rb   rZ   r\   r]   r^   r_   )r-   r%   r%   r&   init_per_thread_state   s   z$HTTPDigestAuth.init_per_thread_statemethodurl
str | Nonec                   s  | j jd }| j jd }| j jd}| j jd}| j jd}d |du r*d}n| }|dks6|dkr>d5dd}	|	 n#|dkrJd5dd}
|
 n|dkrVd5dd}| n|dkrad5dd}|  du rgdS d6 fdd}d}t|}|jpxd}|jr|d|j 7 }| j d| d| j }| d| } |} |}|| j j	kr| j  j
d7  _
nd| j _
| j j
d }t| j j
d!}||d!7 }|t d!7 }|td"7 }tj|d#d$ dd% }|dkr | d| d| }|s||| d| }n"|d&ksd&|d'v r#| d| d| d(| }|||}ndS || j _	d)| j d*| d+| d,| d-| d.}|rG|d/| d.7 }|rR|d0| d.7 }|r]|d1| d.7 }|rk|d2| d3| d.7 }d4| S )7z
        :rtype: str
        realmnonceqop	algorithmopaqueNMD5zMD5-SESSxstr | bytesr   r   c                 S  &   t | tr
| d} tj| dd S Nutf-8Fusedforsecurity)r   r   r!   hashlibmd5	hexdigestro   r%   r%   r&   md5_utf8      

z4HTTPDigestAuth.build_digest_header.<locals>.md5_utf8SHAc                 S  rq   rr   )r   r   r!   rv   sha1rx   ry   r%   r%   r&   sha_utf8   r{   z4HTTPDigestAuth.build_digest_header.<locals>.sha_utf8zSHA-256c                 S  rq   rr   )r   r   r!   rv   sha256rx   ry   r%   r%   r&   sha256_utf8   r{   z7HTTPDigestAuth.build_digest_header.<locals>.sha256_utf8zSHA-512c                 S  rq   rr   )r   r   r!   rv   sha512rx   ry   r%   r%   r&   sha512_utf8   r{   z7HTTPDigestAuth.build_digest_header.<locals>.sha512_utf8sdc                   s    |  d| S )N:r%   )r   r   	hash_utf8r%   r&   KD   s   z.HTTPDigestAuth.build_digest_header.<locals>.KD/?r   r	   08xrs      Frt      auth,z:auth:z
username="z
", realm="z
", nonce="z", uri="z", response=""z
, opaque="z, algorithm="z
, digest="z, qop="auth", nc=z
, cnonce="zDigest )ro   rp   r   r   )r   r   r   r   r   r   )rY   r]   getupperr   pathqueryr   r   rZ   r\   r   r!   timectimeosurandomrv   r}   rx   split)r-   rf   rg   ri   rj   rk   rl   rm   
_algorithmrz   r~   r   r   r   entdigp_parsedr   A1A2HA1HA2ncvaluer   cnoncerespdignoncebitbaser%   r   r&   build_digest_header   s   





z"HTTPDigestAuth.build_digest_headerr*   r   kwargsr   c                 K  s   |j r	d| j_dS dS )z)Reset num_401_calls counter on redirects.r	   N)is_redirectrY   r_   )r-   r*   r   r%   r%   r&   handle_redirect  s   zHTTPDigestAuth.handle_redirectc           
      K  sP  d|j   krdk sn d| j_|S | jjdur*t|jjdd }dur*|| jj |jdd}d|	 v r| jjd	k r| j jd7  _t
jd
t
jd}t|jd|dd| j_|j |  |j }td|j}t||j|j || | tt|jtt|j}|r||jd< |jj|fi |}	|	j| ||	_|	S d| j_|S )zo
        Takes the given response and tries digest-auth, if needed.

        :rtype: requests.Response
        i  i  r	   Nseekzwww-authenticaterc   digest   zdigest )flags)countr   rM   ) status_coderY   r_   r^   rE   requestbodyrO   r   lowerrecompile
IGNORECASEr   subr]   contentclosecopyr   _cookiesr   rawprepare_cookiesr   r   rf   rg   
connectionsendhistoryappend)
r-   r*   r   r   s_authpatprepZ
cookie_jar_digest_auth_rr%   r%   r&   
handle_401  s8   	


zHTTPDigestAuth.handle_401r   c                 C  s   |    | jjr| tt|jtt|j}|r||jd< t	|j
dd  }d ur.| | j_nd | j_|d| j |d| j d| j_|S )NrM   tellresponser	   )re   rY   rZ   r   r   r   rf   rg   rO   rE   r   r^   register_hookr   r   r_   )r-   r*   r   r   r%   r%   r&   r.   A  s   
zHTTPDigestAuth.__call__r>   r?   r@   c                 C  rA   rB   rC   rF   r%   r%   r&   rG   Y  rH   zHTTPDigestAuth.__eq__c                 C  rI   r9   r%   rF   r%   r%   r&   rJ   a  rK   zHTTPDigestAuth.__ne__NrQ   rR   rS   )r   r7   )rf   r   rg   r   r   rh   )r*   r   r   r   r   r7   )r*   r   r   r   r   r   r/   rT   rU   )r1   r2   r3   r4   rV   r   r;   re   r   r   r   r.   rG   rJ   r%   r%   r%   r&   rX   |   s,   
 




o

0
rX   )r   r   r   r   r   r   )(r4   
__future__r   rv   r   r   r`   r   r   base64r   typingr   r   r   r   r   _internal_utilsr
   compatr   r   r   cookiesr   utilsr   http.cookiejarr   modelsr   r   r   rV   r   r'   r)   r6   rW   rX   r%   r%   r%   r&   <module>   s2    
,