
    c(                        d Z ddlZddlZddlZddlmZ 	 ddlZddlmZ n# e	$ r ddl
mZ ddlmZ Y nw xY wd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	 i Zi Z  G d d          Z!	 ddl"Z"ej#        dk    rF ee"j                   ed          k    r)ddl$Z%e%j&        j'        j(        Z)d Z*e*e%j&        j'        _(         G d de"j+        e!          Z,e,ed<   e -                    dg           .                    d           e -                    dg           .                    d           e -                    dg           .                    d           n# e	$ r dZY nw xY w G d de!          Z/e/ed<   e -                    dg           .                    d           ej0        dk    r)e -                    dg           .                    d           	 ddl1Z1	 ddl2m3Z3 n$# e	$ r 	 ddl3m3Z3 n# e	$ r	 ddl4m3Z3 Y nw xY wY nw xY w G d de!          Z5e5ed<   e -                    dg           .                    d           e -                    dg           .                    d           e -                    dg           .                    d           n# e	$ r Y nw xY w G d d           Z6dg fd!Z7dg fd"Z8d# Z9 e8             dS )$z%Pythonic simple SOAP Client transport    N)LooseVersion)	CookieJar)request   )
__author____copyright____license____version__TIMEOUT)SimpleXMLElementTYPE_MAPStructFc                     t          | ||          }|t          j        k    r+|                    t          j        t          j        d           |S )Nr   )
realsocketsocketSOCK_STREAM
setsockoptIPPROTO_TCPTCP_NODELAY)familytypeprotosockobjs       8/usr/lib/python3/dist-packages/pysimplesoap/transport.py
socketwrapr   +   sD    VT5116%%%v163EqIII    c                   $    e Zd Zed             ZdS )TransportBasec                 *    | j         t          |         v S N)_wrapper_name_http_facilities)clsfeature_names     r   supports_featurezTransportBase.supports_feature:   s     $4\$BBBr   N)__name__
__module____qualname__classmethodr%    r   r   r   r   9   s2        C C [C C Cr   r   3z0.7.7c           
      f    |	                     dd          dz  }
t          | |||||||
           d S )N"disable_ssl_certificate_validationT)portkey_file	cert_filetimeoutcontextcheck_hostname)getorig__init__)selfhostr.   r/   r0   r1   r2   r3   argskwargschks              r   fixerr;   I   sN    **A4HH4OCt$#Wg"$ $ $ $ $ $r   c                   .    e Zd Zdej        z  ZdZddZdS )Httplib2Transportzhttplib2 %shttplib2NFc                 ~   i }|r<dd l }t          j        d
d|j        i||d<   t                              d|z             t          t          j                  t          d          k    r||d<   t          t          j                  t          d          k    r|d u |d<   ||d	<   t          j        j	        | fi | d S )Nr   
proxy_type
proxy_infozusing proxy %sz0.3.0r1   z0.7.0r-   ca_certsr*   )
socksr>   	ProxyInfoPROXY_TYPE_HTTPloginfor   r
   Http__init__)r6   r1   proxycacertsessionsr9   rC   s          r   rI   zHttplib2Transport.__init__X   s    F 3'/'9'd'dUEZ'd^c'd'd|$)E1222 H011\'5J5JJJ$+y!H011\'5J5JJJ?E~;<%+z"M"422622222r   NNF)r&   r'   r(   r>   r
   _wrapper_versionr!   rI   r*   r   r   r=   r=   T   s;        (8+??"	3 	3 	3 	3 	3 	3r   r=   r>   rJ   rK   r1   c                   <    e Zd Zdej        z  ZdZddZddi fdZdS )	urllib2Transportz
urllib2 %surllib2NFc                    |$|                      d          st          d          |rt          d          |rt          d          g }t          j        d         dk    rt          j        dk    s&t          j        d         dk    rct          j        d	k    rSt	          j                    }d
|_        t          j        |_        |	                    t          j        |                     |r3|	                    t          j        t                                           t          j        | }|j        | _        || _        d S )Nr1   z/timeout is not supported with urllib2 transportz-proxy is not supported with urllib2 transportz,cacert is not support with urllib2 transportr      )rS      	      )rV   rS   r   F)r2   )r%   RuntimeErrorsysversion_infosslcreate_default_contextr3   	CERT_NONEverify_modeappendrQ   HTTPSHandlerHTTPCookieProcessorr   build_openeropenrequest_opener_timeout)r6   r1   rJ   rK   rL   handlersr2   openers           r   rI   zurllib2Transport.__init__u   s+   )>)>y)I)IPQQQ 	PNOOO 	OMNNNa A%%#*:g*E*Ea A%%#*:g*E*E022G%*G""%-GOOG0AAABBB 	FOOG7	DDEEE%x0$kr   GETc                 X   t          j        |||          }	 |                     || j                  }|                                |                                fS # t           j        $ r>}|j        dk    r |                                |                                fcY d }~S d }~ww xY w)N)r1   i  )rQ   Requestrc   rd   rG   read	HTTPErrorcode)r6   urlmethodbodyheadersreqfs          r   r   zurllib2Transport.request   s    oc411	&##C#??A6688QVVXX%%  	& 	& 	&v}}6688QVVXX%%%%%%%	&s   AA B)+3B$B)$B))NNNF)	r&   r'   r(   rQ   r
   rN   r!   rI   r   r*   r   r   rP   rP   q   sX        #g&99M       0 #(dB & & & & & &r   rP   rQ   rL   )rS      )StringIOc                   .    e Zd Zej        ZdZddZd ZdS )pycurlTransportpycurlNFc                 4    || _         |pi | _        || _        d S r    )r1   rJ   rK   )r6   r1   rJ   rK   rL   s        r   rI   zpycurlTransport.__init__   s    "DL"DJ DKKKr   c                 `   t          j                    }|                    t           j        |           d| j        v r+|                    t           j        | j        d                    d| j        v r+|                    t           j        | j        d                    d| j        v r(|                    t           j        d| j        z             t                      | _	        |                    t           j
        | j	        j                   | j        r |                    |j        | j                   |                    t           j        | j        rdpd           |                    t           j        | j        rdpd           |                    t           j        | j                   |                    t           j        | j                   |dk    r@|                    t           j        d           |                    t           j        |           |rXd	 |                                D             }t,                              |           |                    t           j        |           |                                 |                                 i | j	                                        fS )
