
OvWc           @  s  d  Z  d d l m Z d d l Z e j d k r: e Z n  y d d l Z Wn e	 k
 ri d d l Z n Xd d l
 Z
 d d l Z d d l Z d d l Z d d l Z d d l Z d d l m Z m Z m Z m Z m Z d d l m Z m Z m Z m Z d d l m Z m Z m Z d d	 l m  Z  m! Z! m" Z" m# Z# m$ Z$ m% Z% m& Z& m' Z' m( Z( m Z m) Z) d d
 l* m+ Z+ e j, e-  Z. d e/ f d     YZ0 e1 d d d d d d d d d d  Z2 d e3 f d     YZ4 d   Z5 e- d k rn  d S(   u*   Pythonic simple SOAP Client implementationi(   t   unicode_literalsNu   3i   (   t
   __author__t   __copyright__t   __license__t   __version__t   TIMEOUT(   t   SimpleXMLElementt   TYPE_MAPt   REVERSE_TYPE_MAPt   Struct(   t   get_http_wrappert   set_http_wrappert   get_Http(   t   fetcht	   sort_dictt   make_keyt   process_elementt   postprocess_elementt   get_messaget   preprocess_schemat   get_local_namet   get_namespace_prefixR   t   urlsplit(   t   UsernameTokent	   SoapFaultc           B  sG   e  Z d d   Z d   Z e j d k r3 e Z n	 d   Z d   Z RS(   c         C  s5   | |  _  | |  _ | |  _ t j |  | | |  d  S(   N(   t	   faultcodet   faultstringt   detailt   RuntimeErrort   __init__(   t   selfR   R   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyR   ,   s    			c         C  s   d |  j  |  j f S(   Nu   %s: %s(   R   R   (   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   __unicode__2   s    u   3c         C  s   |  j    j d d  S(   Nu   asciiu   ignore(   R   t   encode(   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   __str__8   s    c         C  s,   d t  |  j  t  |  j  t  |  j  f S(   Nu6   SoapFault(faultcode = %s, faultstring %s, detail = %s)(   t   reprR   R   R   (   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   __repr__;   s    N(	   t   __name__t
   __module__t   NoneR   R   t   syst   versionR!   R#   (    (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyR   +   s   			t   soap11u)   http://schemas.xmlsoap.org/soap/envelope/t   soapt   soapenvt   soap12u"   http://www.w3.org/2003/05/soap-envt	   soap12envu'   http://www.w3.org/2003/05/soap-envelopet
   SoapClientc           B  s   e  Z d  Z d d d d e d d d d d e d e d e d e d d d d d  Z d   Z d   Z	 d   Z
 d   Z d   Z d   Z d	   Z d
   Z d   Z i d d 6d d 6Z d Z d Z d Z d   Z d   Z e d  Z d   Z d   Z RS(   u   Simple SOAP Client (simil PHP)u    c          C  s  | |  _  | |  _ | |  _ | |  _ | |  _ | |  _ d |  _ |  _ | pO i  |  _ | p^ g  |  _	 |	 r |
 d k r t
 |	  \ } } } } } t j j | |  }
 n  |
 |  _ | r | t k r t j } n | } t j d |  t j |  n  | r| rd |  _ n" | r*| r*d |  _ n	 | |  _ | |  _ i  |  _ d |  _ | r| j d  rt j   \ } } t j | d d  } t j d |  | j |  | } | j    n  | |  _! t"   } | d	 | d
 | d | d |  |  _# | r(| r(t$ |  j# d  r(|  j# j% | |  q(n  | rk| rkt$ |  j# d  rk|  j# j& d | d | d d  qkn  | |  _' | sd |  _( n	 d |  _( |	 o|  j) |	 d | |  _* d |  _+ d S(   uf   
        :param http_headers: Additional HTTP Headers; example: {'Host': 'ipsec.example.com'}
        u    t   levelu   soapu   soapenvu   -----BEGIN CERTIFICATE-----u   w+biu   Saving CA certificate to %st   timeoutt   cacertt   proxyt   sessionsu   add_credentialsu   add_certificatet   keyt   certt   domainuW  <?xml version="1.0" encoding="UTF-8"?>
<%(soap_ns)s:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
    xmlns:%(soap_ns)s="%(soap_uri)s">
<%(soap_ns)s:Header/>
<%(soap_ns)s:Body>
    <%(method)s xmlns="%(namespace)s">
    </%(method)s>
</%(soap_ns)s:Body>
</%(soap_ns)s:Envelope>u  <?xml version="1.0" encoding="UTF-8"?>
<%(soap_ns)s:Envelope xmlns:%(soap_ns)s="%(soap_uri)s" xmlns:%(ns)s="%(namespace)s">
<%(soap_ns)s:Header/>
<%(soap_ns)s:Body>
    <%(ns)s:%(method)s>
    </%(ns)s:%(method)s>
</%(soap_ns)s:Body>
</%(soap_ns)s:Envelope>t   cacheN(,   t   certsslt   keysslt   locationt   actiont	   namespacet
   exceptionst   xml_requestt   xml_responset   http_headerst   pluginsR   t   ost   patht   dirnamet   wsdl_basedirt   Truet   loggingt   DEBUGt   basicConfigt   logt   setLevelt   _SoapClient__soap_nst   _SoapClient__soap_servert   _SoapClient__headersR&   t   _SoapClient__call_headerst
   startswitht   tempfilet   mkstempt   fdopent   debugt   writet   closeR1   R   t   httpt   hasattrt   add_credentialst   add_certificatet   _SoapClient__nst   _SoapClient__xmlt
   wsdl_parset   servicest   service_port(    R   R:   R;   R<   R5   R=   R2   t   nst   soap_nst   wsdlRE   R7   R1   R3   t   soap_serverR0   R@   t   tracet   usernamet   passwordt   key_fileRA   t
   url_schemet   netlocRC   t   queryt   fragmentR/   t   fdt   filenamet   ft   Http(    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyR   M   sb    													$%	
		c           s-     j  s    f d  S   f d   Sd S(   u)   Return a pseudo-method that can be calledc           s   |  j    | |  S(   N(   t   call(   R   t   argst   kwargs(   t   attr(    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   <lambda>   s    c            s     j   |  |  S(   N(   t	   wsdl_call(   Rq   Rr   (   R   Rs   (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyRt      s    N(   R^   (   R   Rs   (    (   R   Rs   sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   __getattr__   s    	c         O  s  t  |  j } |  j t d | d |  j d |  j d |  j d |  } t | d |  j o\ |  j d |  j } | j d d  } | r t	 | j
    } n | } | r t | d t  r | d	 d t	 t  j    }	 t |	 |  |	 j | d  n | r|  j d
 k s|  j t k r d n t }
 x | D]^ \ } } t | d  rf|
 rf| j j d t  } n |
 } t | |  j | | d | q-Wn7 |  j d k rt | d	 d t	 t  j    |  n  |  j r%|  j r%t g  |  j j
   D]' \ } } | j d  s| | f ^ q |  _ n  d |  j k rd|  j rdt j d t  |  j j  t!    n  |  j r| d d t	 t  j    } x^ |  j j
   D]J \ } } t | t  r| j |  q| j | | d |  j d t qWn  | r7| d d t	 t  j    } x$ | j"   D] } | j |  qWn  x3 |  j D]( } | j# |  | | | | |  j |  qAW| j$   |  _% |  j& | |  j%  |  _' t |  j' d |  j d |  j d k } |  j( r| d d t	 t  j    d t r| d d t	 t  j    d t } d } | rs| j"   rs|  j) |  } | d | j"   d j*   } | j"   d j+ | d t } n  t, t- | j.  t- | j/  |   n  x3 |  j D]( } | j0 |  | | | | |  j |  qW| S(   u   Prepare xml request and make SOAP call, returning a SimpleXMLElement.

        If a keyword argument called "headers" is passed with a value of a
        SimpleXMLElement object, then these headers will be inserted into the
        request.
        t   methodR<   R`   Ra   t   soap_urit   prefixu   headersi    u   Bodyu   jettyu
   namespacesu   jbossas6u   wsse:u   wsse:Securityu/   Replace wsse:Security with UsernameToken pluginu   Headert   add_children_nst   jettyu   Faultt   erroru   detailu   faultst   strictN(   u   jbossas6(   u   jetty(1   t   soap_namespacesRL   R\   t   dictR<   R[   R   t   popR&   t   listt   itemst
   isinstancet   valuest   delattrt   import_nodeRM   t	   qualifiedt   FalseRF   RX   t
   namespacest   gett   getattrt   marshallRN   R^   RP   RO   RA   t   warningst   warnt   DeprecationWarningt   appendR   t   childrent
   preprocesst   as_xmlR>   t   sendR?   R=   t   get_operationt   get_namet
   unmarshallR   t   unicodeR   R   t   postprocess(   R   Rw   Rq   Rr   Rx   t   xmlt   requestt   request_headerst
   parameterst   bodyt   use_nst   kt   vR`   t   headert	   subheadert   plugint   responset	   detailXmlR   t	   operationt   fault(    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyRp      s~    				
*&(*		&-$"c         C  s  |  j  d k r d St d  } t |  j   } |  j rI t |  j  } n t |  j  | } i d d 6t t |   d 6d | d 6} | j |  j  t j d	 |  t j	 d
 j
 g  | j   D] \ } } d | | f ^ q   t j	 |  t j d k  r"t d   | j   D  } n  |  j j | | d | d | \ }	 }
 |	 |  _ |
 |  _ t j	 d
 j
 g  |	 j   D] \ } } d | | f ^ qt  t j	 |
  |
 S(   u   Send SOAP request using HTTPu   testNu   POSTu   text/xml; charset="UTF-8"u   Content-typeu   Content-lengthu   "%s"u
   SOAPActionu   POST %su   
u   %s: %su   3c         s  s-   |  ]# \ } } t  |  t  |  f Vq d  S(   N(   t   str(   t   .0R   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pys	   <genexpr>6  s    R   t   headers(   R:   R   R^   R;   t   lent   updateR@   RJ   t   infoRT   t   joinR   R'   R(   R   RW   R   R   t   content(   R   Rw   R   t   http_methodR:   t   soap_actionR   R   R   R   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyR     s0     	?			?c         C  s&  |  j  j d  r d p d } |  j s x |  j j   D]s \ } } xd g  | d j   D] } | ^ qW D]/ \ } } | d | k rg | | f |  _ Pqg qg Wt d |   q7 Wn# |  j |  j d d |  j d } |  j s | d |  _ n  | d	 j |  } | s"t d
 | |  j f   n  | S(   Nu   soap12u   soap11u   portsu   soap_veru2   Cannot determine service in WSDL: SOAP version: %si    i   u   locationu
   operationsu5   Operation %s not found in WSDL: Service/Port Type: %s(   RL   RP   R_   R^   R   R   R:   R   (   R   Rw   t   soap_vert   service_namet   servicet   portt	   port_nameR   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyR   A  s"    	0#	c         O  s   |  j  | | |  S(   uF   Pre and post process SOAP call, input and output parameters using WSDL(   t   wsdl_call_with_args(   R   Rw   Rq   Rr   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyRu   X  s    c         C  s  t  |  j } |  j |  } | d } | d } | j d  } d | k r[ | d |  _ n  d | k r | d pt d |  _ | d |  _ n  | r t | |  j  |  _	 n  |  j
 | | | |  \ } }	 |  j | |	  }
 |
 d d	 | j   j |  } | ot | j    d
 S(   uF   Pre and post process SOAP call, input and output parameters using WSDLu   inputu   outputu   headeru   actionu	   namespaceu    u	   qualifiedu   BodyR`   i    (   R~   RL   R   R   R;   R<   R   R   RN   RO   t   wsdl_call_get_paramsRp   R   R   R   R   (   R   Rw   Rq   Rr   Rx   R   t   inputt   outputR   t   paramsR   t   resp(    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyR   \  s     

!c         C  s  d } } } i  } | r= t | j    d } | | } n  | r | r i  }	 xy t |  D]k \ }
 } t | j    |
 } t | t  r | | k r t d |   n  | | |	 | <q\ | |	 | <q\ W| j i |	 | 6 n  | r| s | r| r| j i | | 6 n  |  j | |  \ } } } | sEt	 d |   n  t
 | |  } t | j    d } g  } xg | j   D]Y \ } } | j | } | j | rt | t  r| | j d <n  | j | | f  q}W|  j d k r| } q| } n | o
| j   } | | f S(   u'   Build params from input and args/kwargsi    u)   Unhandled key %s. use client.help(method)u"   Invalid Args Structure. Errors: %su   axisN(   u   axis(   R&   R   t   keyst	   enumerateR   R   t   KeyErrorR   t   wsdl_validate_paramst
   ValueErrorR   R   R   R   t
   referencesR	   R   RM   (   R   Rw   R   Rq   Rr   R   t	   inputnamet	   inputargst   all_argst   dt   idxt   argR4   t   validt   errorsR   t   treet   rootR   R   t   root_ns(    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyR   w  sD    		c         C  sz  g  } g  } t  } t |  t |  k r3 t  } n  t | t  r[ t | t  r[ t  } n t } | t k rv t } n  t | t t t f  r| t	 j
   k rt |  | k rm| d	 k	 rmy | |  Wq
t } | j d t |  | t |  | f  q
Xqmn`t | t  rt |  d k rt | t  r|  j | d |  \ } } }	 | slt } n  | j |  | j |	  nt | t  r| rm| rmx | D] }
 |
 | k rt } | j d |
 | | f  q|  j | |
 | |
  \ } } }	 | st } n  | j |  | j |	  qWx | D]/ }
 |
 | k r7| j d |
 | | f  q7q7Wqm| r| r| j d | | f  qm| rm| rmt } | j d | | f  qmn t | t  r5| d } x | D]J } |  j | |  \ } } }	 | st } n  | j |  | j |	  qWn8 | smt } | j d t |  | t |  | f  n  | | | f S(
   u   Validate the arguments (actual values) for the parameters structure.
           Fail for any invalid arguments or type mismatches.uB   Type mismatch for argument value. parameter(%s): %s, value(%s): %si   i    u9   Argument key %s not in parameter. parameter: %s, args: %su6   Parameter key %s not in args. parameter: %s, value: %su3   parameter keys not in args. parameter: %s, args: %su3   Args keys not in parameter. parameter: %s, args: %su/   Type mismatch. parameter(%s): %s, value(%s): %sN(   RF   t   typeR   R   R   R   R   R   t   tupleR   R   R&   R   R   R   t   extend(   R   t   structt   valueR   R   R   t	   typematcht
   next_validt   next_errorst   next_warningsR4   t   struct_list_valuet   item(    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyR     sn    			+31	#	$
	,c         C  s  |  j  |  } | j d  } | oC | j   oC t | j    d } t | t  rw d j d   | j   D  } n t | t  r t |  } n  | j d  } | r t | d j    d } n  | j d  p d
 } d | | p d | r | p d | j d	 d  | f S(   uD   Return operation documentation and invocation/returned value exampleu   inputi    u   , c         s  s+   |  ]! \ } } d  | t  |  f Vq d S(   u   %s=%sN(   R"   (   R   R   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pys	   <genexpr>  s    u   outputu   headersu   %s(%s)
 -> %s:

%s
Headers: %su    u   documentationN(
   R   R   R   R   R   R   R   R   R"   R&   (   R   Rw   R   R   R   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   help  s"    ("	u   soap11u%   http://schemas.xmlsoap.org/wsdl/soap/u   soap12u'   http://schemas.xmlsoap.org/wsdl/soap12/u    http://schemas.xmlsoap.org/wsdl/u    http://www.w3.org/2001/XMLSchemau)   http://www.w3.org/2001/XMLSchema-instancec      
   C  s`  t  | |  j | | |  j |  j  } t | d |  j } d |  _ t | d d t  p] d |  _	 i  } x | j
   p{ g  D] } | j   d k r| | d } | d }	 |	 d  k r t j d |  q| n  |	 | k r t j d	 |	  q| n  | | |	 <t j d
 | |	 f  t  |	 |  j | | |  j |  j  } t | d |  j }
 | j |
  q| q| W| S(   NR<   u    u   documentationR|   u   importu	   namespaceu   locationu"   WSDL location not provided for %s!u   WSDL %s already imported!u   Importing wsdl %s from %s(   R   RW   RE   R@   R   t   wsdl_uriR<   R   R   t   documentationR   R   R&   RJ   t   warningRT   t   xsd_uriR   (   R   t   urlR7   t   force_downloadR   Rb   t   imported_wsdlst   elementt   wsdl_namespacet   wsdl_locationt   imported_wsdl(    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   _url_to_xml_tree  s*    $	!


$c   L      C  s  d  } i  } xs | D]j \ } } | |  j k rQ | j d  rQ | | t |  <n  | |  j k r | j d  r t |  } q q Wi  } i  }	 i  }
 i  } i  } d t |  j   k r@| d d t r| j d d |  j } t |  } | j	 d |  j
  |  _
 n  |  j
 s$|  j
 d k r@| d p4|  j
 |  _
 q@n  i  } i |  j
 d  6} x | d d t png  D]l } | d d |  j d t } xH | pg  D]: } t | | | |  j |  j |  j | | |  j d	 | 	qWqoWt | g   x	| j D]} x| d
 d t pg  D]} i  } | d } | s>| d } n  t |  } | j |  } | d pfd  } | |  j k r9t |  } t j	 | d   } i | | 6} | d | f |	 k rt   } | | j d  <i | | d 6|	 | d | f <n |	 | d | f j   d } | | j | <t | j | <| j |  qt |  } | j	 t | d |   } | s| j	 t | d |   } t   } | | | <| | j d  <| | j | <t | j | <i | | d 6} n i | | 6} | |	 | d | f <qWqWx| j D]} | d } i  } |
 | <i  } | d <xX| j D]M}  |  d }! i  }" | |! <|  d |" d <|  d pqd j d  |" d <t |  d d t  pd |" d <|  d d t rt |  j d  |" d <t |  j d  }# |  j |#  |" d <n  |  d d t r!t |  j d  |" d <n  i  }$ |" d <|  d d t }% |% d  k	 r8x5 |  d d t D] }& t |& d  |$ |& d <q`Wq8q8WqWx| j D]}' t |' d  } | |
 k rqn  |
 | } |' d }( |' d d t  | j    d t }) |) r|) d  p
