]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Fri, 23 Jun 2023 19:07:52 +0000 (21:07 +0200)
committerRoland Häder <roland@mxchange.org>
Fri, 23 Jun 2023 19:08:47 +0000 (21:08 +0200)
- paths is not a dict, it must be a list (ops)
- some JSON APIs don't response with a list of peers, but a dict instead

fba/helpers/domain.py
fba/http/federation.py
fba/models/instances.py

index ac32cf1797c0941a6782296a91601828a85984bb..2606f14b555e5a586b97c8db71713698115a37b4 100644 (file)
@@ -22,7 +22,7 @@ logging.basicConfig(level=logging.INFO)
 logger = logging.getLogger(__name__)
 
 def raise_on(domain: str):
-    logger.debug("domain='%s' - CALLED!")
+    logger.debug("domain='%s' - CALLED!", domain)
     if not isinstance(domain, str):
         raise ValueError(f"Parameter domain[]='{type(domain)}' is not 'str'")
     elif domain == "":
index fdaec5956ecf681190634dc089a1d6b58d4f4a30..ee2fadcb747e9eba73ae1c9014d37769eacfae40 100644 (file)
@@ -152,10 +152,10 @@ def fetch_peers(domain: str, software: str) -> list:
         instances.set_last_error(domain, exception)
         return list()
 
-    paths = {
+    paths = [
         "/api/v1/instance/peers",
         "/api/v3/site",
-    }
+    ]
 
     # Init peers variable
     peers = list()
@@ -175,11 +175,15 @@ def fetch_peers(domain: str, software: str) -> list:
             logger.debug("Was not able to fetch peers from path='%s',domain='%s' ...", path, domain)
             instances.set_last_error(domain, data)
         elif "json" in data and len(data["json"]) > 0:
-            logger.debug("Querying API path='%s' was successful: domain='%s',data[json]()=%d", path, domain, len(data['json']))
+            logger.debug("Querying API path='%s' was successful: domain='%s',data[json][%s]()=%d", path, domain, type(data['json']), len(data['json']))
             peers = data["json"]
             instances.set_success(domain)
             break
 
+    if not isinstance(peers, list):
+        logger.warning("peers[]='%s' is not 'list', maybe bad API response?", type(peers))
+        peers = list()
+
     logger.debug("Invoking instances.set_total_peers(%s,%d) ...", domain, len(peers))
     instances.set_total_peers(domain, peers)
 
@@ -223,7 +227,7 @@ def fetch_nodeinfo(domain: str, path: str = None) -> dict:
        "/nodeinfo/2.0.json",
        "/nodeinfo/2.0",
        "/nodeinfo/1.0",
-       "/api/v1/instance"
+       "/api/v1/instance",
     ]
 
     for request in request_paths:
index 3ba561f81425553a30b608f12d60d5600b64d8b2..8c977fe51e5fa9ece7d2c5264fabd21fe5ad2b22 100644 (file)
@@ -366,7 +366,7 @@ def set_total_peers(domain: str, peers: list):
     domain_helper.raise_on(domain)
 
     if not isinstance(peers, list):
-        raise ValueError(f"Parameter peers[]='{type(peers)}' is not 'list'")
+        raise ValueError(f"Parameter peers[]='{type(peers)}' is not 'list': '%s'")
 
     # Set timestamp
     _set_data("total_peers", domain, len(peers))