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) 




_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

Reply via email to