From: Roland Häder 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