+++ /dev/null
-import xmlrpclib
-
-from ApiExceptionCodes import *
-
-class ExceptionUnmarshaller(xmlrpclib.Unmarshaller):
- def close(self):
- try:
- return xmlrpclib.Unmarshaller.close(self)
- except xmlrpclib.Fault, e:
- # if the server tagged some traceback info onto the end of the
- # exception text, then print it out on the client.
-
- if "\nFAULT_TRACEBACK:" in e.faultString:
- parts = e.faultString.split("\nFAULT_TRACEBACK:")
- e.faultString = parts[0]
- if BaseClient.VerboseExceptions:
- print "\n|Server Traceback:", "\n|".join(parts[1].split("\n"))
-
- raise e
-
-class ExceptionReportingTransport(xmlrpclib.Transport):
- def make_connection(self, host):
- import httplib
- if host.startswith("https:"):
- return httplib.HTTPS(host)
- else:
- return httplib.HTTP(host)
-
- def getparser(self):
- unmarshaller = ExceptionUnmarshaller()
- parser = xmlrpclib.ExpatParser(unmarshaller)
- return parser, unmarshaller
-
-class BaseClient():
-
- VerboseExceptions = False
-
- def __init__(self, url):
- self.url = url
- self.server = xmlrpclib.ServerProxy(self.url, ExceptionReportingTransport())
-
- def noop(self, value):
- return self.server.noop(value)
-
- @staticmethod
- def EnableVerboseExceptions(x=True):
- BaseClient.VerboseExceptions = x
-