]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Sat, 1 Jul 2023 00:42:34 +0000 (02:42 +0200)
committerRoland Häder <roland@mxchange.org>
Sat, 1 Jul 2023 00:42:34 +0000 (02:42 +0200)
- fixed handling returned `data` dict
- added some debug log messages

fba/helpers/json.py
fba/http/federation.py

index 9264f1bf4497e443adae69dbef7d1bb48d35c43e..9681e60ab98e82e1e778fe224d4456d13e7ecd94 100644 (file)
@@ -22,7 +22,7 @@ import requests
 logging.basicConfig(level=logging.INFO)
 logger = logging.getLogger(__name__)
 
-def from_response(response: requests.models.Response) -> list:
+def from_response(response: requests.models.Response) -> any:
     logger.debug("response[]='%s' - CALLED!", type(response))
     if not isinstance(response, requests.models.Response):
         raise ValueError(f"Parameter response[]='{type(response)}' is not type of 'Response'")
@@ -37,7 +37,7 @@ def from_response(response: requests.models.Response) -> list:
 
             logger.debug("data[]='%s' - EXIT!", type(data))
             if not isinstance(data, list) and not isinstance(data, dict):
-                logger.debug("data[]='%s' is not wanted, wrapping into 'dict'", type(data))
+                logger.warning("data[]='%s' is not wanted, wrapping into 'dict'", type(data))
                 data = {data}
 
         except json.decoder.JSONDecodeError as exception:
index 79385eaa3ea85967693d3d8dcd8a71af4a637079..b50328d8b6d9140b76f87b2ce3b68468d27048fd 100644 (file)
@@ -446,6 +446,7 @@ def determine_software(domain: str, path: str = None) -> str:
     logger.debug("data[]='%s'", type(data))
     if "exception" in data:
         # Continue raising it
+        logger.debug("data()=%d contains exception='%s' - raising ...", len(data), type(data["exception"]))
         raise data["exception"]
     elif "error_message" in data:
         logger.debug("Returned error_message during fetching nodeinfo: '%s',status_code=%d", data['error_message'], data['status_code'])
@@ -458,14 +459,15 @@ def determine_software(domain: str, path: str = None) -> str:
         logger.warning("JSON response contains only a message: '%s'", data["message"])
         instances.set_last_error(domain, data["message"])
         return fetch_generator_from_path(domain)
-    elif "software" not in data or "name" not in data["software"]:
+    elif "json" not in data or "software" not in data["json"] or "name" not in data["json"]["software"]:
         logger.debug("JSON response from domain='%s' does not include [software][name], fetching / ...", domain)
         software = fetch_generator_from_path(domain)
         logger.debug("Generator for domain='%s' is: '%s'", domain, software)
-    elif "software" in data and "name" in data["software"]:
-        logger.debug("Found data[software][name] in JSON response")
-        software = data["software"]["name"]
+    elif "json" in data and "software" in data["json"] and "name" in data["json"]["software"]:
+        logger.debug("Found data[json][software][name] in JSON response")
+        software = data["json"]["software"]["name"]
 
+    logger.debug("software[%s]='%s'", type(software), software)
     if software is None:
         logger.debug("Returning None - EXIT!")
         return None