ó
OvWc           @   sç  d  Z  d d l Z d d l Z y  d d l Z d d l m Z Wn1 e k
 rq d d l m Z d d l	 m Z n Xd d l
 m Z m Z m Z m Z m Z d d l m Z m Z m Z e j e ƒ Z e rd d l Z e j Z e j e j d d	 „ Z e e _ n  i  Z i  Z d
 d$ d „  ƒ  YZ yd d d l  Z  e j! d k r†e  j d k r†d d l" Z# e# j$ j% j& Z' d „  Z( e( e# j$ j% _& n  Wn e k
 r d Z n  Xd e  j* e f d „  ƒ  YZ+ e+ e d <e j, d g  ƒ j- d ƒ e j, d g  ƒ j- d ƒ d d l. Z. d e. j/ e  j* j& ƒ d k r@e j, d g  ƒ j- d ƒ n  d e f d „  ƒ  YZ0 e0 e d <e j, d g  ƒ j- d ƒ d d l Z e j1 d% k r°e j, d g  ƒ j- d ƒ n  [ y d d l2 Z2 Wn e k
 rÖnÌ Xy d d l3 m4 Z4 WnI e k
 r6y d d l4 m4 Z4 Wq7e k
 r2d d l5 m4 Z4 q7Xn Xd e f d „  ƒ  YZ6 e6 e d <e j, d g  ƒ j- d ƒ e j, d g  ƒ j- d ƒ e j, d g  ƒ j- d ƒ d d& d  „  ƒ  YZ7 d g  d! „ Z8 d g  d" „ Z9 d# „  Z: e9 ƒ  d S('   s%   Pythonic simple SOAP Client transportiÿÿÿÿN(   t	   CookieJar(   t   requesti   (   t
   __author__t   __copyright__t   __license__t   __version__t   TIMEOUT(   t   SimpleXMLElementt   TYPE_MAPt   Structi    c         C   sA   t  |  | | ƒ } | t j k r= | j t j t j d ƒ n  | S(   Ni   (   t
   realsockett   sockett   SOCK_STREAMt
   setsockoptt   IPPROTO_TCPt   TCP_NODELAY(   t   familyt   typet   protot   sockobj(    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyt
   socketwrap(   s    t   TransportBasec           B   s   e  Z e d  „  ƒ Z RS(   c         C   s   |  j  t | k S(   N(   t   _wrapper_namet   _http_facilities(   t   clst   feature_name(    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyt   supports_feature7   s    (   t   __name__t
   __module__t   classmethodR   (    (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyR   6   s   t   3s   0.7.7c         O   sK   |	 j  d t ƒ t A}
 t |  | d | d | d | d | d | d |
 ƒd  S(   Nt"   disable_ssl_certificate_validationt   portt   key_filet	   cert_filet   timeoutt   contextt   check_hostname(   t   gett   Truet   orig__init__(   t   selft   hostR    R!   R"   R#   R$   R%   t   argst   kwargst   chk(    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyt   fixerF   s    t   Httplib2Transportc           B   s-   e  Z d  e j Z d Z d d e d „ Z RS(   s   httplib2 %st   httplib2c         C   s§   i  } | rH d d  l  } t j d | j |  | d <t j d | ƒ n  t j d k rd | | d <n  t j d k r | d  k | d <| | d	 <n  t j j	 |  |  d  S(
   Niÿÿÿÿt
   proxy_typet
   proxy_infos   using proxy %ss   0.3.0R#   s   0.7.0R   t   ca_certs(
   t   socksR0   t	   ProxyInfot   PROXY_TYPE_HTTPt   logt   infoR   t   Nonet   Httpt   __init__(   R)   R#   t   proxyt   cacertt   sessionsR,   R4   (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyR;   U   s    N(	   R   R   R0   R   t   _wrapper_versionR   R9   t   FalseR;   (    (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyR/   Q   s   R0   R<   R=   R#   t   urllib2Transportc           B   sB   e  Z d  e j Z d Z d d d e d „ Z d d i  d „ Z	 RS(   s
   urllib2 %st   urllib2c         C   sž   | d  k	 r+ |  j d ƒ r+ t d ƒ ‚ n  | r@ t d ƒ ‚ n  | rU t d ƒ ‚ n  t j |  _ | r‘ t j t j t ƒ  ƒ ƒ } | j	 |  _ n  | |  _
 d  S(   NR#   s/   timeout is not supported with urllib2 transports-   proxy is not supported with urllib2 transports,   cacert is not support with urllib2 transport(   R9   R   t   RuntimeErrorRB   t   urlopent   request_openert   build_openert   HTTPCookieProcessorR    t   opent   _timeout(   R)   R#   R<   R=   R>   t   opener(    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyR;   u   s    t   GETc         C   sŒ   t  j | | | ƒ } y2 |  j | d |  j ƒ} | j ƒ  | j ƒ  f SWn> t  j k
 r‡ } | j d k rq ‚  n  | j ƒ  | j ƒ  f SXd  S(   NR#   iô  (   RB   t   RequestRE   RI   R8   t   readt	   HTTPErrort   code(   R)   t   urlt   methodt   bodyt   headerst   reqt   f(    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyR   „   s    N(
   R   R   RB   R   R?   R   R9   R@   R;   R   (    (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyRA   q   s   RB   R>   i   i   (   t   StringIOt   pycurlTransportc           B   s2   e  Z e j Z d  Z d d e d „ Z d „  Z	 RS(   t   pycurlc         C   s%   | |  _  | p i  |  _ | |  _ d  S(   N(   R#   R<   R=   (   R)   R#   R<   R=   R>   (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyR;   «   s    	c   	   	   C   s  t  j ƒ  } | j t  j | ƒ d |  j k rK | j t  j |  j d ƒ n  d |  j k rw | j t  j |  j d ƒ n  d |  j k r£ | j t  j d |  j ƒ n  t ƒ  |  _	 | j t  j
 |  j	 j ƒ |  j rê | j | j |  j ƒ n  | j t  j |  j rd pd ƒ | j t  j |  j r'd p*d ƒ | j t  j |  j d ƒ | j t  j |  j ƒ | d	 k r“| j t  j d ƒ | j t  j | ƒ n  | rëg  | j ƒ  D] \ } } d
 | | f ^ q¦} t j | ƒ | j t  j | ƒ n  | j ƒ  | j ƒ  i  |  j	 j ƒ  f S(   Nt
   proxy_hostt
   proxy_portt
   proxy_users   %(proxy_user)s:%(proxy_pass)si   i    i   i   t   POSTs   %s: %s(   RX   t   Curlt   setoptt   URLR<   t   PROXYt	   PROXYPORTt   PROXYUSERPWDRV   t   buft   WRITEFUNCTIONt   writeR=   t   CAINFOt   SSL_VERIFYPEERt   SSL_VERIFYHOSTt   CONNECTTIMEOUTR#   R   R\   t
   POSTFIELDSt   itemsR7   t   debugt
   HTTPHEADERt   performt   closet   getvalue(	   R)   RP   RQ   RR   RS   t   ct   kt   vt   hdrs(    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyR   °   s4    	""/

N(
   R   R   RX   t   versionR?   R   R9   R@   R;   R   (    (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyRW   §   s   	RX   t   DummyTransportc           B   s    e  Z d  Z d „  Z d „  Z RS(   s$   Testing class to load a xml responsec         C   s   | |  _  d  S(   N(   t   xml_response(   R)   Rw   (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyR;   Ø   s    c         C   s:   t  j d | | ƒ t  j | ƒ t  j | ƒ i  |  j f S(   Ns   %s %s(   R7   Rl   Rw   (   R)   t   locationRQ   RR   RS   (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyR   Û   s    (   R   R   t   __doc__R;   R   (    (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyRv   Õ   s   	c         C   s  |  d  k	 rB y t |  SWqB t k
 r> t d |  f ƒ ‚ qB Xn  | s\ t j d t d ƒ St j ƒ  } g  } xS | D]K } x6 | D]. } | t j | g  ƒ k r‚ | j | ƒ q‚ q‚ W| } g  } qu Wy | d } Wn$ t k
 rø t d | f ƒ ‚ n	 Xt | Sd  S(   Ns   %s transport is not availableR0   RB   i    s8   no transport available which supports these features: %s(	   R9   t   _http_connectorst   KeyErrorRC   R&   t   keysR   t   appendt
   IndexError(   t   libraryt   featurest   current_candidatest   new_candidatest   featuret	   candidatet   candidate_name(    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyt   get_http_wrapperâ   s(    
c         C   s   t  |  | ƒ a t S(   s'   Set a suitable HTTP connection wrapper.(   R†   R:   (   R   R€   (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyt   set_http_wrapper  s    c           C   s   t  S(   s   Return current transport class(   R:   (    (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyt   get_Http
  s    (    (   i   i   (    (;   Ry   t   loggingt   sysRB   t	   cookielibR    t   ImportErrort   urllibR   t   http.cookiejart    R   R   R   R   R   t	   simplexmlR   R   R	   t	   getLoggerR   R7   R@   R   R
   t   AF_INETR   R   Rz   R   R   R0   Ru   t   http.clientt   httpt   clientt   HTTPSConnectionR;   R(   R.   R9   R:   R/   t
   setdefaultR}   t   inspectt
   getargspecRA   t   version_infoRX   t	   cStringIORV   t   ioRW   Rv   R†   R‡   Rˆ   (    (    (    sU   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/transport.pyt   <module>   s€   (			

(
!	