diff --git a/scripts/cucchiaiata-cli b/scripts/cucchiaiata-cli index 188d2d0..810eeaf 100755 --- a/scripts/cucchiaiata-cli +++ b/scripts/cucchiaiata-cli @@ -4,7 +4,7 @@ from sys import exit, argv from json import dumps from traceback import print_exc -from cucchiaiata import Parser, config, Configuration +from cucchiaiata import Parser, config, Configuration, JsonError from cucchiaiata.i18n import _ @@ -15,9 +15,15 @@ def main(): else: parser = Parser() print(dumps(parser.get(), - indent=config.indent)) + indent=config.indent), + ) except KeyboardInterrupt: pass + except JsonError as err: + print(dumps(err.message, + indent=config.indent), + ) + exit(1) except Exception as err: if config.debug: print_exc() diff --git a/src/cucchiaiata/__init__.py b/src/cucchiaiata/__init__.py index b0a6388..b30e6fd 100644 --- a/src/cucchiaiata/__init__.py +++ b/src/cucchiaiata/__init__.py @@ -1,6 +1,7 @@ from .parser import Parser from .configuration import Configuration from .config import config +from .common import JsonError -__all__ = ('Parser', 'config') +__all__ = ('Parser', 'config', 'Configuration', 'JsonError') __version__ = "0.0.1" diff --git a/src/cucchiaiata/common.py b/src/cucchiaiata/common.py index 716160e..3fbba7a 100644 --- a/src/cucchiaiata/common.py +++ b/src/cucchiaiata/common.py @@ -13,6 +13,10 @@ if config.allow_insecure_https: warnings.simplefilter('ignore', InsecureRequestWarning) +class JsonError(Exception): + pass + + class Common: def __init__(self): self.cucchiaiata_config = config @@ -97,11 +101,12 @@ def send_data(uri: str, ret = post(final_url, data=dumps(payload), verify=config.allow_insecure_https) - if ret.status_code != 200: + try: + response = ret.json() + except: raise Exception(ret.text) - response = ret.json() - if 'error' in response: - if 'reason' in response['error']['kwargs']: - raise Exception("{}".format(response['error']['kwargs']['reason'])) - raise Exception('erreur inconnue') + if response['type'] == 'error': + err = JsonError() + err.message = response['response'] + raise err return response['response']