xmlrcp - how to marshall objects
Adam Tauno Williams
awilliam at opengroupware.us
Fri Feb 5 15:15:42 EST 2010
On Fri, 2010-02-05 at 18:24 +0100, Jean-Michel Pichavant wrote:
> Jean-Michel Pichavant wrote:
> > Deos anyone knows where to find an code sample describing how to
> > implement the interface to marshall one object into XMLRPC compliant
> > structures ?
> > I googled without any success, and what google does not find does not
> > exist.
> > Let say I have this very simple class:
> > class Point:
> > def __init__(self, x, y):
> > self.x = x
> > self.y = y
> > I've looked into xmlrpc code, I see 2 options:
> > 1/ override the Marshaller class of client and server
> > 2/ looks like the lib is supporting a WRAPPER list system, it uses to
> > Marshall Datetime & Binary object. Can it be possible to add its own
> > class (could require to emplement the 'encode' method)
> > I sense I will spend much more time than required unless someone is
> > pointing me in the right direction.
> I realized I gave a poor example, actually the Point object is marshable
> (marshallable ? like to invent new words), xmlrpc will try to marshall
> using __dict__ if possible.
> import os
> class Point:
> def __init__(self, x, y):
> self.x = x
> self.y = y
> self.notMarshallable = os
This example doesn't make any sense. Why would you set a variable equal
to an important module in a class named Point?
What is it you are actually trying to accomplish? If you are trying to
create an object publishing environment then maybe something like -
rpc = xmlrpclib.loads(payload, use_datetime=True)
method = rpc[1].split('.')
classname = method[0]
methodname = method[1]
parameters = rpc[0]
classclass = eval(classname)
handler = classclass()
call = getattr(handler, method_name)
result = apply(call, parameters)
result = xmlrpclib.dumps(tuple([result]), methodresponse=True)
Obviously add copious amounts of exception handling and a security
model.
--
OpenGroupware developer: awilliam at whitemice.org
<http://whitemiceconsulting.blogspot.com/>
OpenGroupare & Cyrus IMAPd documenation @
<http://docs.opengroupware.org/Members/whitemice/wmogag/file_view>
More information about the Python-list
mailing list