Source code for mopidy.httpclient

"""Helpers for configuring HTTP clients used in Mopidy extensions."""

from __future__ import annotations

import platform
from typing import TYPE_CHECKING

import mopidy

if TYPE_CHECKING:
    from mopidy.config import ProxyConfig


[docs] def format_proxy(proxy_config: ProxyConfig, auth: bool = True) -> str | None: """Convert a Mopidy proxy config to the commonly used proxy string format. Outputs ``scheme://host:port``, ``scheme://user:pass@host:port`` or :class:`None` depending on the proxy config provided. You can also opt out of getting the basic auth by setting ``auth`` to :class:`False`. .. versionadded:: 1.1 """ if not proxy_config.get("hostname"): return None scheme = proxy_config.get("scheme") or "http" username = proxy_config.get("username") password = proxy_config.get("password") hostname = proxy_config["hostname"] port = proxy_config.get("port") if not port or port < 0: port = 80 if username and password and auth: return f"{scheme}://{username}:{password}@{hostname}:{port}" return f"{scheme}://{hostname}:{port}"
[docs] def format_user_agent(name: str | None = None) -> str: """Construct a User-Agent suitable for use in client code. This will identify use by the provided ``name`` (which should be on the format ``dist_name/version``), Mopidy version and Python version. .. versionadded:: 1.1 """ parts = [ f"Mopidy/{mopidy.__version__}", f"{platform.python_implementation()}/{platform.python_version()}", ] if name: parts.insert(0, name) return " ".join(parts)