[Twisted-Python] Hooking up XML-RPC to twisted...

Itamar Shtull-Trauring lists at itamarst.org
Sun Oct 14 13:31:30 EDT 2001


...turned out to be trivial. The following is example code (depends on 
latest CVS since twisted used to reject unknown content-types.)


===================================================================

"""Hook up an object to XML-RPC. An example session:

     >>> s= xmlrpclib.Server('http://localhost:7080/')
     >>> s.echo("lala")
     ['lala']
     >>> s.echo("lala", 1)
     ['lala', 1]
     >>> s.echo("lala", 4)
     ['lala', 4]
     >>> s.echo("lala", 4, 3.4)
     ['lala', 4, 3.3999999999999999]
     >>> s.echo("lala", 4, [1, 2])
     ['lala', 4, [1, 2]]
"""

from twisted.web import resource
import xmlrpclib


class XMLRPC(resource.Resource):

     isLeaf = 1

     def __init__(self, perspective):
         resource.Resource.__init__(self)
         self.perspective = perspective

     def render(self, request):
         args, methodName = xmlrpclib.loads(request.content)
         method = getattr(self.perspective, "perspective_%s" % methodName)
         return xmlrpclib.dumps((apply(method, args),))


class test:

     def perspective_echo(self, *args):
         return args


def main():
     from twisted.internet.main import Application
     from twisted.web import server
     app = Application("xmlrpc-test")
     app.listenOn(7080, server.Site(XMLRPC(test())))
     app.run(0)


if __name__ == '__main__':
     main()






More information about the Twisted-Python mailing list