��Qc@s�ddlZddlZddlZddlZddlZddlZddlmZddlZddl Z ddl
Z
ddlZdej
fd��YZdejfd��YZd�Ze jed�Zery
ejZWqek
re�Zedd �ZqXnd
ejfd��YZd�Zd
�Zdejfd��YZer�dejfd��YZ dej!ej"fd��YZ#ndej$fd��YZ%dej&fd��YZ'gZ(dd�Z)dd�Z*dS(i�N(t_tpasswordmgrcBs,eZd�Zd�Zd�Zd�ZRS(cCstjj|�||_dS(N(turllib2tHTTPPasswordMgrWithDefaultRealmt__init__tui(tselfR((s1/sys/lib/python2.7/site-packages/mercurial/url.pyRsc Cs�tjj|||�}|\}}|rJ|rJ|j||�||fS|sX|r�tj|j||�}|r�|\}}|jd�|jd�}}|jjd|�q�n|s�|r||jj �s�jtd���n|jj
td��|jj
td�|�|rC|jj
td�|�n|jjtd�d d�}|s||jj�}q|n|j||||�|j||�||fS(
Ntusernametpasswords#using auth.%s.* for authentication
shttp authorization requiredshttp authorization required
s
realm: %s
s user: %s
suser:tdefault(RRtfind_user_passwordt_writedebugthttpconnectionmodtreadauthforuriRtgettdebugtinteractivetutiltAbortRtwritetprompttNonetgetpasstadd_password( Rtrealmtauthuritauthinfotusertpasswdtrestgrouptauth((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR
s2
cCs@td�}|jj|||r1dt|�p4df�dS(Ns http auth: user %s, password %s
t*snot set(RRRtlen(RRRtmsg((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR4scCstjj|d|�S(N(RRR
R(RR((s1/sys/lib/python2.7/site-packages/mercurial/url.pytfind_stored_password8s (t__name__t
__module__RR
RR#(((s1/sys/lib/python2.7/site-packages/mercurial/url.pyRs tproxyhandlercBseZd�Zd�ZRS(cCs|jdd�ptjd�}|r�|jd�pB|jd�sVd|d}ntj|�}|js�|jdd�|_|jdd�|_nd d
g}|jg|j dd�D]}|j
�^q��|jgtjdd
�jd�D]$}|j�r�j�j
�^q�|j
dd�rDg|_n ||_t|�}i|d6|d6}|jd|j|jf�ni}|jdd�r�dddgD]:}y |tjkr�tj|=nWq�tk
r�q�Xq�Wntjj||�||_dS(Nt
http_proxythostshttp:shttps:shttp://t/RRt localhosts 127.0.0.1tnotno_proxytt,talwaysthttpthttpssproxying through http://%s:%s
t
HTTP_PROXY(tconfigtostgetenvt
startswithRturlRRtextendt
configlisttlowertsplittstript
configbooltno_listtstrRR(tporttenvirontOSErrorRtProxyHandlerRR(RRtproxyurltproxyR>tptproxiestenv((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR=s@! ) %
css|j�jd�d}||jkr,dS|j�d�f�fd��Y}||_tjj||||�S(Nt:it_requestcseZ�fd�ZRS(cs4|j�dkr!|j�}n�j|||�S(Nsproxy-authorization(R:R<t
add_header(Rtkeytval(t baseclass(s1/sys/lib/python2.7/site-packages/mercurial/url.pyRKvs(R$R%RK((RN(s1/sys/lib/python2.7/site-packages/mercurial/url.pyRJus(tget_hostR;R>Rt __class__RRCt
proxy_open(RtreqREttype_R(RJ((RNs1/sys/lib/python2.7/site-packages/mercurial/url.pyRQms (R$R%RRQ(((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR&<s 0cs�fd�}|S(NcsZt|tj�rI|jd�x4tj|�D]}�||�q/Wn
�||�dS(Ni(t
isinstanceRthttpsendfiletseekRt
filechunkiter(Rtdatatchunk(torgsend(s1/sys/lib/python2.7/site-packages/mercurial/url.pyt _sendfiles
((RZR[((RZs1/sys/lib/python2.7/site-packages/mercurial/url.pyt
_gen_sendfile~s tHTTPSHandlerc
Cs�d}|\}}x�tj||dtj�D]�}|\}}} }
}d}y\tj||| �}|tk r�|j|�n|r�|j|�n|j|�|SWq.tjk
r�}|dk r�|j �q�q.Xq.Wtj|��dS(Ns!getaddrinfo returns an empty listi(
tsockettgetaddrinfotSOCK_STREAMRt_GLOBAL_DEFAULT_TIMEOUTt
settimeouttbindtconnectterrortclose(
taddressttimeouttsource_addressR"R(R@Rtaftsocktypetprotot canonnametsatsock((s1/sys/lib/python2.7/site-packages/mercurial/url.pyt_create_connection�s""
thttpconnectioncBs,eZeejj�Zd�Zd�ZRS(cCs�trs|jrstjtjtj�|_|jj|j|jf�t |�r�t
j|jdd�|_q�nt
jj|�dS(N(t has_httpstrealhostportR^tAF_INETR`RoRdR(R@t_generic_proxytunneltsslutiltssl_wrap_socketRt keepalivetHTTPConnection(R((s1/sys/lib/python2.7/site-packages/mercurial/url.pyRd�s!cCsKt|dd�}|r;|jr.|j�nd|_|Stjj|�S(Ntproxyres(tgetattrRt
will_closeRfRzRxRytgetresponse(RRz((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR}�s
(R$R%R\RxRytsendRdR}(((s1/sys/lib/python2.7/site-packages/mercurial/url.pyRq�s
cCs�t|dd�}|r>|d d kr5d|}nt}n|j�}t}|sh||j�kr�tj|�}|s�|jdkr�dj |j
|jp�dg�|_|j
j�|_
|j
j|jj�dSnd|_d|_
dS(
Nt_tunnel_hostishttp://shttps:/shttps://R1RIt443(shttp://shttps:/(R{RtTruetget_selectortFalsetget_full_urlRR7tschemetjoinR(R@Rstheaderstcopytupdatetparentt
addheaders(thandlerthRRttunnel_hostt
new_tunneltu((s1/sys/lib/python2.7/site-packages/mercurial/url.pyt_generic_start_transaction�s
$ c
Cs�tg|jD].}|j�jd�r
||j|f^q
�}|j|j|j�|jd|j�x%|j �D]}|jd|�q{W|jd�|j
|jd|jd|j
�}x^tr'|j�\}}}|tjkr�x)tr#|jj�j�}|s��Wq�W||_|j�|_|jdkrx)trz|jj�} | dkrRPqRqRWtS|dkr�d |_nB|jd
�r�d|_n'|dkr�d
|_ntj|��|jd
krd|_d|_d|_tjtj��|_ t!Stj|j�|_ d|j _|j j"d�}
|
r|
j�dkrd|_d|_#n d|_|j$�|_|j j"d�}|r|jryt%|�|_Wnt&k
r�d|_qX|jdkrd|_qn d|_|tj'ksY|tj(ksYd|koEdknsY|j
dkred|_n|jr�|jr�|jdkr�d|_n||_)t!S(Nsproxy-sCONNECT %s HTTP/1.0
s%s: %s
s
tstricttmethodi�sHTTP/1.0i
sHTTP/1.isHTTP/0.9i iistransfer-encodingtchunkedscontent-lengthidtHEAD(*tdictR�R:R6t
_set_hostportR(R@R~Rst iteritemstresponse_classRoR�t_methodR�t_read_statusthttplibtCONTINUEtfptreadlineR<tstatustreasontversiontUnknownProtocolRtlengthR�R|tHTTPMessaget cStringIOtStringIOR"R�t getheadert
chunk_leftt_check_closetintt
ValueErrort
NO_CONTENTtNOT_MODIFIEDRz(RtxtproxyheaderstheaderRR�R�R�tskiptlinettrencR�((s1/sys/lib/python2.7/site-packages/mercurial/url.pyRu�s�1
thttphandlercBseZd�Zd�ZRS(cCs|jt|�S(N(tdo_openRq(RRR((s1/sys/lib/python2.7/site-packages/mercurial/url.pyt http_open:scCs&t|||�tjj|||�S(N(R�RxtHTTPHandlert_start_transaction(RR�RR((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR�=s(R$R%R�R�(((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR�9s thttpsconnectioncBs;eZejZeej�Zeje j
�Zd�ZRS(cCs�t|j|jf�|_|j}|jrSt|�|jjdd�d}ntj|j|j |j
tj|j|��|_tj
|j|�|j�dS(NRIii(RpR(R@RoRsRutrsplitRvRwtkey_filet cert_filet sslkwargsRt validator(RR(((s1/sys/lib/python2.7/site-packages/mercurial/url.pyRdHs
(
R$R%RxtHTTPResponseR�R\tsafesendR~twrapgetresponseR�tHTTPSConnectionR}Rd(((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR�Bs thttpshandlercBs/eZd�Zd�Zd�Zdd�ZRS(cCs?tjj|�tjj|�||_t|j�|_dS(N(RxtKeepAliveHandlerRRR]RRtpwmgr(RR((s1/sys/lib/python2.7/site-packages/mercurial/url.pyRUs cCs&t|||�tjj|||�S(N(R�RxR�R�(RR�RR((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR�[scCs�|j�}|jj|�\}}tj|j||�}|rn|\}}||_|jjd|�n d|_|j |j
|�S(Ns#using auth.%s.* for authentication
(R�R�R#RR
RRRRR�t_makeconnection(RRRR7RRRRR((s1/sys/lib/python2.7/site-packages/mercurial/url.pyt
https_open_s c Os�d}d}t|�dkr+|d}nt|�dkrJ|d}n|d}|jr�d|jkr�d|jkr�|jd}|jd}nt||||||�}|j|_|S(NiiiRLtcert(RR!RR�R(RR(R@targstkwargstkeyfiletcertfiletconn((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR�ms
'
N(R$R%RR�R�RR�(((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR�Ts thttpdigestauthhandlercBs#eZd�Zd�Zd�ZRS(cOs#tjj|||�d|_dS(N(RtHTTPDigestAuthHandlerRRtretried_req(RR�R�((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR�scCsdS(N((R((s1/sys/lib/python2.7/site-packages/mercurial/url.pytreset_retry_count�scCs�||jk r$||_d|_ny tjj|||||�SWn6tk
r|}|jd}|jd�rvdS�nXdS(Nis'AbstractDigestAuthHandler doesn't know (R�tretriedRR�thttp_error_auth_reqedR�R�R6(Rtauth_headerR(RRR�tinsttarg((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR��s
(R$R%RR�R�(((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR��s thttpbasicauthhandlercBs#eZd�Zd�Zd�ZRS(cOs#tjj|||�d|_dS(N(RtHTTPBasicAuthHandlerRRR�(RR�R�((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR�scCsdS(N((R((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR��scCs@||jk r$||_d|_ntjj|||||�S(Ni(R�R�RR�R�(RR�R(RRR�((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR��s
(R$R%RR�R�(((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR��s cCsM|jddt�r3tj|t|��g}n(t�g}tr[|jt|��n|jt |��t|�}|dk r�|j|�|dd!\}}|jd||r�dt
|�p�df�n|jt|�t|�f�|jgtD]}|||�^q�tj|�}d
g|_|jjd�|S(se
construct an opener suitable for urllib2
authinfo will be added to the password manager
Rtusehttp2iis http auth: user %s, password %s
R snot sets
User-agentsmercurial/proto-1.0tAcceptsapplication/mercurial-0.1N(s
User-agentsmercurial/proto-1.0(R�sapplication/mercurial-0.1(R=R�Rthttp2handlerRR�RrtappendR�R&RRRR!R8R�R�thandlerfuncsRtbuild_openerR�(RRthandlerstpassmgrRRR�topener((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR��s&
')cCs�tj|�}|jr?|jj�|_|j�\}}n4tjtjj|��}dt j
|�}d}t||�j
||�S(Nsfile://(RR7R�R:RtnormpathR4tpathtabspathturllibtpathname2urlRR�topen(Rturl_RXR�RR�((s1/sys/lib/python2.7/site-packages/mercurial/url.pyR��s (+R�RR�R4R^R�ti18nRRxRRvRqRRRRCR&R\tsafehasattrRrtcreate_connectionRptAttributeErrortobjectRaRRyR�RuR�R�R�R�R�R]R�R�R�R�R�R�R�R�(((s1/sys/lib/python2.7/site-packages/mercurial/url.pyt<module>
s4H$-B
b".
|