ó
¦•Dc           @   s˜  d  d l  Z  d  d l Z d  d l Z d  d l Z d  d l Z d  d l 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  r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ÿÿÿÿN(   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 ˆ  _ 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 ƒ ‡  f d †  } ˆ  j t  j | ƒ ‡  f d	 †  } ˆ  j t  j | ƒ d  S(
   Ni    R   i   i   i   s	   /dev/nulli   c            s   ˆ  j  |  7_  d  S(   N(   t   payload(   t   x(   t   self(    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   payload_callback0   s    c            s   ˆ  j  |  7_  d  S(   N(   t   hdr(   R   (   R   (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   header_callback3   s    (   t   pycurlR   t   handlet   set_urlt	   verbosityt   fakeheadersR   t   hrdt
   set_optiont   SSL_VERIFYHOSTt   FOLLOWLOCATIONt	   MAXREDIRSt   NOSIGNALt
   COOKIEFILEt   set_timeoutt   NETRCt   WRITEFUNCTIONt   HEADERFUNCTION(   R   t   base_urlR   R   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   7   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   ;   s    	c         G   s   t  |  j j | ƒ d S(   s   Set an option on the retrieval.N(   t   applyR   t   setopt(   R   t   args(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyR   @   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_verbosityD   s    c         C   sv   |  j  r" |  j t j |  j  ƒ n  | rP |  j t j t j j |  j | ƒ ƒ n  d |  _	 d |  _
 |  j j ƒ  |  j	 S(   s   Perform the pending request.R   (   R   R   R   t
   HTTPHEADERR   t   ost   patht   joinR   R   R	   R   t   perform(   R   t   relative_url(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt	   __requestH   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   urllibt	   urlencodeR   R   t   HTTPGETt   _Curl__request(   R   R    t   params(    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   getS   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
   POSTFIELDSR/   R0   R2   (   R   t   cgiR3   (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   postZ   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   body`   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   headerd   s    c         G   s   t  |  j j | ƒ S(   s    Get information about retrieval.(   R!   R   t   getinfo(   R   R#   (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   get_infoh   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   infol   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   closet   NoneR	   R   (   R   (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyRc   •   s
    	 		c         C   s   |  j  ƒ  d  S(   N(   Rc   (   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&   Rd   R2   R4   R8   R9   R:   R<   R_   Rb   Rc   Re   (    (    (    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(    (   R(   t   sysR/   t
   exceptionst	   mimetoolsR   t	   cStringIOR    t   ImportErrort   signalR   R   R   Rf   t   lent   argvR    t   cR4   R9   t   pprintR_   R<   RX   Rc   (    (    (    s1   /usr/lib/python2.7/dist-packages/curl/__init__.pyt   <module>	   s0   H‰		