In the xmlrpc auth with auth.wrapper example below, how to pass the avatar information to the EXAMPLE(XML_RPC) class? e.g. ============================= xmlrpc_welcome(){ return "Welcome "+username } ============================= Cheers Andrey from zope.interface import Interface, implements from twisted.cred import portal from twisted.cred import checkers from twisted.web2 import channel from twisted.web2 import http from twisted.web2 import responsecode from twisted.web2 import server from twisted.web2 import xmlrpc from twisted.web2.auth import digest from twisted.web2.auth import basic from twisted.web2.auth import wrapper from twisted.application import service, strports class IHTTPUser(Interface): pass class HTTPUser(object): implements(IHTTPUser) class HTTPAuthRealm(object): implements(portal.IRealm) def requestAvatar(self, avatarId, mind, *interfaces): if IHTTPUser in interfaces: return IHTTPUser, HTTPUser() raise NotImplementedError("Only IHTTPUser interface is supported") class Example(xmlrpc.XMLRPC): """An example object to be published.""" addSlash = True def xmlrpc_echo(self, request, x): """Return all passed args.""" return x def xmlrpc_add(self, request, a, b): """Return sum of arguments.""" return a + b portal = portal.Portal(HTTPAuthRealm()) checker = checkers.InMemoryUsernamePasswordDatabaseDontUse(guest='guest123') portal.registerChecker(checker) rsrc = Example() credFactories = (basic.BasicCredentialFactory('My Realm'), digest.DigestCredentialFactory('md5', 'My Realm')) ifaces = (IHTTPUser,) root = wrapper.HTTPAuthResource(rsrc, credFactories, portal, ifaces) site = server.Site(root) application = service.Application("XML-RPC Auth Demo") s = strports.service('tcp:8080', channel.HTTPFactory(site)) s.setServiceParent(application)
participants (1)
-
Andrey