
    t                        S r SSKJr  SSKJr  SSKJr  SSKJr  SSKrSSKrSSKrSSK	r	SSK
r
SSKrSr SSKJr  SS	KJr  SS
KJr  SSKJr  \" 5       r\R(                  R-                  \\5      rSS jrg!   \R(                  R+                  \R(                  R-                  SS5      5      r SSKrSSKJr  S rS rSS jr Nq!   \R4                  " S5          N= f= f)zScript for reporting metrics.    )absolute_import)print_function)division)unicode_literalsNzmetrics.log)ConfigureCertsFile)GetGsutilStateDir)
GetNewHttp)CreateDirIfNeeded~z.gsutil)http_clientc                  .     " S S[         5      n U " 5       $ )z*Returns an httplib-based metrics reporter.c                   $    \ rS rSrS rSS jrSrg)#GetNewHttp.<locals>.HttplibReporter5   c                     g N )selfs    )platform/gsutil/gslib/metrics_reporter.py__init__,GetNewHttp.<locals>.HttplibReporter.__init__7   s    
    Nc                     [         R                  " USS  R                  S5      S   5      nUR                  X!X4S9  UR	                  5       nSUR
                  04$ )N   /r   )bodyheadersstatus)r   HTTPSConnectionsplitrequestgetresponser   )r   endpointmethodr   r   	https_conresponses          r   r!   +GetNewHttp.<locals>.HttplibReporter.request;   s[    !11(12,2D2DS2I!2LM)


F4

I**,(X__-/
/r   r   )NNN)__name__
__module____qualname____firstlineno__r   r!   __static_attributes__r   r   r   HttplibReporterr   5   s    		0r   r-   )object)r-   s    r   r	   r	   2   s    0F 0  r   c                      g r   r   r   r   r   r   r   G   s    
r   c                     [         R                  R                  U 5      (       d   [         R                  " X5        gg! [         a)  nUR
                  [
        R                  :w  a  e  SnAgSnAff = f)z5See the same-named method in gslib.utils.system_util.N)ospathexistsmakedirsOSErrorerrnoEEXIST)dir_pathmodees      r   r
   r
   J   sU    WW^^H%%	
++h
% &  	WW$ %	s   > 
A1A,,A1c                    [         R                  " 5       nUbH  UR                  < SSR                  S [	        S5       5       5      < 3n[         R                  " U5      nU=(       d    [
        n[        R                  R                  U5      n[        U5        [         R                  " USS9nUR                  U5        UR                  U5        [        U S5       n[        R                  " U5      nSSS5        [        R                   " U 5        [#        5         [%        5       n	W Hk  n
 S	U
R&                  0nU	R)                  U
R*                  U
R,                  U
R.                  US
9nUR1                  U
5        UR1                  SUS   S   5        Mm     g! , (       d  f       N= f! [2         a  nUR1                  U5         SnAM  SnAff = f)a  Sends the specified anonymous usage event to the given analytics endpoint.

Args:
    metrics_file_path: str, File with pickled metrics (list of tuples).
    log_level: int, The logging level of gsutil's root logger.
    log_file_path: str, The file that this module should write its logs to.
      This parameter is intended for use by tests that need to evaluate the
      contents of the file at this path.

N. c              3   j   #    U  H)  n[         R                  " [        R                  5      v   M+     g 7fr   )randomchoicestringascii_lowercase).0_s     r   	<genexpr> ReportMetrics.<locals>.<genexpr>h   s&      /A7?!f,,--xs   13r   w)r9   rbz
User-Agent)r$   r   r   zRESPONSE: %sr   r   )logging	getLoggernamejoinrangeLOG_FILE_PATHr1   r2   dirnamer
   FileHandler
addHandlersetLevelopenpickleloadremover   r	   
user_agentr!   r#   r$   r   debug	Exception)metrics_file_path	log_levellog_file_pathloggernew_namelog_file_parent_dirhandlermetrics_filemetricshttpmetricr   r&   r:   s                 r   ReportMetricsre   X   sy    & !++rww /A7<Qx/A (A BHx(F0=-6'(C8'G//)t$kk,'G %))	$f	v001gfoo%+]]#);;&-  /h ll6ll>8A;x#89  %$   ll1oos%   F,A'F)
F&)
G3G

G)i  r   )__doc__
__future__r   r   r   r   rI   r1   rT   r?   rA   sys_LOG_FILE_BASENAMEgslib.utils.boto_utilr   r   r	   gslib.utils.system_utilr
   _LOG_FILE_PARENT_DIRr2   
expanduserrL   r6   	six.movesr   exitrN   re   r   r   r   <module>rp      s    $ & %  '  	    
" 565.7*,d 13EF,i/ ++BGGLLi,HI&%*HHQKs#   A7 77C /CCC C 