ó
h€
\c           @   sÃ   d  Z  d d l Z d d l Z d d l m Z m Z d d l m Z m Z d d l	 m
 Z
 m Z d d l m Z d d l m Z d d l m Z d d	 l m Z d
 g Z d
 e f d „  ƒ  YZ d S(   s*   
Adds async tornado.gen support to Zeep.

iÿÿÿÿN(   t   Responset   Session(   t   HTTPBasicAutht   HTTPDigestAuth(   t   gent
   httpclient(   t   bindings(   t	   Transport(   t   get_version(   t   etree_to_stringt   TornadoAsyncTransportc           B   s’   e  Z d  Z e j e j g Z d	 d d	 d	 d „ Z d „  Z	 e
 j d „  ƒ Z e
 j d „  ƒ Z e
 j d „  ƒ Z e
 j d	 d „ ƒ Z d „  Z RS(
   s/   Asynchronous Transport class using tornado gen.i,  c         C   sZ   | |  _  | |  _ | |  _ t j t ƒ |  _ | p9 t ƒ  |  _ d t	 ƒ  |  j j
 d <d  S(   Ns   Zeep/%s (www.python-zeep.org)s
   User-Agent(   t   cachet   load_timeoutt   operation_timeoutt   loggingt	   getLoggert   __name__t   loggerR   t   sessionR   t   headers(   t   selfR   t   timeoutR   R   (    (    sK   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/tornado/transport.pyt   __init__   s    			c         C   sU   t  j ƒ  } i d d 6|  j d 6|  j d 6} t  j | |  } | j | ƒ } | j S(   Nt   GETt   methodt   connect_timeoutt   request_timeout(   R   t
   HTTPClientR   t   HTTPRequestt   fetcht   body(   R   t   urlt   clientt   kwargst   http_reqt   response(    (    sK   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/tornado/transport.pyt   _load_remote_data%   s    
c         c   s,   |  j  | d | | ƒ V} t j | ƒ ‚ d  S(   Nt   POST(   R   R   t   Return(   R   t   addresst   messageR   R#   (    (    sK   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/tornado/transport.pyt   post0   s    c         c   s5   t  | ƒ } |  j | | | ƒ V} t j | ƒ ‚ d  S(   N(   R	   R)   R   R&   (   R   R'   t   envelopeR   R(   R#   (    (    sK   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/tornado/transport.pyt   post_xml6   s    c         c   sI   | r  | d t  j | ƒ 7} n  |  j | d | ƒ V} t j | ƒ ‚ d  S(   Nt   ?R   (   t   urllibt	   urlencodeR   R   R&   (   R   R'   t   paramsR   R#   (    (    sK   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/tornado/transport.pyt   get>   s    c         c   sF  t  j ƒ  } d  } d  } d  } |  j j rì t |  j j ƒ t k rk |  j j d } |  j j d } d } qì t |  j j ƒ t k r¤ |  j j } |  j j	 } d } qì t |  j j ƒ t
 k rİ |  j j } |  j j	 } d } qì t d ƒ ‚ n  d  }	 d  }
 d  } |  j j rot |  j j ƒ t k r1|  j j } qot |  j j ƒ t k ro|  j j d }	 |  j j d }
 qon  t |  j j j ƒ  ƒ } i | d 6|  j d 6|  j d 6t | |  d	 6| d
 6| d 6| d 6t |  j j ƒ d 6| d 6|
 d 6|	 d 6} | r| | d <n  t  j | |  } | j | ƒ V} t j |  j | ƒ ƒ ‚ d  S(   Ni    i   t   basict   digests   Not supported authentication.R   R   R   R   t   auth_usernamet   auth_passwordt	   auth_modet   validate_certt   ca_certst
   client_keyt   client_certR   (   R   t   AsyncHTTPClientt   NoneR   t   autht   typet   tupleR   t   usernamet   passwordR   t	   Exceptiont   certt   strt   dictR   t   itemsR   t   boolt   verifyR   R   R   R&   t   new_response(   R   R'   R   R   R(   t   async_clientR3   R4   R5   R9   R8   R7   t   session_headersR!   R"   R#   (    (    sK   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/tornado/transport.pyR   F   sZ    			


c         C   s=   t  ƒ  } | j | _ | j | _ t | j j ƒ  ƒ | _ | S(   sD   Convert an tornado.HTTPResponse object to a requests.Response object(   R    R   t   _contentt   codet   status_codeRD   R   t   get_all(   R   R#   t   new(    (    sK   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/tornado/transport.pyRH   ƒ   s
    	N(   R   t
   __module__t   __doc__R   t   AsyncSoap11Bindingt   AsyncSoap12Bindingt   binding_classesR;   R   R$   R   t	   coroutineR)   R+   R0   R   RH   (    (    (    sK   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/tornado/transport.pyR
      s   	
	<(   RQ   R   R-   t   requestsR    R   t   requests.authR   R   t   tornadoR   R   t   zeep.tornadoR   t   zeep.transportsR   t
   zeep.utilsR   t   zeep.wsdl.utilsR	   t   __all__R
   (    (    (    sK   /data/av2000/b2b/venv/lib/python2.7/site-packages/zeep/tornado/transport.pyt   <module>   s   	