3 from ApiExceptionCodes import *
5 VerboseExceptions = False
7 def EnableVerboseExceptions(x=True):
8 global VerboseExceptions
11 class ExceptionUnmarshaller(xmlrpclib.Unmarshaller):
14 return xmlrpclib.Unmarshaller.close(self)
15 except xmlrpclib.Fault, e:
16 # if the server tagged some traceback info onto the end of the
17 # exception text, then print it out on the client.
19 if "\nFAULT_TRACEBACK:" in e.faultString:
20 parts = e.faultString.split("\nFAULT_TRACEBACK:")
21 e.faultString = parts[0]
23 print "\n|Server Traceback:", "\n|".join(parts[1].split("\n"))
27 class ExceptionReportingTransport(xmlrpclib.Transport):
28 def make_connection(self, host):
30 if host.startswith("https:"):
31 return httplib.HTTPS(host)
33 return httplib.HTTP(host)
36 unmarshaller = ExceptionUnmarshaller()
37 parser = xmlrpclib.ExpatParser(unmarshaller)
38 return parser, unmarshaller
41 def __init__(self, url):
43 self.server = xmlrpclib.ServerProxy(self.url, ExceptionReportingTransport())
45 def noop(self, value):
46 return self.server.noop(value)