1 #!/usr/bin/env python 2 3 import libxml2dom.xmlrpc 4 5 # Some examples from the specification. 6 7 request = """<?xml version="1.0"?> 8 <methodCall> 9 <methodName>examples.getStateName</methodName> 10 <params> 11 <param> 12 <value><i4>41</i4></value> 13 </param> 14 </params> 15 </methodCall>""" 16 17 req = libxml2dom.xmlrpc.parseString(request) 18 assert req.methodName == "examples.getStateName" 19 assert req.parameterValues == [41] 20 assert req.fault is None 21 print "Method name:", req.methodName 22 print "Parameter values:", req.parameterValues 23 print "Fault:", req.fault 24 25 response = """<?xml version="1.0"?> 26 <methodResponse> 27 <params> 28 <param> 29 <value><string>South Dakota</string></value> 30 </param> 31 </params> 32 </methodResponse>""" 33 34 resp = libxml2dom.xmlrpc.parseString(response) 35 assert resp.methodName is None 36 assert resp.parameterValues == ["South Dakota"] 37 assert resp.fault is None 38 print "Method name:", resp.methodName 39 print "Parameter values:", resp.parameterValues 40 print "Fault:", resp.fault 41 42 failed = """<?xml version="1.0"?> 43 <methodResponse> 44 <fault> 45 <value> 46 <struct> 47 <member> 48 <name>faultCode</name> 49 <value><int>4</int></value> 50 </member> 51 <member> 52 <name>faultString</name> 53 <value><string>Too many parameters.</string></value> 54 </member> 55 </struct> 56 </value> 57 </fault> 58 </methodResponse>""" 59 60 f = libxml2dom.xmlrpc.parseString(failed) 61 assert f.methodName is None 62 assert f.parameterValues == [] 63 assert f.fault.code == "4" 64 assert f.fault.reason == "Too many parameters." 65 print "Method name:", f.methodName 66 print "Parameter values:", f.parameterValues 67 print "Fault code:", f.fault.code 68 69 # Python Package Index examples. 70 71 search = """<?xml version="1.0"?> 72 <methodCall> 73 <methodName>search</methodName> 74 <params> 75 <param> 76 <value> 77 <struct> 78 <member> 79 <name>name</name> 80 <value><string>libxml2dom</string></value> 81 </member> 82 <member> 83 <name>description</name> 84 <value>XML</value> 85 </member> 86 </struct> 87 </value> 88 </param> 89 <param> 90 <value> 91 <string>and</string> 92 </value> 93 </param> 94 </params> 95 </methodCall>""" 96 97 s = libxml2dom.xmlrpc.parseString(search) 98 assert s.methodName == "search" 99 assert s.parameterValues == [[("name", "libxml2dom"), ("description", "XML")], "and"] 100 assert s.parameterItems == [ 101 (None, [("name", "libxml2dom"), ("description", "XML")]), 102 (None, "and") 103 ] 104 assert s.fault is None 105 print "Method name:", s.methodName 106 print "Parameter values:", s.parameterValues 107 print "Parameter items:", s.parameterItems 108 print "Parameter map:", s.parameterMap 109 print "Fault:", s.fault 110 111 # vim: tabstop=4 expandtab shiftwidth=4