ckdZddlmZddlZejdkreZ ddlZn#e $rddlZYnwxYwddl Z ddl Z ddl Z ddl Z ddlZddlZddlmZmZmZmZmZddlmZmZmZmZddlmZmZmZdd lm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)mZm*Z*dd l+m,Z,e j-e.Z/Gd d e0Z1e2d d d ddZ3Gdde4Z5dZ6e.dkrdSdS)z*Pythonic simple SOAP Client implementation)unicode_literalsN3) __author__ __copyright__ __license__ __version__TIMEOUT)SimpleXMLElementTYPE_MAPREVERSE_TYPE_MAPStruct)get_http_wrapperset_http_wrapperget_Http) Aliasfetch sort_dictmake_keyprocess_elementpostprocess_element get_messagepreprocess_schemaget_local_nameget_namespace_prefixr urlsplit) UsernameTokencDeZdZddZdZejdkreZndZdZdS) SoapFaultNcj||_||_||_t||||dSN) faultcode faultstringdetail RuntimeError__init__)selfr"r#r$s 5/usr/lib/python3/dist-packages/pysimplesoap/client.pyr&zSoapFault.__init__+s8"& dI{FCCCCCc$|jd|jS)N: )r"r#r's r( __unicode__zSoapFault.__unicode__1s>>>4+;+;<r?Nz-----BEGIN CERTIFICATE-----zw+bzSaving CA certificate to %s)timeoutcacertproxysessionsadd_credentialsadd_certificate)keycertdomainaW <%(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"> z <%(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>)cache)+certsslkeyssllocationaction namespace exceptions xml_request xml_response http_headerspluginsstrictrospathdirname wsdl_basedirloggingDEBUG basicConfiglogsetLevel_SoapClient__soap_ns_SoapClient__soap_server_SoapClient__headers_SoapClient__call_headers startswithtempfilemkstempfdopendebugwritecloserIrhttphasattrrLrM_SoapClient__ns_SoapClient__xml wsdl_parseservices service_port)!r'rTrUrVrOrWrJnssoap_nswsdlr`rQrIrK soap_serverrHrZtraceusernamepasswordkey_filer[r\ url_schemenetlocr^queryfragmentrFfdfilenamefHttps! r(r&zSoapClient.__init__Ls     "$/114,(.B}"   :LB&&8@ 5JeX7??6D=99L(  }}   e , , , , LL    %r %#DNN %R %&DNN$DN)"  f''(EFF #+--LB "eR((A II3h> ? ? ? GGFOOOF GGIII zzDuxXXX  > >ty"344 > ))(H===  NH Nty"344 N ))hT")MMM  g DJJgDJ CU!C!C  r)c,jsfdSfdS)z)Return a pseudo-method that can be calledc&jg|Ri|Sr!)callargskwargsattrr's r(z(SoapClient.__getattr__..s#949T+KD+K+K+KF+K+Kr)c&jg|Ri|Sr!) wsdl_callrs r(rz(SoapClient.__getattr__..s#>4>$+P+P+P+P+P+Pr))rv)r'rs``r( __getattr__zSoapClient.__getattr__s3} QKKKKK KPPPPP Pr)c " t|j}|jt||j|j|j|z}t ||jo|j|j}|dd}|r"t| }n|}|rxt|dt r]|dtt } t| || |dn|rw|jdks |jd urdnd } |D][\} } t!| d r| r| jdd } n| } t'||| | | \nH|jd vr?t|dtt ||jr<|js5td |j D|_d|jvrG|js@t3jdt6|jt;|jr|dtt }|j D]N\} } t| t r| | 0|| | |jd O|r]|dtt }|D]}| ||jD]"}|||||||j|#| |_!|"||j!|_#t |j#|j|jdv}|j$rm|dtt d r:|dtt d }d}|r|r|j|%|}|d&}|d|ptN}|d(|d }n!tS|}tUtO|j+tO|j,||jD]"}|-||||||j|#|S)zPrepare 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. )methodrVrxrysoap_uri)rVprefixheadersNrBodyrxjettyFT namespaces)jbossas6cFg|]\}}|d||fS)zwsse:)rj.0kvs r( z#SoapClient.call..sG(F(F(F41a/0||G/D/D(FA(F(F(Fr)z wsse:Securityz/Replace wsse:Security with UsernameToken pluginHeader)rxadd_children_ns)r)rVrFaultrxerrorr$faultsr\).soap_namespacesrfrtdictrVrsr poplistitems isinstancevaluesdelattr import_noderg qualifiedrrrgetgetattrmarshallrhrvrir[warningswarnDeprecationWarningappendrchildren preprocessas_xmlrXsendrYrW get_operationget_nameunicode unmarshallr5rr"r# postprocess)r'rrrrxmlrequestrequest_headers parametersbodyuse_nsrrrxheader subheaderpluginresponse detailXmlr$ operation fault_namefaults r(rzSoapClient.calls#4>2j4v*..#'9(,)1 3333 #3$)2N/3y:::!**Y55  fllnn--JJJ  Q*Z]4DEE Q76d?+A+A+C+C&D&DFFFD D& ! ! !   Z] + + + +  Q"0G;;t~QV?V?VTT]aF" ? ?11l++  ))$55BBB((11!Q21>>>>  ?  = 0 0 GGFtO,B,B,D,D'E'EGGG P P P > G$- G"&(F(F4>;O;O;Q;Q(F(F(F#G#GD  dn , ,T\ , MK, . . . L    0 0 0   OWX$/E/E/G/G*H*HJJJF+1133 O O1a!122O&&q))))OOAqTYONNNN  .WX$/E/E/G/G*H*HJJJF,5577 . . ""9----l > >F   dGVT6$(NH > > > >#>>++ IIfd.>??#D$5*.*< *JLLL ? $xxD9O9O9Q9Q4R4RZ_``` $ d?3I3I3K3K.L.LTYZZZIF 8Y//11 8=, $ 2 26 : :I!*!3!3!5!5a!8!A!A!C!CJ&h/33J??J7E&//11!4??e?TTFF!)"4"4"6"677FGH$677#H$899"$$ $ l ? ?F   tXvtV%)^X ? ? ? ?r)c|jdkrdStd}t|j}|jrt|j}nt|j|z}dtt |d}|j d|zdz|d<||jtd|zt d d | Dt |tj d kr+td | D}|j|||| \}}||_||_t d d| Dt ||S)zSend SOAP request using HTTPtestNPOSTztext/xml; charset="UTF-8")z Content-typezContent-length" SOAPActionzPOST %s c"g|] \}}|d| Sr+r<rs r(rz#SoapClient.send..3s'KKK41aAA.KKKr)rc3XK|]%\}}t|t|fV&dSr!)strrs r( z"SoapClient.send..;s7HH1CFFCFF+HHHHHHr))rrc"g|] \}}|d| Srr<rs r(rz#SoapClient.send..Bs'LLL41aAA.LLLr))rTrrvrUlenupdaterZrdinfornjoinrr:r;rrqrrcontent) r'rr http_methodrT soap_actionrrrs r(rzSoapClient.sends =F " "FF&kk t}%% = 4dk**KKdk**V3K8!#c((mm   ; "$'+$5$;GL !t())) X%&&& $))KK7==??KKKLLMMM # ;   HH HHHHHG I-- kW.>>'    $))LL8>>;K;KLLLMMNNN 'r)c*|jdrdpd}|jss|jD]X\}}d|dDD]\}}|d|kr ||f|_nt d|zYn/|j|jdd|jd}|js |d |_|d |}|st d |d |j|S) Nr@r=cg|]}|Sr<r<)rports r(rz,SoapClient.get_operation..Ks'R'R'R'R'R'Rr)portssoap_verz2Cannot determine service in WSDL: SOAP version: %srrrT operationsz Operation z' not found in WSDL: Service/Port Type: )rfrjrwrvrr%rTr)r'rr service_nameservice port_namerrs r(rzSoapClient.get_operationFsk>,,X66C8Ox V)-)<)<)>)> F F% g'R'R9I9O9O9Q9Q'R'R'RFFOItJ'833,8),C)4'(:2&&v.. '"8$x(( y #H-DK ) # #&{39rDN&{3DN  D"+FDN"C"CD 2265$OO49V-f---x8,,,5577BB6RVR]B^^.T[[]]++A..r)cdx}x}}i}|r/t|d}||}|r|ri} t|D]h\} } t|| } t| tr"| | vrt d| z| | | | <c| | | <i||| i|r|s|r|r|||i|||\} }}| std|zt||}t| d}g}| D]U\}}|j |}|j |st|tr ||j d<|||fV|jdvr|}n|}n|o| }||fS)z'Build params from input and args/kwargsNrz)Unhandled key %s. use client.help(method)z"Invalid Args Structure. Errors: %s)axis)rkeys enumeraterrKeyErrorrwsdl_validate_params ValueErrorrrrr referencesrrrg)r'rrrrr inputname inputargsall_argsdidxargrNvaliderrorsrtreerootrrroot_nss r(rzSoapClient.wsdl_call_get_params|s0)---Y  )UZZ\\**1-Ii(I  ,T ,A%dOO ! !S9>>++,,S1c4((!#~~&'RUX'XYYY XAcFF AcFF OOYN + + +  /f / / 5F 3444&*&?&?x&P&P #E68 P !E!NOOOUH--D &&q)DF  & &1/!,q)1jF.C.C1)0AL& q!f%%%%!Z//#. Fr)c `g}g}d}t|t|krd}t|tst|trd}nd}|tkrt}t|t tt fs|tjvrjt||ksU|S ||ng#d}| dt|d|dt|d|Yn%xYwn t|t rst|dkr`t|t sK| |d|\}}} |sd}| ||j | nt|tr|r|r|D]v} | |vr!d}| d | d |d |'| || || \}}} |sd}| ||j | w|D]} | |vr|j d | d |d| n|r|s|j d|d |n|s |rd}| d|d |nnt|t rQ|d} |D]E} | | | \}}} |sd}| ||j | Fn?|s=d}| dt|d|dt|d||||fS)zValidate the arguments (actual values) for the parameters structure. Fail for any invalid arguments or type mismatches.TFNz,Type mismatch for argument value. parameter(z): z, value(rrz Argument key z not in parameter. parameter: z, args: zParameter key z not in args. parameter: z , value: z'parameter keys not in args. parameter: z'Args keys not in parameter. parameter: zType mismatch. parameter() typerrrrrtupler rrrrextend) r'structvaluerrr typematch next_valid next_errors next_warningsrNstruct_list_valueitems r(rzSoapClient.wsdl_validate_paramssV <<4;; & &I&$'' Jud,C,C III S==F&4u"5661 z6X]__;T;T;;&((e.?UF5MMMMU!EMMMjnoujvjvjvjvx~x~x~AEFKALALALALNSNS#TUUUUU  % %) z#f++*:*::eUYCZCZ*:595N5NvVWyZ_5`5` 2J ]  MM+ & & & HOM * * * * % % z %  7 7C&(( % ehehehjpjpjprwrw&xyyyyAEAZAZ[abe[fhmnqhrAsAs> K)*$)E k222' 6666!yyC%'''dgdgdgioioioqvqv(wxxxy  Y_Y_Y_afaf ghhhh   W]W]W]_d_deffff  % % z &q  / /9=9R9RSdfj9k9k6 K!"!E k*** ....  /  zE MMMtTZ||||]c]c]ceijoepepepeprwrwx y y yvx((s 7 C?Dc ||}|d}|o:|o&t|d}t |t r2dd|D}n$t |trt|}|d}|r-t|dd}|dpd}|d|pd d |r|pd d |d d d | S)zDReturn operation documentation and invocation/returned value examplerr, c3DK|]\}}|dt|VdS)=N)r5rs r(rz"SoapClient.help..s7OOADGGG4OOOOOOr)rrN(rDz) -> z: documentationz Headers: ) rrrrrrrrr5)r'rrrrrs r(helpzSoapClient.helpsH&&v..  g&&D%,,..DT%,,..-A-A!-D eT " " IIOOOOOOOEE t $ $ KKEx((  ;)H-446677:F-- **2d FF KRKK  v # # # MM/2 . . . . G   r)r=r@)z%http://schemas.xmlsoap.org/wsdl/soap/z'http://schemas.xmlsoap.org/wsdl/soap12/z http://schemas.xmlsoap.org/wsdl/z http://www.w3.org/2001/XMLSchemaz)http://www.w3.org/2001/XMLSchema-instancec t||j|||j|j}t ||j}d|_t|ddpd|_i}| pgD]}| dvr|d}|d} | t d |zH| |vrt d | zj||| <t d |d | t| |j|||j|j}t ||j} || |S)zJUnmarshall the WSDL at the given url into a tree of SimpleXMLElement nodes)rVrDrFrimportrVrTNz"WSDL location not provided for %s!zWSDL %s already imported!zImporting wsdl z from )rrqr`rZr wsdl_urirVrrrrrdwarningrnxsd_urir) r'urlrQforce_downloadrrzimported_wsdlselementwsdl_namespace wsdl_location imported_wsdls r(_url_to_xml_treezSoapClient._url_to_xml_treesrCE>4;LdN_``t}===$TT/%G%G%GHHNB}}," 0 0G%%''H55!(!5 ' 3  (KK D~ UVVV N22KK ;m KLLL0>}- WXXXM49e^TM^`d`qrr 0 M M M   /// r)c0d}i}|ddD]d\}}||jvr'|dr||t|<||jkr$|drt|}ei}i} i} i} i} dt |ddvr|ddrS|d|j} t | dd}|d |j|_|jr |jd kr|d p|j|_i}d|ji}|ddpgD]I}|d|jd }|pgD]/} t| |||j|j |j |||j | 0Jt|g|jD]}|d dpgD]}i}|d}|s|d}t|}||}|dpd}||jkrt|}t#j|d}||i}|d|f| vr.t%}||jd<|d|i| |d|f<n(| |d|fd}||j|<d|j|<||t|}|t-|d|}|s`|t-|d|}t%}|||<||jd<||j|<d|j|<|d|i}n||i}|| |d|f<|jD]H}|d}ix}| |<ix}|d<|jD]&} | d}!ix}"||!<| d|"d<| dpdd|"d<t5| ddpd|"d<| ddrOt| jd|"d<t| jd}#| |#|"d<| ddrt| jd|"d<ix}$|"d <| d!d}%|%.| d!dD] }&t|&d|$|&d<!(J|jD]}'t|'d}|| vr| |}|'d}(|'d"t=|d })|)r|)d#pd}*|)r|)dpd}+|(t?j |d||*|+d$x},| |(<|'jD]u} | d}!| d%t=|d }-|-o|-d&}.|,d!|!i}"|!|"d<|"d|+|"d<|.|.|"d'<| dd}/|/o,|/d(t=|d }0|0r|0d)pd}1g}2|/o,|/d*t=|d }3|3pgD](}4|4d|4d d+}5|2"|5)d|"vri}3|2D]w}6t|6d}7t|6d }8tG| |7p|"d|8}5|5r|3|5wxtG| |"d|1|"d|"d<|3|"d*< t=|"dd}|jd}9|j$}:n(#tJtLf$r};|"d}9d}:Yd};~;nd};~;wwxYw|9r |9|"d<|:|"d,<|"d=n d|"d<d|"d*<| dd}<|tG| |>|=}?t=|?d}@|?|%|@<.g}A|.6s,HHaQ4HHr)c3FK|]}t|tu|VdSr!rBrCs r(rz3SoapClient._xml_tree_to_services..6seRHRHXYvz{|v}v}BFwFwFRSwFwFwFwFRHRHr))+ soap_ns_urisrjrr"rrr,rrVrrgrqr`rr7rget_namespace_urir rrrrrportTypersplitrrrr;rcopydeepcopy setdefaultrrrAttributeErrorrr get_prefixsortedelements)Kr'rzrQr$xsd_ns soap_urisrrrPmessages port_typesbindingsrvr-attrsimported_schemasr/r,schemasr7r0r& element_nametype_nstype_uri part_namefnodport_type_noder= port_typeroperation_nodeop_nameoprxr:rr binding_node binding_name soap_bindingr<r3r;op_oprUrrparts_input_bodyparts_input_headersrrhdr input_header header_msg header_partns_urirrDrparts_output_bodymsgmsg_objtag_nameparts_output_headersrrservrrr@rTrrsK r(_xml_tree_to_servicesz SoapClient._xml_tree_to_services7s_  G + +DAqD%%%!,,x*@*@%/0 .++,DL  Q\\(%;%; '**  ,tDG}}/C/C/E/E E EtG5))) NH>>VAAAY!&+ KT^7M%M%M!%&7!8!JDN!4>2T'///52 G GEeHUCCCG!-R G G!&*:Hdl"&"4di"0$2C4EGGGGG G Hb)))|& E& EGe444:% E% E#I #0#'>%wv &BCJJLLQO/7BM),/4BM),IIg&&&,#?#?L!h|Y&Q&QRRB 5%\\(<PX*Y*YZZ#XX(*9 .6 d+3; i038 i0#*6?B"7#/"4=DHgfoy9::K% EN#m U UN+F3N57 7I >235 5J<0"0": U U(0+--Z(,W57 )78H)I)OR(V(VWZ([([$%&-nn_TY.Z.Z.Z&[&[&a_a?#!>'777K&4^5I)5T&U&UB{O-n.B9.MNNB&4&F&Fr&J&JB{O!>(%888X'5n6KI6V'W'WB|$132 R -'u===%!/u!E!E!EUU4B5CS4T4T 5=11) U,!La 5a 5L+L,@AANZ//">2I'/L'< d9;K;K;M;M6N6NV[\\\L$Bk)BJdI :\'%:BdE%"mIl,CDD"0& 00 Gh|,#/"8N 5N 5(0&{tI>>Z&&D9I9I9K9K4L4LTY"Z"Z"Z$($:T']$Bd!2%%#.xL9IK\#]#]BxL<((#'BxL2%%,..FR\!,/668833"-h=N"O"O#'==#3+2x(((*$ _VVHi>N>N>P>P9Q9QY^%_%_%_%m55F&,Y&7PPC(//44445YN 5ftIU3339r  G"6?L &&|R88D$& &EDM$+O$<$BD !   -d9o>> #x//04 h|>T0U0UU%V -$yT)2B2B2D2D-E-EUSSS":wz':Bd"Jy}}W5G5G5I5I'J'J#G(9(=(=h(G(G ($0 ( (    ( 1#b$Z0HRLHH8??#4#4HHHHH6RHRH]e]l]l]n]nRHRHRHLHLHH    G7{{DM00999AAs2A]44^ ^^ctd|zd}|rdtj|z}t |t r tj ||}tj |r%td|t|d}tj |}||dddtjd d ddks |d |krnt#jd t&td |dd ttd|d d |d}n"|d|_|d|_|dSt,t.d<||||}||||}|rct|d}tjd d ||j|j|d}tj||||S)z"Parse Web Service Description v1.1zParsing wsdl url: %sFz%s.pklzUnpickle file rr;NrGr5rr#z/version or url mismatch! discarding cached wsdlz Version: zURL: TrVrrvstringwb)r;r#rVrrv)rdrnhashlibmd5 hexdigestr basestringr]r^rexistsopenpickleloadrpr rIrrRuntimeWarningrVrrr r*rudump) r'r#rQr$ filename_pklrpklrzrvs r(ruzSoapClient.wsdl_parse?s8 (3.///  +#gk#&6&6&@&@&B&BBL%,, A!w||E<@@ w~~l++ + ?@@@s++k!nn y>#2#&+*;C*@*@*CCRC*HHHCPUJZ]L]L]M"SUcdddIII#i...++NOOOIIIc%jjj##>???%)NN%(%5DN),_)=D&z?*&)"$$S%@@--dE>JJ  \4((A&,S11!4!^!%!3$ C KQ    GGIIIr)c||j|<dS)zCSet SOAP Header value - this header will be sent for every request.N)rh)r'rrs r( __setitem__zSoapClient.__setitem__rs$tr)c|j|jt jr=t d|jztj |jdSdS)z+Finish the connection and remove temp filesz removing %sN) rqrprIrjrk gettempdirrdrnr]unlinkr,s r(rpzSoapClient.closevsp  ; ! !("5"7"7 8 8 # IImdk1 2 2 2 Idk " " " " " # #r)c <d}|dz }|jD]{}t|tr|j}nTt|tr|j}n7t|t r!|jddkrt|}ns|d|zz }||j D]}|d|zz }|j |d}|D]}||}|ddkr|d |d zz }|d |d zz }|d |dzz }|d|dzz }|dz }|d}t|D]x}| |}| d}|o:| o&t| d}d} t|trd|vs |ddkr|D]l\} } t| tr| j} n?t| tr| j} n"t| t r | jd} | | d| dz } m| d} | r-t|d d} |d|d d| dddz }|d| zz }z |S)Nz SOAP CLIENTz ELEMENTSrr&z %sz SERVICE (%s)rrz PORT (%s)r1z Location: %srTz Soap ver: %sz Soap URI: %srz OPERATIONSrrrrDrr+rrz rr4z > %s)rPrr r7rxml_typerrNr5rvrOrrrrrr) r'srDrrrrrr input_strrrrs r(r6zSoapClient.__repr__}s  ]  A!T"" JAu%% JAv&& 158Y+>+>GG A AA}" 1" 1G "W, ,AM'*73E 1 1T{ #t++X%V 44)D,<<<)D,<<<)D,<<<''!,/ !' !3!311I $ 2 29 = =I%MM'22E!PellnnPellnn9M9Ma9PE "I!%.. A'u44l8KT8Q8Q(- AA1#-a#6#6!1() AA%/5%9%9!1() AA%/6%:%:!1()aA )111aaa-@ @ &]]844FG!%i&9&@&@&B&B!C!CA!FA!&)))!#2#A&00AA-1 1Br))F)r7r8r9__doc__r r&rrrrrrrrrrFr r"xsi_urir*rururrpr6r<r)r(rCrCJs(( $TTt4DDrtT7"%T ^!^!^!^!@QQQhhhT'''R.>>>///62 2 2 hE)E)E)N   ,2:3;L2H0G9G!!!FFFFP1111f%%%###11111r)rCci}|dSd|vr|d\}}nd|}}d|vr0|d\}}|t|c|d<|d<d|vr|d\|d<|d<|S) zJParses proxy address user:pass@host:port into a dict suitable for httplib2N@rD: proxy_host proxy_port proxy_user proxy_pass)rIint) proxy_str proxy_dict user_pass host_porthostrs r( parse_proxyrsJ i(s33 99!99  i__S)) d=A3t99: < *\": i=F__S=Q=Q: < *\": r)__main__)7r __future__rr:r;rrcPickler ImportErrorrJrzrar]rkrrDrrrr r simplexmlr r r rr<rrrhelpersrrrrrrrrrrrwsser getLoggerr7rdr%rrrobjectrCrr<r)r(rs10'''''' ;GMMMMM  JJJJJJJJJJJJJJKKKKKKKKKKKKCCCCCCCCCCNNNNNNNNNNNNNNNNNNNNNNNNNNNN g!!^^^^^ ^^^.$ 6 4 7 /7 d d d d d d d d L" zDs  ,,