N
proxy_host
proxy_port
proxy_userz%(proxy_user)s:%(proxy_pass)sr   r   rS   POSTc                 "    g | ]\  }}|d |S )z: r*   ).0kvs      r   
<listcomp>z+pycurlTransport.request.<locals>.<listcomp>   s'    FFFdaAAAqq)FFFr   )rw   CurlsetoptURLrJ   PROXY	PROXYPORTPROXYUSERPWDrt   bufWRITEFUNCTIONwriterK   CAINFOSSL_VERIFYPEERSSL_VERIFYHOSTCONNECTTIMEOUTr1   r   r}   
POSTFIELDSitemsrF   debug
HTTPHEADERperformclosegetvalue)r6   rm   rn   ro   rp   chdrss          r   r   zpycurlTransport.request   s   AHHVZ%%%tz))tz,'?@@@tz)))4:l+CDDDtz)),.MPTPZ.Z[[[zzDHHHV)48>::: { 04;///HHV*DK,=A,BCCCHHV*DK,=A,BCCCHHV*DL999HHV^T\222a(((*D111 2FFgmmooFFF		$*D111IIKKKGGIIItx((****r   rM   )	r&   r'   r(   rw   versionrN   r!   rI   r   r*   r   r   rv   rv      sD        !> 	! 	! 	! 	!
	+ 	+ 	+ 	+ 	+r   rv   rw   c                       e Zd ZdZd Zd ZdS )DummyTransportz$Testing class to load a xml responsec                     || _         d S r    )xml_response)r6   r   s     r   rI   zDummyTransport.__init__   s    (r   c                     t                               d||           t                               |           t                               |           i | j        fS )Nz%s %s)rF   r   r   )r6   locationrn   ro   rp   s        r   r   zDummyTransport.request   sG    		'68,,,		'		$4$$$r   N)r&   r'   r(   __doc__rI   r   r*   r   r   r   r      s8        ..) ) )% % % % %r   r   c                    | .	 t           |          S # t          $ r t          | d          w xY w|s&t                               dt           d                   S t                                           }g }|D ]=}|D ]4}|t
                              |g           v r|                    |           5|}g }>	 |d         }t           |         S # t          $ r t          d|          w xY w)Nz transport is not availabler>   rQ   r   z6no transport available which supports these features: )_http_connectorsKeyErrorrW   r4   keysr"   r^   
IndexError)libraryfeaturescurrent_candidatesnew_candidatesfeature	candidatecandidate_names          r   get_http_wrapperr      s=   	M#G,, 	M 	M 	M'''KLLL	M
  M##J0@0KLLL *..00N  + 	1 	1I,00"====%%i000+0+A.  //  e e elYaYacdddes    .5C
 
C'c                 0    t          | |          at          S )z'Set a suitable HTTP connection wrapper.)r   rH   )r   r   s     r   set_http_wrapperr   
  s     GX..DKr   c                      t           S )zReturn current transport class)rH   r*   r   r   get_Httpr     s	     Kr   ):r   loggingrZ   rX   distutils.versionr   rQ   	cookielibr   ImportErrorurllibr   http.cookiejar r   r   r	   r
   r   	simplexmlr   r   r   	getLoggerr&   rF   r   r   AF_INETr   r   r   r"   r   r>   r   http.clienthttpclientHTTPSConnectionrI   r5   r;   rH   r=   
setdefaultr^   rP   rY   rw   	cStringIOrt   iorv   r   r   r   r   r*   r   r   <module>r      s   , +  



 



 * * * * * *)NNN####### ) ) )))))))(((((((() K J J J J J J J J J J J J J 9 9 9 9 9 9 9 9 9 9g!!   C C C C C C C C*BOOO
{S\\(*>??<<PWCXCXXX {2;	$ 	$ 	$ 05#,
3 3 3 3 3HM= 3 3 3( $5Z ,,33J???"--44Z@@@	2..55jAAAA7  	 	 	GD	B$& $& $& $& $&} $& $& $&L /     J + + 2 29 = = =v	2..55i@@@8@MMM$&&&&&&& $ $ $	$))))))) 	$ 	$ 	$########	$$&+ &+ &+ &+ &+- &+ &+ &+P "1X,,33H==="--44X>>>	2..55h????m  	 	 	D	r
% 
% 
% 
% 
% 
% 
% 
% "B 0 0 0 0B "B             sg   
! 553AE E'&E'J  G' 'H-G43H4H?HHHHJ"!J"