Version 7 (modified by 15 years ago) ( diff ) | ,
---|
A simplistic json-rpc dispatcher-function for Django in 15 lines
### myproj/myapp/views.py import json jsonrpc_methods = [] def JSON_RPC_dispatcher(obj): rpc_inputs = json.loads(obj.raw_post_data) sub_eval = str(rpc_inputs['method']) + '(rpc_inputs[\'params\'])' if rpc_inputs['method'] in jsonrpc_methods: result = eval(sub_eval) json_retur = json.dumps({'result': result['result'], 'error': result['error'], 'id': rpc_inputs['id']}) response = HttpResponse(json_retur) response.__setitem__('Content-Type', 'application/json-rpc') return response else: json_retur = json.dumps({'result': None, 'error': '<non_existent_method_mesg>', 'id': rpc_inputs['id']}) response = HttpResponse(json_retur) response.__setitem__('Content-Type', 'application/json-rpc') return response
This function works as a decoding/encoding dispatcher between Django's HttpRequest-object and arbitrary defined method-functions of the json-rpc service. Those method-functions shall return a dictionary-object as {'result': <result_data>, 'error': <error_data>} and their names shall be appended/registered to the jsonrpc_methods list. This dispatcher-function is generally suitable for any json-rpc app and neutral to the exact version of the json-rpc protocol in consideration.
Note:
See TracWiki
for help on using the wiki.