]> git.mxchange.org Git - fba.git/commitdiff
Continued:
authorRoland Häder <roland@mxchange.org>
Mon, 30 Dec 2024 04:32:14 +0000 (05:32 +0100)
committerRoland Häder <roland@mxchange.org>
Mon, 30 Dec 2024 04:32:14 +0000 (05:32 +0100)
- introduced software_helper.remove_extras()

fba/helpers/software.py
fba/http/federation.py

index c130f4df6276fbcaf4c58af955cfc5decf5b8c75..baac34c72a2762ad00195eb417e305deeeaaac66 100644 (file)
@@ -19,6 +19,7 @@ import logging
 from functools import lru_cache
 
 from fba.helpers import tidyup
+from fba.helpers import version
 
 logging.basicConfig(level=logging.INFO)
 logger = logging.getLogger(__name__)
@@ -295,3 +296,35 @@ def is_relay(software: str) -> bool:
 
     logger.debug("found='%s' - EXIT!", found)
     return found
+
+def remove_extras(software: str):
+    logger.debug("software[%s]='%s' - CALLED!", type(software), software)
+    if not isinstance(software, str):
+        raise ValueError(f"software[]='%s' is not type of 'str'", type(software))
+
+    if software == "":
+        logger.debug("Corrected empty string to None for software.")
+        software = None
+    elif ("." in software or " " in software):
+        logger.debug("software='%s' may contain a version number, removing it ...", software)
+        software = version.remove(software)
+
+    logger.debug("software[%s]='%s'", type(software), software)
+    if software is None:
+        logger.debug("software is None - EXIT!")
+        return None
+    elif "powered by " in software:
+        logger.debug("software='%s' has 'powered by' in it", software)
+        software = version.remove(strip_powered_by(software))
+    elif " hosted on " in software:
+        logger.debug("software='%s' has 'hosted on' in it", software)
+        software = version.remove(strip_hosted_on(software))
+    elif " by " in software:
+        logger.debug("software='%s' has ' by ' in it", software)
+        software = strip_until(software, " by ")
+    elif " see " in software:
+        logger.debug("software='%s' has ' see ' in it", software)
+        software = strip_until(software, " see ")
+
+    logger.debug("software[%s]='%s' - EXIT!", type(software), software)
+    return software
index 9cddbc2441deccec34f577e5080d56569f828bbf..15c67997a95120b24f4b15a2dae65babbd60a727 100644 (file)
@@ -383,26 +383,7 @@ def fetch_generator_from_path(domain: str, path: str = "/") -> str:
         raise requests.exceptions.TooManyRedirects(message)
 
     logger.debug("software[]='%s'", type(software))
-    if isinstance(software, str) and software == "":
-        logger.debug("Corrected empty string to None for software of domain='%s'", domain)
-        software = None
-    elif isinstance(software, str) and ("." in software or " " in software):
-        logger.debug("software='%s' may contain a version number, domain='%s', removing it ...", software, domain)
-        software = version.remove(software)
-
-    logger.debug("software[%s]='%s'", type(software), software)
-    if isinstance(software, str) and "powered by " in software:
-        logger.debug("software='%s' has 'powered by' in it", software)
-        software = version.remove(software_helper.strip_powered_by(software))
-    elif isinstance(software, str) and " hosted on " in software:
-        logger.debug("software='%s' has 'hosted on' in it", software)
-        software = version.remove(software_helper.strip_hosted_on(software))
-    elif isinstance(software, str) and " by " in software:
-        logger.debug("software='%s' has ' by ' in it", software)
-        software = software_helper.strip_until(software, " by ")
-    elif isinstance(software, str) and " see " in software:
-        logger.debug("software='%s' has ' see ' in it", software)
-        software = software_helper.strip_until(software, " see ")
+    software = software_helper.remove_extras(software) if isinstance(software, str) else None
 
     logger.debug("software[%s]='%s' - EXIT!", type(software), software)
     return software