ó
Ì4¹Rc           @   sÏ  d  d l  Z  d  d l Z e  j d d k Z e rc d  d l j Z d  d l m Z d  d l m	 Z	 nT d  d l
 Z d  d l m Z y d  d l m Z	 Wn! e k
 r¶ d  d l m Z	 n Xy< d  d l Z d  d l m Z m Z e j e j e j ƒ Wn e k
 rn Xd d d	 „  ƒ  YZ e d
 k rËe e  j ƒ d k  rDd Z n e  j d Z e ƒ  Z e j e ƒ e j ƒ  GHd d d GHd  d l Z e j e j ƒ  ƒ e j e j ƒ GHe j ƒ  d GHe j ƒ  n  d S(   iÿÿÿÿNi    i   (   t   urljoin(   t   BytesIO(   t   StringIO(   t   SIGPIPEt   SIG_IGNt   Curlc           B   s¤   e  Z d  Z d g  d „ Z d „  Z d „  Z d „  Z d „  Z d d „ Z	 d d d „ Z
 d	 „  Z d
 „  Z d „  Z d „  Z d „  Z d „  Z d „  Z d „  Z RS(   s)   High-level interface to pycurl functions.t    c            s
  t  j ƒ  ˆ  _ ˆ  j | ƒ d ˆ  _ | ˆ  _ d  ˆ  _ t ƒ  ˆ  _	 d ˆ  _
 ˆ  j t  j d ƒ ˆ  j t  j d ƒ ˆ  j t  j d ƒ ˆ  j t  j d ƒ ˆ  j t  j d ƒ ˆ  j d ƒ ˆ  j t  j d ƒ ˆ  j t  j ˆ  j	 j ƒ ‡  f d †  } ˆ  j t  j | ƒ d  S(	   Ni    R   i   i   i   s	   /dev/nulli   c            s   ˆ  j  |  j d ƒ 7_  d  S(   Nt   ascii(   t   hdrt   decode(   t   x(   t   self(    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   header_callback<   s    (   t   pycurlR   t   handlet   set_urlt	   verbosityt   fakeheaderst   Nonet   payloadR   t
   payload_iot   hrdt
   set_optiont   SSL_VERIFYHOSTt   FOLLOWLOCATIONt	   MAXREDIRSt   NOSIGNALt
   COOKIEFILEt   set_timeoutt   NETRCt   WRITEFUNCTIONt   writet   HEADERFUNCTION(   R   t   base_urlR   R   (    (   R   s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   __init__$   s"    				c         C   s   |  j  t j | ƒ d S(   s&   Set timeout for a retrieving an objectN(   R   R   t   TIMEOUT(   R   t   timeout(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyR   @   s    c         C   s#   | |  _  |  j t j |  j  ƒ d S(   s!   Set the base URL to be retrieved.N(   R!   R   R   t   URL(   R   t   url(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyR   D   s    	c         G   s   |  j  j | Œ  d S(   s   Set an option on the retrieval.N(   R   t   setopt(   R   t   args(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyR   I   s    c         C   s   |  j  t j | ƒ d S(   s'   Set verbosity to 1 to see transactions.N(   R   R   t   VERBOSE(   R   t   level(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   set_verbosityM   s    c         C   s‚   |  j  r" |  j t j |  j  ƒ n  | rJ |  j t j t |  j | ƒ ƒ n  d |  _ d |  _	 |  j
 j ƒ  |  j j ƒ  |  _ |  j S(   s   Perform the pending request.R   N(   R   R   R   t
   HTTPHEADERR%   R    R!   R   R   R   R   t   performR   t   getvalue(   R   t   relative_url(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt	   __requestQ   s    	"		c         C   s@   | r  | d t  j | ƒ 7} n  |  j t j d ƒ |  j | ƒ S(   s=   Ship a GET request for a specified URL, capture the response.t   ?i   (   t   urllib_parset	   urlencodeR   R   t   HTTPGETt   _Curl__request(   R   R&   t   params(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   get]   s    c         C   s<   |  j  t j d ƒ |  j  t j t j | ƒ ƒ |  j | ƒ S(   s=   Ship a POST request to a specified CGI, capture the response.i   (   R   R   t   POSTt
   POSTFIELDSR2   R3   R5   (   R   t   cgiR6   (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   postd   s    c         C   s   |  j  S(   s'   Return the body from the last response.(   R   (   R   (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   bodyj   s    c         C   s   |  j  S(   s)   Return the header from the last response.(   R   (   R   (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   headern   s    c         G   s   |  j  j | Œ  S(   s    Get information about retrieval.(   R   t   getinfo(   R   R(   (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   get_infor   s    c         C   s*  i  } |  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j	 ƒ | d <|  j  j t j
 ƒ | d <|  j  j t j ƒ | d	 <|  j  j t j ƒ | d
 <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j	 ƒ | d <|  j  j t j
 ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j ƒ | d <|  j  j t j  ƒ | d <| S(   s7   Return a dictionary with all info on the last response.s   effective-urls	   http-codes
   total-times   namelookup-times   connect-times   pretransfer-times   redirect-times   redirect-counts   size-uploads   size-downloads   speed-uploads   header-sizes   request-sizes   content-length-downloads   content-length-uploads   content-types   response-codes   speed-downloads   ssl-verifyresultt   filetimes   starttransfer-times   http-connectcodes   httpauth-avails   proxyauth-avails   os-errnos   num-connectss   ssl-enginest
   cookielistt
   lastsockets   ftp-entry-path(!   R   R>   R   t   EFFECTIVE_URLt	   HTTP_CODEt
   TOTAL_TIMEt   NAMELOOKUP_TIMEt   CONNECT_TIMEt   PRETRANSFER_TIMEt   REDIRECT_TIMEt   REDIRECT_COUNTt   SIZE_UPLOADt   SIZE_DOWNLOADt   SPEED_UPLOADt   HEADER_SIZEt   REQUEST_SIZEt   CONTENT_LENGTH_DOWNLOADt   CONTENT_LENGTH_UPLOADt   CONTENT_TYPEt   RESPONSE_CODEt   SPEED_DOWNLOADt   SSL_VERIFYRESULTt   INFO_FILETIMEt   STARTTRANSFER_TIMEt   HTTP_CONNECTCODEt   HTTPAUTH_AVAILt   PROXYAUTH_AVAILt   OS_ERRNOt   NUM_CONNECTSt   SSL_ENGINESt   INFO_COOKIELISTt
   LASTSOCKETt   FTP_ENTRY_PATH(   R   t   m(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   infov   sD    c         C   s   |  j  j | ƒ d k S(   s3   Did a given check string occur in the last payload?i    (   R   t   find(   R   t   check(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   answered›   s    c         C   s8   |  j  r |  j  j ƒ  n  d |  _  d |  _ d |  _ d S(   s#   Close a session, freeing resources.R   N(   R   t   closeR   R   R   (   R   (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyRf   Ÿ   s
    			c         C   s   |  j  ƒ  d  S(   N(   Rf   (   R   (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   __del__§   s    N(   t   __name__t
   __module__t   __doc__R"   R   R   R   R+   R   R5   R7   R;   R<   R=   R?   Rb   Re   Rf   Rg   (    (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyR   "   s    									%		t   __main__i   s   http://curl.haxx.sei   t   =iJ   s   
s   os-errno(    (   t   sysR   t   version_infot   py3t   urllib.parset   parseR2   R    t   ioR   t   urllibt   urlparset	   cStringIOR   t   ImportErrort   signalR   R   R   Rh   t   lent   argvR&   t   cR7   R<   t   pprintRb   R?   R[   Rf   (    (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   <module>	   s>   ‰		