[Twisted-web] txJSONRPC: issue accesson Session information and returning error
phil at bubblehouse.org
Fri Jan 28 11:04:25 EST 2011
On Jan 27, 2011, at 7:01 PM, goffi wrote:
> G'day everybody,
> I'm using TxJSON-RPC with twisted.web for a project.
> In my JSON-RPC method, I want to access the Request instance to call
> getSession() (I need to identify the user which is calling the method
> with the Session instance), but the request object is not forwarded to
> jsonrpc_xxx methods. I don't see any other way than overidding the
> render method, is there any better way ?
Technically, no. The issue is just that your approach wouldn't exactly be the "twisted way".
Instead, in one of your getChild/locateChild methods, you should be passing the user info as an argument to the constructor for your JSON-RPC resource instance, and saving it as an instance attribute. This will allow you to test your RPC resource more easily as well.
Ideally, you'll only use that user info for data purposes, not to delegate access to some method. If different users are to have different abilities, they should get different kinds of resource instances returned. But for simpler security setups, it's okay to cheat and just throw in a few if-statements.
> My other issue is that I want to be able to return a jsonrpc error (when
> the user is not identified), and when I send a
> jsonrpclib.Fail(12,"hello") like in the tests, I have a HTML 500 error.
> Any suggestion ?
I think you might just need to use jsonrpclib.Fault, not Fail.
More information about the Twisted-web