import logging from urllib.parse import urlparse from aiohttp_socks import ProxyConnector, ProxyType from config import PROXY_ENABLED, PROXY_URL logger = logging.getLogger(__name__) def get_proxy_connector() -> ProxyConnector | None: """Create an aiohttp SOCKS5 proxy connector from PROXY_URL if enabled.""" if not PROXY_ENABLED or not PROXY_URL: return None parsed = urlparse(PROXY_URL) if parsed.scheme not in ("socks5", "socks5h"): logger.warning("Unsupported proxy scheme: %s", parsed.scheme) return None host = parsed.hostname port = parsed.port if not host or not port: logger.warning("Invalid proxy URL: missing host or port") return None username = parsed.username password = parsed.password try: return ProxyConnector( proxy_type=ProxyType.SOCKS5, host=host, port=port, username=username, password=password, ) except Exception as exc: logger.error("Failed to create proxy connector: %s", exc) return None