import logging from typing import Any from typing import Dict from urllib.parse import urlparse import config logger = logging.getLogger(__name__) def is_url_blacklisted(url: str) -> bool: try: return urlparse(url).netloc in config.BLACKLIST except Exception: logger.exception(f"failed to blacklist for {url}") return False def is_blacklisted(data: Dict[str, Any]) -> bool: """Returns True if the activity is coming/or referencing a blacklisted host.""" if ( "id" in data and is_url_blacklisted(data["id"]) or ( "object" in data and isinstance(data["object"], dict) and "id" in data["object"] and is_url_blacklisted(data["object"]["id"]) ) or ( "object" in data and isinstance(data["object"], str) and is_url_blacklisted(data["object"]) ) ): return True return False