def parse_responses(self, responses): if any([isinstance(i, Fault) for i in responses]): return dumps(responses[0]) if len(responses) != len(self._requests): return dumps(self.faults.internal_error()) response_list = [] for i in range(0, len(responses)): version = jsonrpclib.config.version if isinstance(responses[i], Fault): return dumps(responses[i], rpcid=0, version=version) request = self._requests[i] response = responses[i] rpcid = request.get("id", str(uuid.uuid4())) if isnotification(request): # Even in batches, notifications have no # response entry continue if "jsonrpc" not in request.keys(): version = 1.0 try: response_json = dumps(response, version=version, rpcid=rpcid, methodresponse=True) except TypeError: return dumps(self.faults.parse_error(), rpcid=rpcid, version=version) response_list.append(response_json) if not self._batch: # Ensure it wasn't a batch to begin with, then # return 1 or 0 responses depending on if it was # a notification. if len(response_list) < 1: return "" return response_list[0] # Batch, return list return "[ %s ]" % ", ".join(response_list)
def parse_responses(self, responses): if isinstance(responses, Fault): return dumps(responses) if len(responses) != len(self._requests): return dumps(self.faults.internal_error()) response_list = [] for i in range(0, len(responses)): request = self._requests[i] response = responses[i] if isnotification(request): # Even in batches, notifications have no # response entry continue rpcid = request['id'] version = jsonrpclib.config.version if 'jsonrpc' not in request.keys(): version = 1.0 try: response_json = dumps( response, version=version, rpcid=rpcid, methodresponse=True ) except TypeError: return dumps( self.faults.server_error(), rpcid=rpcid, version=version ) response_list.append(response_json) if not self._batch: # Ensure it wasn't a batch to begin with, then # return 1 or 0 responses depending on if it was # a notification. if len(response_list) < 1: return '' return response_list[0] # Batch, return list return '[ %s ]' % ', '.join(response_list)