Skip to content

Commit 2b6fe59

Browse files
committed
Merge pull request tcalmant#15 from solute/error_data
server: Add data attribute to error response
2 parents 3dced5f + 578c66a commit 2b6fe59

File tree

1 file changed

+7
-4
lines changed

1 file changed

+7
-4
lines changed

jsonrpclib/jsonrpc.py

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -782,7 +782,7 @@ class Fault(object):
782782
JSON-RPC error class
783783
"""
784784
def __init__(self, code=-32000, message='Server error', rpcid=None,
785-
config=jsonrpclib.config.DEFAULT):
785+
config=jsonrpclib.config.DEFAULT, data=None):
786786
"""
787787
Sets up the error description
788788
@@ -795,14 +795,15 @@ def __init__(self, code=-32000, message='Server error', rpcid=None,
795795
self.faultString = message
796796
self.rpcid = rpcid
797797
self.config = config
798+
self.data = data
798799

799800
def error(self):
800801
"""
801802
Returns the error as a dictionary
802803
803804
:returns: A {'code', 'message'} dictionary
804805
"""
805-
return {'code': self.faultCode, 'message': self.faultString}
806+
return {'code': self.faultCode, 'message': self.faultString, 'data': self.data}
806807

807808
def response(self, rpcid=None, version=None):
808809
"""
@@ -923,7 +924,7 @@ def response(self, result=None):
923924

924925
return response
925926

926-
def error(self, code=-32000, message='Server error.'):
927+
def error(self, code=-32000, message='Server error.', data=None):
927928
"""
928929
Prepares an error dictionary
929930
@@ -937,6 +938,8 @@ def error(self, code=-32000, message='Server error.'):
937938
else:
938939
error['result'] = None
939940
error['error'] = {'code': code, 'message': message}
941+
if data is not None:
942+
error['error']['data'] = data
940943
return error
941944

942945
# ------------------------------------------------------------------------------
@@ -983,7 +986,7 @@ def dump(params=None, methodname=None, rpcid=None, version=None,
983986
if isinstance(params, Fault):
984987
# Prepare an error dictionary
985988
# pylint: disable=E1103
986-
return payload.error(params.faultCode, params.faultString)
989+
return payload.error(params.faultCode, params.faultString, params.data)
987990

988991
if not isinstance(methodname, utils.string_types) and not is_response:
989992
# Neither a request nor a response

0 commit comments

Comments
 (0)