]> git.mxchange.org Git - fba.git/blobdiff - fba/networks/lemmy.py
Continued:
[fba.git] / fba / networks / lemmy.py
index 288280b5e69fc287eb0d991e04d0050c48e4b06d..88e18e0acd56b78dcf319b8319d39f732d7005a4 100644 (file)
@@ -67,9 +67,12 @@ def fetch_peers(domain: str, origin: str) -> list:
         elif "federated_instances" in data["json"] and isinstance(data["json"]["federated_instances"], dict):
             logger.debug("Found federated_instances for domain='%s'", domain)
             peers = peers + federation.add_peers(data["json"]["federated_instances"])
+
+            logger.debug("Marking domain='%s' as successfully handled ...", domain)
             instances.set_success(domain)
-        else:
-            logger.warning("JSON response does not contain 'federated_instances', domain='%s' - trying /instances ...", domain)
+
+        if len(peers) == 0:
+            logger.warning("Fetching instances for domain='%s' from /instances ...", domain)
             peers = fetch_instances(domain, origin)
 
     except network.exceptions as exception:
@@ -151,6 +154,9 @@ def fetch_blocks(domain: str, nodeinfo_url: str) -> list:
                 if content is None:
                     logger.debug("domain='%s' has returned empty header='%s' - SKIPPED!", domain, header)
                     continue
+                elif not isinstance(content, str):
+                    logger.debug("content[]='%s' is not supported/wanted type 'str' - SKIPPED!", type(content))
+                    continue
                 elif content.lower() in translations:
                     logger.debug("Found header with blocked instances - BREAK!")
                     found = header
@@ -168,11 +174,14 @@ def fetch_blocks(domain: str, nodeinfo_url: str) -> list:
                 blocked = tidyup.domain(tag.contents[0])
                 logger.debug("blocked='%s'", blocked)
 
-                if not utils.is_domain_wanted(blocked):
+                if blocked == "":
+                    logger.warning("blocked='%s' is empty after tidyup.domain() - SKIPPED!", tag.contents[0])
+                    continue
+                elif not utils.is_domain_wanted(blocked):
                     logger.debug("blocked='%s' is not wanted - SKIPPED!", blocked)
                     continue
 
-                logger.debug("Appending blocker='%s',blocked='%s',block_level='reject'", domain, blocked)
+                logger.debug("Appending blocker='%s',blocked='%s',block_level='reject' ...", domain, blocked)
                 blocklist.append({
                     "blocker"    : domain,
                     "blocked"    : blocked,
@@ -219,7 +228,8 @@ def fetch_instances(domain: str, origin: str) -> list:
                 logger.debug("Found %d blocked instance(s) ...", len(rows))
                 for tag in rows:
                     logger.debug("tag[]='%s'", type(tag))
-                    peer = tidyup.domain(tag.contents[0])
+                    text = tag.contents[0] if isinstance(tag.contents[0], str) else tag.contents[0].text
+                    peer = tidyup.domain(text)
                     logger.debug("peer='%s'", peer)
 
                     if peer == "":
@@ -235,6 +245,9 @@ def fetch_instances(domain: str, origin: str) -> list:
                     logger.debug("Appending peer='%s' ...", peer)
                     peers.append(peer)
 
+        logger.debug("Marking domain='%s' as successfully handled ...", domain)
+        instances.set_success(domain)
+
     except network.exceptions as exception:
         logger.warning("domain='%s',exception[%s]:'%s'", domain, type(exception), str(exception))
         instances.set_last_error(domain, exception)