]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blobdiff - store.py
Merge branch 'dev'
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / store.py
index d875a983a77b5d0fa8cbce0f60c923ac5de62832..67e8a8fad7f9ce3698095914351eb4602fe7564d 100644 (file)
--- 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