Your IP : 18.117.151.127


Current Path : /usr/lib/python2.7/site-packages/pip/_vendor/requests/
Upload File :
Current File : //usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyo

�
��abc@sdZddlZddlZddlZddlZddlZddlZddlmZddl	m
Z
mZmZddl
mZddlmZddlmZd	Zd
Zd�Zdefd
��YZdefd��YZdefd��YZdefd��YZdS(s]
requests.auth
~~~~~~~~~~~~~

This module contains the authentication handlers for Requests.
i����N(t	b64encodei(turlparsetstrt
basestring(textract_cookies_to_jar(tto_native_string(tparse_dict_headers!application/x-www-form-urlencodedsmultipart/form-datacCs�t|t�s:tjdj|�dt�t|�}nt|t�sttjdj|�dt�t|�}nt|t�r�|jd�}nt|t�r�|jd�}ndtt	dj
||f��j��}|S(sReturns a Basic Auth string.s�Non-string usernames will no longer be supported in Requests 3.0.0. Please convert the object you've passed in ({0!r}) to a string or bytes object in the near future to avoid problems.tcategorys�Non-string passwords will no longer be supported in Requests 3.0.0. Please convert the object you've passed in ({0!r}) to a string or bytes object in the near future to avoid problems.tlatin1sBasic t:(t
isinstanceRtwarningstwarntformattDeprecationWarningRtencodeRRtjointstrip(tusernametpasswordtauthstr((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyt_basic_auth_strs&
		%tAuthBasecBseZdZd�ZRS(s4Base class that all auth implementations derive fromcCstd��dS(NsAuth hooks must be callable.(tNotImplementedError(tselftr((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyt__call__Ks(t__name__t
__module__t__doc__R(((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyRHst
HTTPBasicAuthcBs2eZdZd�Zd�Zd�Zd�ZRS(s?Attaches HTTP Basic Authentication to the given Request object.cCs||_||_dS(N(RR(RRR((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyt__init__Rs	cCs:t|jt|dd�k|jt|dd�kg�S(NRR(tallRtgetattrtNoneR(Rtother((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyt__eq__VscCs||kS(N((RR#((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyt__ne__\scCs t|j|j�|jd<|S(Nt
Authorization(RRRtheaders(RR((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyR_s(RRRRR$R%R(((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyROs
			t
HTTPProxyAuthcBseZdZd�ZRS(s=Attaches HTTP Proxy Authentication to a given Request object.cCs t|j|j�|jd<|S(NsProxy-Authorization(RRRR'(RR((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyRgs(RRRR(((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyR(dstHTTPDigestAuthcBsVeZdZd�Zd�Zd�Zd�Zd�Zd�Zd�Z	d�Z
RS(	s@Attaches HTTP Digest Authentication to the given Request object.cCs%||_||_tj�|_dS(N(RRt	threadingtlocalt
_thread_local(RRR((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyRos		cCsat|jd�s]t|j_d|j_d|j_i|j_d|j_d|j_	ndS(Ntinitti(
thasattrR,tTrueR-t
last_noncetnonce_counttchalR"tpost
num_401_calls(R((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pytinit_per_thread_stateuscsN|jjd}|jjd}|jjjd�}|jjjd�}|jjjd�}d�|dkrzd}n|j�}|dks�|dkr�d�}	|	�n|d	kr�d
�}
|
�n�fd�}�dkr�dSd}t|�}
|
jpd}|
jr+|d
|
j7}nd|j||j	f}d||f}�|�}�|�}||jj
kr�|jjd7_nd|j_d|jj}t|jj�j
d�}||j
d�7}|tj�j
d�7}|tjd�7}tj|�j�d }|dkrJ�d|||f�}n|sl||d||f�}nP|dks�d|jd�kr�d|||d|f}|||�}ndS||j_
d|j||||f}|r�|d|7}n|r|d|7}n|r)|d|7}n|rF|d||f7}nd|S(s
        :rtype: str
        trealmtnoncetqopt	algorithmtopaquetMD5sMD5-SESScSs4t|t�r!|jd�}ntj|�j�S(Nsutf-8(R
RRthashlibtmd5t	hexdigest(tx((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pytmd5_utf8�stSHAcSs4t|t�r!|jd�}ntj|�j�S(Nsutf-8(R
RRR=tsha1R?(R@((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pytsha_utf8�scs�d||f�S(Ns%s:%s((tstd(t	hash_utf8(s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyt<lambda>�R.t/t?s%s:%s:%ss%s:%sis%08xsutf-8iitautht,s%s:%s:%s:%s:%ss>username="%s", realm="%s", nonce="%s", uri="%s", response="%s"s
, opaque="%s"s, algorithm="%s"s
, digest="%s"s , qop="auth", nc=%s, cnonce="%s"s	Digest %sN(R,R3tgetR"tupperRtpathtqueryRRR1R2RRttimetctimetosturandomR=RCR?tsplit(RtmethodturlR7R8R9R:R;t
_algorithmRARDtKDtentdigtp_parsedROtA1tA2tHA1tHA2tncvalueREtcnoncetrespdigtnoncebittbase((RGs=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pytbuild_digest_headersr						!cKs|jrd|j_ndS(s)Reset num_401_calls counter on redirects.iN(tis_redirectR,R5(RRtkwargs((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pythandle_redirect�s	cKs�d|jkodkns/d|j_|S|jjdk	r]|jjj|jj�n|jj	dd�}d|j
�kr~|jjdkr~|jjd7_tjdd	tj
�}t|jd|d
d��|j_|j|j�|jj�}t|j|j|j�|j|j�|j|j|j�|jd<|jj||�}|jj|�||_|Sd|j_|S(
so
        Takes the given response and tries digest-auth, if needed.

        :rtype: requests.Response
        i�i�iswww-authenticateR.tdigestisdigest tflagstcountR&N(tstatus_codeR,R5R4R"trequesttbodytseekR'RMtlowertretcompilet
IGNORECASERtsubR3tcontenttclosetcopyRt_cookiestrawtprepare_cookiesReRVRWt
connectiontsendthistorytappend(RRRgts_authtpattprept_r((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyt
handle_401�s.	$$
	cCs�|j�|jjr8|j|j|j�|jd<ny|jj�|j_	Wnt
k
rpd|j_	nX|jd|j
�|jd|j�d|j_|S(NR&tresponsei(R6R,R1ReRVRWR'RnttellR4tAttributeErrorR"t
register_hookR�RhR5(RR((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyR
s
"
cCs:t|jt|dd�k|jt|dd�kg�S(NRR(R RR!R"R(RR#((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyR$scCs||kS(N((RR#((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyR%$s(RRRRR6ReRhR�RR$R%(((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyR)ls		
	Z		,		(RRSRqRQR=R*Rtbase64RtcompatRRRtcookiesRt_internal_utilsRtutilsRtCONTENT_TYPE_FORM_URLENCODEDtCONTENT_TYPE_MULTI_PARTRtobjectRRR(R)(((s=/usr/lib/python2.7/site-packages/pip/_vendor/requests/auth.pyt<module>s$	,

?>