def reason(string: str) -> str:
logger.debug("string='%s' - CALLED!", string)
+
if not isinstance(string, str):
raise ValueError(f"Parameter string[]='{type(string)}' is not of type 'str'")
def domain(string: str) -> str:
logger.debug("string='%s' - CALLED!", string)
+
if not isinstance(string, str):
raise ValueError(f"Parameter string[]='{type(string)}' is not of type 'str'")
+ elif string == "":
+ raise ValueError("Parameter string is empty")
# All lower-case and strip spaces out + last dot
- string = string.lower().strip().rstrip(".")
+ string = string.lower().strip().rstrip(".").replace("..", ".")
logger.debug("string='%s' - #1", string)
# No port number
string = string.split(":")[0]
logger.debug("string='%s' - #5", string)
- # No individual users in block lists
+ # Try to "detect" user profiles, not wanted here. Don't block single users
+ # in an instance block list! Everything personal can be solved in a
+ # personal block.
string = re.sub(r"(.+)\@", "", string)
logger.debug("string='%s' - #6", string)
elif string.find("/tag/"):
string = string.split("/tag/")[0]
+ # Some people have TLDs with this word on the end
+ logger.debug("string='%s' - #7", string)
if string.endswith("silence"):
- string = string.split("silence")[0]
+ string = string.split("silence")[0]
logger.debug("string='%s' - EXIT!", string)
return string