"""Validation and sanitization helpers for config flow inputs.""" from __future__ import annotations from urllib.parse import urlparse def validate_url(url: str) -> bool: """Validate that a URL is properly formatted.""" try: parsed = urlparse(url.strip()) return bool(parsed.scheme in ("http", "https") and parsed.netloc) except (ValueError, TypeError, AttributeError): return False def validate_discovery_url(url: str) -> bool: """Validate that a URL is properly formatted for OIDC discovery.""" try: parsed = urlparse(url.strip()) return bool( parsed.scheme in ("http", "https") and parsed.netloc and parsed.path.endswith("/.well-known/openid-configuration") ) except (ValueError, TypeError, AttributeError): return False def sanitize_client_secret(secret: str) -> str: """Sanitize client secret input.""" return secret.strip() if secret else "" def validate_client_id(client_id: str) -> bool: """Validate client ID format.""" return bool(client_id and client_id.strip())