From: Roland Häder <roland@mxchange.org>
Date: Mon, 30 Dec 2024 04:32:14 +0000 (+0100)
Subject: Continued:
X-Git-Url: https://git.mxchange.org/?a=commitdiff_plain;h=c41c0d470f055d9745264cdc42e397a51a1223fd;p=fba.git

Continued:
- introduced software_helper.remove_extras()
---

diff --git a/fba/helpers/software.py b/fba/helpers/software.py
index c130f4d..baac34c 100644
--- a/fba/helpers/software.py
+++ b/fba/helpers/software.py
@@ -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
diff --git a/fba/http/federation.py b/fba/http/federation.py
index 9cddbc2..15c6799 100644
--- a/fba/http/federation.py
+++ b/fba/http/federation.py
@@ -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