From fcacaba9d07e403bc619888e22f3845431e3a366 Mon Sep 17 00:00:00 2001 From: inso <insomniak.fr@gmaiL.com> Date: Sat, 19 Mar 2016 12:59:16 +0100 Subject: [PATCH] Catch ucoin errors --- ucoinpy/api/bma/__init__.py | 2 +- ucoinpy/api/bma/api.py | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/ucoinpy/api/bma/__init__.py b/ucoinpy/api/bma/__init__.py index 67f0e2d7..68763a4b 100644 --- a/ucoinpy/api/bma/__init__.py +++ b/ucoinpy/api/bma/__init__.py @@ -26,5 +26,5 @@ import logging logger = logging.getLogger("ucoin") -from .api import API, ConnectionHandler +from .api import API, ConnectionHandler, UcoinError from . import network, blockchain, tx, wot, node, ud, ws \ No newline at end of file diff --git a/ucoinpy/api/bma/api.py b/ucoinpy/api/bma/api.py index ae0b8851..2afa98d6 100644 --- a/ucoinpy/api/bma/api.py +++ b/ucoinpy/api/bma/api.py @@ -23,6 +23,15 @@ import aiohttp, json, logging, jsonschema logger = logging.getLogger("ucoin") +class UcoinError(Exception): + """ + UCoin error + """ + def __init__(self, data): + super().__init__("Error code {0} - {1}".format(data["ucode"], data["message"])) + self.error = data + + class ConnectionHandler(object): """Helper class used by other API classes to ease passing server connection information.""" @@ -162,7 +171,11 @@ class API(object): with aiohttp.Timeout(15): response = await session.get(self.reverse_url("http", path), params=kwargs,headers=self.headers) if response.status != 200: - raise ValueError('status code != 200 => %d (%s)' % (response.status, (await response.text()))) + try: + error_data = self.parse_error(await response.text()) + raise UcoinError(error_data) + except TypeError: + raise ValueError('status code != 200 => %d (%s)' % (response.status, (await response.text()))) return response -- GitLab