MCPcopy
hub / github.com/AirtestProject/Poco / jsonrpc

Method jsonrpc

poco/utils/simplerpc/jsonrpc/backend/django.py:36–67  ·  view source on GitHub ↗

JSON-RPC 2.0 handler.

(self, request)

Source from the content-addressed store, hash-verified

34
35 @csrf_exempt
36 def jsonrpc(self, request):
37 """ JSON-RPC 2.0 handler."""
38 if request.method != "POST":
39 return HttpResponseNotAllowed(["POST"])
40
41 request_str = request.body.decode('utf8')
42 try:
43 jsonrpc_request = JSONRPCRequest.from_json(request_str)
44 except (TypeError, ValueError, JSONRPCInvalidRequestException):
45 response = JSONRPCResponseManager.handle(
46 request_str, self.dispatcher)
47 else:
48 jsonrpc_request.params = jsonrpc_request.params or {}
49 jsonrpc_request_params = copy.copy(jsonrpc_request.params)
50 if isinstance(jsonrpc_request.params, dict):
51 jsonrpc_request.params.update(request=request)
52
53 t1 = time.time()
54 response = JSONRPCResponseManager.handle_request(
55 jsonrpc_request, self.dispatcher)
56 t2 = time.time()
57 logger.info('{0}({1}) {2:.2f} sec'.format(
58 jsonrpc_request.method, jsonrpc_request_params, t2 - t1))
59
60 if response:
61 def serialize(s):
62 return json.dumps(s, cls=DatetimeDecimalEncoder)
63
64 response.serialize = serialize
65 response = response.json
66
67 return HttpResponse(response, content_type="application/json")
68
69 def jsonrpc_map(self, request):
70 """ Map of json-rpc available calls.

Callers

nothing calls this directly

Calls 4

handleMethod · 0.80
from_jsonMethod · 0.45
updateMethod · 0.45
handle_requestMethod · 0.45

Tested by

no test coverage detected