X-Git-Url: https://git.immae.eu/?a=blobdiff_plain;f=store.py;h=67e8a8fad7f9ce3698095914351eb4602fe7564d;hb=882d55e99489d9131b5171f23e505b0dfd1c8738;hp=d875a983a77b5d0fa8cbce0f60c923ac5de62832;hpb=b53f483d54367875bed3769d2e4817866fbde224;p=perso%2FImmae%2FProjets%2FCryptomonnaies%2FCryptoportfolio%2FTrader.git diff --git a/store.py b/store.py index d875a98..67e8a8f 100644 --- a/store.py +++ b/store.py @@ -36,12 +36,22 @@ class ReportStore: hash_["date"] = datetime.now() self.logs.append(hash_) + @staticmethod + def default_json_serial(obj): + if isinstance(obj, (datetime, date)): + return obj.isoformat() + return str(obj) + def to_json(self): - def default_json_serial(obj): - if isinstance(obj, (datetime, date)): - return obj.isoformat() - return str(obj) - return json.dumps(self.logs, default=default_json_serial, indent=" ") + return json.dumps(self.logs, default=self.default_json_serial, indent=" ") + + def to_json_array(self): + for log in (x.copy() for x in self.logs): + yield ( + log.pop("date"), + log.pop("type"), + json.dumps(log, default=self.default_json_serial, indent=" ") + ) def set_verbose(self, verbose_print): self.verbose_print = verbose_print @@ -166,15 +176,28 @@ class ReportStore: }) def log_http_request(self, method, url, body, headers, response): - self.add_log({ - "type": "http_request", - "method": method, - "url": url, - "body": body, - "headers": headers, - "status": response.status_code, - "response": response.text - }) + if isinstance(response, Exception): + self.add_log({ + "type": "http_request", + "method": method, + "url": url, + "body": body, + "headers": headers, + "status": -1, + "response": None, + "error": response.__class__.__name__, + "error_message": str(response), + }) + else: + self.add_log({ + "type": "http_request", + "method": method, + "url": url, + "body": body, + "headers": headers, + "status": response.status_code, + "response": response.text + }) def log_error(self, action, message=None, exception=None): self.print_log("[Error] {}".format(action)) @@ -199,6 +222,15 @@ class ReportStore: "action": action, }) + def log_market(self, args, user_id, market_id): + self.add_log({ + "type": "market", + "commit": "$Format:%H$", + "args": vars(args), + "user_id": user_id, + "market_id": market_id, + }) + class BalanceStore: def __init__(self, market): self.market = market