Do the same for get_json

This commit is contained in:
David Baker 2017-04-21 16:09:03 +01:00
parent a1595cec78
commit 70caf49914
1 changed files with 21 additions and 8 deletions

View File

@ -323,18 +323,31 @@ class MatrixProxyClient(object):
result = yield self.simpleHttpClient.post_json_get_json(uri, post_json)
defer.returnValue(result)
except CodeMessageException as cme:
ex = None
try:
errbody = json.loads(cme.msg)
errcode = errbody['errcode']
errtext = errbody['error']
ex = SynapseError(cme.code, errtext, errcode)
except:
pass
ex = self._tryGetMatrixError(cme.msg)
if ex is not None:
raise ex
raise cme
@defer.inlineCallbacks
def get_json(self, uri, args={}):
try:
result = yield self.simpleHttpClient.get_json(uri, args)
defer.returnValue(result)
except CodeMessageException as cme:
ex = self._tryGetMatrixError(cme.msg)
if ex is not None:
raise ex
raise cme
def _tryGetMatrixError(self, body):
try:
errbody = json.loads(body)
errcode = errbody['errcode']
errtext = errbody['error']
return SynapseError(cme.code, errtext, errcode)
except:
return None
# XXX: FIXME: This is horribly copy-pasted from matrixfederationclient.
# The two should be factored out.