
    q&f                         d dl Z ddlmZ ddlmZ ddlmZmZ ddlmZ ej                  Z	ej                  Z
 G d d      Zd	 Zy)
    N   )_)open)pycompatutil)urlutilc                   .    e Zd ZdZd Zd Zd Zd Zd Zy)httpsendfilezThis is a wrapper around the objects returned by python's "open".

    Its purpose is to send file-like objects via HTTP.
    It do however not define a __len__ attribute because the length
    might be more than Py_ssize_t can handle.
    c                    || _         t        |i || _        | j                  j                  | _        | j                  j                  | _        | j                  j
                  | _        t        j                  | j                  j                               j                  | _
        d| _        | j                         | _        y )Nr   )uir   _dataseekclosewriteosfstatfilenost_sizelength_pos_makeprogress	_progress)selfr   argskwargss       :/usr/lib/python3/dist-packages/mercurial/httpconnection.py__init__zhttpsendfile.__init__%   s    4*6*
JJOO	ZZ%%
ZZ%%
hhtzz0023;;	++-    c                     | j                   j                  t        d      t        d      | j                  dz  dz        S )Ns   sendings   kb      )unittotal)r   makeprogressr   r   r   s    r   r   zhttpsendfile._makeprogress/   s=     ww##jM%1Dq1H $ 
 	
r   c                     | j                   j                  |i |}|s| j                  j                          |S | xj                  t        |      z  c_        | j                  j                  | j                  dz         |S )Nr    )r   readr   completer   lenupdate)r   r   r   rets       r   r'   zhttpsendfile.read9   se    djjoot.v.NN##%J		SX	dii4/0
r   c                     | S N r%   s    r   	__enter__zhttpsendfile.__enter__B   s    r   c                 $    | j                          y r-   )r   )r   exc_typeexc_valexc_tbs       r   __exit__zhttpsendfile.__exit__E   s    

r   N)	__name__
__module____qualname____doc__r   r   r'   r/   r4   r.   r   r   r
   r
      s     .
r   r
   c                    t        j                  |      }i }| j                  d      D ]q  \  }}|dv rd|vr| j                  t	        d      |z         -|j                  dd      \  }}|j                  |i       }|dv rt        j                  |      }|||<   s |j                  dd      \  }	}
d }d}d }|j                         D ]4  \  }}|r||j                  d	|      k7  r|j                  d
      }|s3t        j                  |      }|j                  r|j                  |k7  rdd |_        t        |      }|j                  dd      }t!        |      dkD  r|d   g|d   }}n#|j                  d      xs dj                         }|dk(  s|
j#                  |      st!        |      |kD  st!        |      |k(  s|rd	|v s|	|v st!        |      }||f}|j                  d	      }|s,|r0||d	<   7 |S )Ns   auth)s
   cookiefile   .s!   ignoring invalid [auth] key '%s'
r   )   usernames   certs   keys   ://r   r;   s   prefixs   schemess   https   *)r   bytesurlconfigitemswarnr   rsplit
setdefaultr   
expandpathsplititemsgetr   urluserbytesr)   
startswith)r   urirG   groupskeyvalgroupsettinggdictschemehostpathbestuserbestlenbestauthauthprefix	prefixurlpschemess                      r   readauthforurir[   J   s   


C
 CFNN7+ S""s?GGA;<sBCD!,w!!%,44//#&Cg yy+FHHGH||~ ))tDDHH[$77 )$KK'	>>inn4  	y!LL#q6A: tfadVGxx
+7x>>@Gt^x226:Fg%K7*$#t+ '!&kGd{Hxx,HH$([!S))T Or   )r   i18nr   r   r    r   utilsr   urlerrurlreqr
   r[   r.   r   r   <module>ra      s?    
  
 
	) )Z@r   