d  }* |) r|) d p d  }+ i |( d 6t! j" | d  d 6| d! 6|* d  6|+ d 6}, | |( <x|' j D]}  |  d }! |  d" d t  | j    d t }- |- o|- d# }. |, d j# |! i   }" |! |" d <|" j	 d |+  |" d <|. r|. |" d$ <n  |  d d t }/ |/ o1|/ d% d t  | j    d t }0 |0 rD|0 d& pGd  }1 g  }2 |/ ow|/ d' d t  | j    d t }3 x= |3 pg  D]/ }4 i |4 d d 6|4 d
 d
 6}5 |2 j$ |5  qWd |" k ri  }3 xj |2 D]b }6 t |6 j	 d   }7 t |6 j	 d
   }8 t% |	 |7 p|" d |8  }5 |5 r|3 j |5  qqWt% |	 |" d |1 |" d  |" d <|3 |" d' <y4 t  |" d j    d } | j d  }9 | j& }: Wn) t' t( f k
 r}; |" d }9 d  }: n X|9 r|9 |" d <|: |" d( <n  |" d =n d  |" d <d  |" d' <|  d d t }< |< o8	|< d% d t  | j    d t }0 |0 rK	|0 d& pN	d  }= d |" k r	t% |	 |" d |=  |" d <|" d =n
 d  |" d <d |" k r	i  }% |" d) <xM |" d j)   D]8 \ }> }? t% |	 |? |=  }@ |@ j*   d }A |@ |% |A <q	Wn  g  }B |< o"
