ó
Ò:\c           @  sä   d  Z  d d l m Z m Z m Z d d l Z d d l Z d d l m Z	 d d l
 Z
 e	 d e f d „  ƒ  YZ d e f d „  ƒ  YZ d	 e f d
 „  ƒ  YZ d d „ Z e d k rà e e j ƒ j e j j ƒ  ƒ e d ƒ n  d S(   s   HTTP log used in testng.iÿÿÿÿ(   t   divisiont   print_functiont   with_statementN(   t	   cStringIOt   BufferTranslatorc           B  sV   e  Z d  Z g  Z e d „  ƒ Z e d „  ƒ Z d „  Z d „  Z d „  Z	 d „  Z
 RS(   sD   Provides a buffer-compatible interface for filtering buffer content.c         C  s6   t  j r% |  j d ƒ }  |  j d ƒ S|  j d ƒ Sd S(   s   Strip slashes.s   UTF-8t   unicode_escapet   string_escapeN(   t   sixt   PY3t   encodet   decode(   t   content(    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyt   stripslashes&   s    	c         C  s'   t  j r |  j d ƒ S|  j d ƒ Sd S(   s   Add slashes.R   R   N(   R   R   R	   (   R   (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyt
   addslashes/   s    	c         C  s"   | |  _  t | d d ƒ |  _ d S(   s   Init.t   encodingN(   t   outputt   getattrt   NoneR   (   t   selfR   (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyt   __init__7   s    	c         C  s#   |  j  | ƒ } |  j j | ƒ d S(   s   Write.N(   t	   translateR   t   write(   R   R   (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyR   <   s    c         C  s=   x6 |  j  D]+ \ } } | j | ƒ } | r
 | | ƒ Sq
 W| S(   s
   Translate.(   t   parserst   match(   R   t   linet   patternt   methodR   (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyR   A   s
    c         C  s   d S(   s   Flush.N(    (   R   (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyt   flushI   s    (   t   __name__t
   __module__t   __doc__R   t   staticmethodR   R   R   R   R   R   (    (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyR   !   s   				t   LineBufferTranslatorc           B  s)   e  Z d  Z d „  Z d „  Z d „  Z RS(   sæ   
    Line buffer implementation supports translation of line-format input.

    Works even when input is not already line-buffered. Caches input until
    newlines occur, and then dispatches translated input to output buffer.
    c         O  s&   g  |  _  t t |  ƒ j | | Ž  d S(   s   Init.N(   t   _linependingt   superR    R   (   R   t   argst   kwargs(    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyR   V   s    	c         C  sÖ   | j  t ƒ } d } x‘ t d t | ƒ ƒ D]z } | } | | j d ƒ r+ t |  j ƒ rk d j |  j ƒ pn d } |  j j |  j	 | | | ƒ ƒ |  j d 3d } q+ q+ W| rÒ | d k rÒ |  j j
 | | ƒ n  d S(   s   Write.i    s   
t    iÿÿÿÿN(   t
   splitlinest   Truet   ranget   lent   endswithR!   t   joinR   R   R   t   append(   R   t   _inputt   linest   lastt   it   prefix(    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyR   [   s    '!
c         C  s;   t  |  j ƒ r7 |  j j |  j d j |  j ƒ ƒ ƒ n  d S(   s   Delete method.R%   N(   R)   R!   R   R   R   R+   (   R   (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyt   __del__l   s    (   R   R   R   R   R   R2   (    (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyR    N   s   		t   HTTPTranslatorc           B  sb   e  Z d  Z e j d ƒ Z e j d ƒ Z e j d ƒ Z e j d ƒ Z e	 d „  ƒ Z
 d „  Z RS(   s¡   
    Translates output from |urllib2| HTTPHandler(debuglevel = 1).

    It translates into HTTP-compatible, readible text structures for human
    analysis.
    s.   ^(?:([a-z]+):)\s*(\'?)([^\r\n]*)\2(?:[\r\n]*)$s   (\r?\n|(?:\\r)?\\n)s)   ^(POST|GET|HEAD|DELETE|PUT|TRACE|OPTIONS)s   &([a-z0-9]+)=c         C  s   |  j  j d | ƒ S(   s   Spacer.s    &\1= (   t   RE_PARAMETER_SPACERt   sub(   t   clsR   (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyt   spacer   s    c         C  s   |  j  j | ƒ } | r‹ | j d ƒ } | j d ƒ } | d k rS d |  j | ƒ S| d k rp d |  j | ƒ S| d k r„ | d S| Sn  | S(	   s
   Translate.i   i   t   sends   
# HTTP Request:
t   replys   

# HTTP Response:
t   headers   
(   t   RE_LINE_PARSERR   t   groupR   (   R   R   t   parsedt   valuet   stage(    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyR   †   s    (   R   R   R   t   ret   compileR;   t   RE_LINE_BREAKt   RE_HTTP_METHODR4   t   classmethodR7   R   (    (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyR3   r   s   	c         C  s   t  |  p t j ƒ t _ t j S(   s   Capture standard output.(   R3   t   syst   stdout(   t	   outbuffer(    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyt   consumeš   s    t   __main__s   
(   R   t
   __future__R    R   R   R@   RE   t	   six.movesR   t   StringIOR   t   objectR   R    R3   R   RH   R   RF   R   t   stdint   readt   print(    (    (    sU   lib/python2.7/site-packages/anaconda_navigator/external/UniversalAnalytics/HTTPLog.pyt   <module>   s   -$(