From 18857b03ac26793984c03a212eb5b3dd834b988f Mon Sep 17 00:00:00 2001
From: =?utf8?q?Roland=20H=C3=A4der?= <roland@mxchange.org>
Date: Sun, 18 Jun 2023 18:39:45 +0200
Subject: [PATCH] Continued: - returned JSON can sometimes be no list

---
 fba/federation.py       |  6 ++++--
 fba/models/instances.py | 16 ++++++++--------
 2 files changed, 12 insertions(+), 10 deletions(-)

diff --git a/fba/federation.py b/fba/federation.py
index 97dc786..bdb6574 100644
--- a/fba/federation.py
+++ b/fba/federation.py
@@ -195,9 +195,11 @@ def fetch_peers(domain: str, software: str) -> list:
             message = "JSON response does not contain 'federated_instances' or 'error_message'"
             print(f"WARNING: {message},domain='{domain}'")
             instances.set_last_error(domain, message)
-    else:
-        # DEBUG: print("DEBUG: Querying API was successful:", domain, len(data))
+    elif isinstance(data["json"], list):
+        # DEBUG print("DEBUG: Querying API was successful:", domain, len(data['json']))
         peers = data["json"]
+    else:
+        print(f"WARNING: Cannot parse data[json][]='{type(data['json'])}'")
 
     # DEBUG: print(f"DEBUG: Adding '{len(peers)}' for domain='{domain}'")
     instances.set_total_peers(domain, peers)
diff --git a/fba/models/instances.py b/fba/models/instances.py
index cb08eb5..7cf70e6 100644
--- a/fba/models/instances.py
+++ b/fba/models/instances.py
@@ -347,7 +347,7 @@ def deobscure(char: str, domain: str, blocked_hash: str = None) -> tuple:
     # DEBUG: print(f"DEBUG: row[]='{type(row)}' - EXIT!")
     return row
 
-def set_last_blocked (domain: str):
+def set_last_blocked(domain: str):
     # DEBUG: print(f"DEBUG: domain='{domain}' - CALLED!")
     if not isinstance(domain, str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
@@ -358,7 +358,7 @@ def set_last_blocked (domain: str):
     _set_data("last_blocked", domain, time.time())
     # DEBUG: print("DEBUG: EXIT!")
 
-def set_last_instance_fetch (domain: str):
+def set_last_instance_fetch(domain: str):
     # DEBUG: print(f"DEBUG: domain='{domain}' - CALLED!")
     if not isinstance(domain, str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
@@ -369,20 +369,20 @@ def set_last_instance_fetch (domain: str):
     _set_data("last_instance_fetch", domain, time.time())
     # DEBUG: print("DEBUG: EXIT!")
 
-def set_total_peers (domain: str, peers: list):
+def set_total_peers(domain: str, peers: list):
     # DEBUG: print(f"DEBUG: domain='{domain}',peers()={len(peers)} - CALLED!")
     if not isinstance(domain, str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
     elif domain == "":
         raise ValueError("Parameter 'domain' is empty")
     elif not isinstance(peers, list):
-        raise ValueError("Parameter peers[]='{type(peers)}' is not 'list'")
+        raise ValueError(f"Parameter peers[]='{type(peers)}' is not 'list'")
 
     # Set timestamp
     _set_data("total_peers", domain, len(peers))
     # DEBUG: print("DEBUG: EXIT!")
 
-def set_nodeinfo_url (domain: str, url: list):
+def set_nodeinfo_url(domain: str, url: list):
     # DEBUG: print(f"DEBUG: domain='{domain}',url='{url}' - CALLED!")
     if not isinstance(domain, str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
@@ -397,7 +397,7 @@ def set_nodeinfo_url (domain: str, url: list):
     _set_data("nodeinfo_url", domain, url)
     # DEBUG: print("DEBUG: EXIT!")
 
-def set_detection_mode (domain: str, url: list):
+def set_detection_mode(domain: str, url: list):
     # DEBUG: print(f"DEBUG: domain='{domain}',url='{url}' - CALLED!")
     if not isinstance(domain, str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
@@ -412,7 +412,7 @@ def set_detection_mode (domain: str, url: list):
     _set_data("detection_mode", domain, url)
     # DEBUG: print("DEBUG: EXIT!")
 
-def set_detection_mode (domain: str, url: list):
+def set_detection_mode(domain: str, url: list):
     # DEBUG: print(f"DEBUG: domain='{domain}',url='{url}' - CALLED!")
     if not isinstance(domain, str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
@@ -427,7 +427,7 @@ def set_detection_mode (domain: str, url: list):
     _set_data("detection_mode", domain, url)
     # DEBUG: print("DEBUG: EXIT!")
 
-def set_detection_mode (domain: str, mode: list):
+def set_detection_mode(domain: str, mode: list):
     # DEBUG: print(f"DEBUG: domain='{domain}',mode='{mode}' - CALLED!")
     if not isinstance(domain, str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
-- 
2.39.5