|< d' d t  | j    d t }3 x= |3 p1
g  D]/ }4 i |4 d d 6|4 d
 d
 6}5 |B j$ |5  q2
WqkWqWxU| d* d t p
g  D];}C |C d }D |D s
q
n  | j# |D i   }E i  }F |E d+ <|C d p
d |E d <x |C j+ D] }G t |G d  }( |( | k rq
n  t! j" | |(  }, |F |G d <|G d, d t  | j    d t }H |H r[|H d- p^d  }I |H oy| j	 |H j,    }J |J o|  j j	 |J  }K |, j i |I d- 6|D d. 6|J d/ 6|K d0 6 q
Wq
W| si i d  d 6d+ 6| d <n  | S(1   Nu   xmlns:u   http://xml.apache.org/xml-soapu   typesR|   u   schemaR`   u   targetNamespaceu   urn:DefaultNamespacet   global_namespacesu   partu   elementu   typeu   namei    u   complexTypeu
   operationsu   styleu   parameterOrderu    u    u   parameter_orderu   documentationu   inputu   messageu	   input_msgu	   namespaceu   outputu
   output_msgu
   fault_msgsu   faultu   bindingu	   transportu   port_type_nameu	   operationu
   soapActionu   actionu   bodyu   partsu   headeru	   qualifiedu   faultsu   serviceu   portsu   addressu   locationu   service_nameu   soap_uriu   soap_ver(-   R&   t   soap_ns_urisRP   R   R   R   R   R   t   typesR   R<   R   RM   RW   RE   R   t   messageR   t   get_namespace_uriR   R	   R   R   R   R   t   portTypeR   t   splitR   R   R   t   bindingR   t   copyt   deepcopyt
   setdefaultR   R   R   t   AttributeErrorR   t	   iteritemsR   R   t
   get_prefix(L   R   Rb   R7   R   t   xsd_nst	   soap_urisR   R   t   elementst   messagest
   port_typest   bindingsR^   t   schemat   attrst   imported_schemasR   R   t   schemasR   t   partR   t   element_namet   type_nst   type_urit	   part_namet   fnt   odt   port_type_nodet   port_type_namet	   port_typet
   operationst   operation_nodet   op_namet   opR`   t
   fault_msgst   faultsR   t   binding_nodet   binding_namet   soap_bindingt	   transportt   styleR   t   op_opR;   R   R   t   parts_input_bodyt   parts_input_headersR   R   t   hdrt   input_headert
   header_msgt   header_partt   ns_uriR   t   eR   t   parts_output_bodyt   namet   msgt   msg_objt   tag_namet   parts_output_headersR   R   t   servt   portsR   t   addressR:   Rx   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   _xml_tree_to_services1  sj   
	"	


"'

$
$
**!






*

*
$	c   	      C  s  t  j d |  t } | rWd t j |  j   } t | t  r] t j	 j
 | |  } n  t j	 j |  rWt  j d | f  t | d  } t j |  } | j   | d d  t j d  d d  k s | d	 | k r/t j d
 t  t  j d | d t f  t  j d | d	 | f  t } qT| d |  _ | d |  _ | d SqWn  t t d <|  j | | |  } |  j | | |  } | rt | d  } i t j d  d d 6| d	 6|  j d 6|  j d 6| d 6} t j | |  | j   n  | S(   u"   Parse Web Service Description v1.1u   Parsing wsdl url: %su   %s.pklu   Unpickle file %su   ru   versioniu    i    u   urlu/   version or url mismatch! discarding cached wsdlu   Version: %s %su
   URL: %s %su	   namespaceu   documentationu   servicesu   stringu   wb(   RJ   RT   R   t   hashlibt   md5t	   hexdigestR   t
   basestringRB   RC   R   t   existst   opent   picklet   loadRV   R   R   R   R   t   RuntimeWarningRF   R<   R   R   R   R   R&  t   dump(	   R   R   R7   R   t   filename_pklRn   t   pklRb   R^   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyR]   %  sB    
5	



c         C  s   | |  j  | <d S(   uC   Set SOAP Header value - this header will be sent for every request.N(   RN   (   R   R   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   __setitem__X  s    c         C  sP   |  j  j   |  j j t j    rL t j d |  j  t j	 |  j  n  d S(   u+   Finish the connection and remove temp filesu   removing %sN(
   RW   RV   R1   RP   RQ   t
   gettempdirRJ   RT   RB   t   unlink(   R   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyRV   \  s    N(   R$   R%   t   __doc__R&   RF   R   R   R   Rv   Rp   R   R   Ru   R   R   R   R   R   R   R   t   xsi_uriR   R&  R]   R3  RV   (    (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyR.   K   s8   		]		d	&				4	G	
	"	3	c         C  s   i  } |  d k r d Sd |  k r: |  j d  \ } } n d |  } } d | k r | j d  \ } } | t |  | d <| d <n  d | k r | j d  \ | d <| d <n  | S(	   uJ   Parses proxy address user:pass@host:port into a dict suitable for httplib2Nu   @u    u   :u
   proxy_hostu
   proxy_portu
   proxy_useru
   proxy_pass(   R&   R   t   int(   t	   proxy_strt
   proxy_dictt	   user_passt	   host_portt   hostR   (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   parse_proxyd  s     u   __main__(6   R6  t
   __future__R    R'   R(   R   R   t   cPickleR-  t   ImportErrorR   R'  RG   RB   RQ   R   t    R   R   R   R   R   t	   simplexmlR   R   R   R	   R  R
   R   R   t   helpersR   R   R   R   R   R   R   R   R   R   t   wsseR   t	   getLoggerR$   RJ   R   R   R   R~   t   objectR.   R>  (    (    (    sR   /data/av2000/soap/soapenv/local/lib/python2.7/site-packages/pysimplesoap/client.pyt   <module>   sD   	("L	   	