"""Decodo proxy helpers for HRNZ scraping."""

from __future__ import annotations

import os
import secrets


def build_decodo_proxy() -> dict[str, str] | None:
    """Build a Decodo proxy config for Playwright, rotating session per request."""
    server = os.getenv("HRNZ_DECODO_PROXY_SERVER", "").strip()
    username = os.getenv("HRNZ_DECODO_PROXY_USERNAME", "").strip()
    password = os.getenv("HRNZ_DECODO_PROXY_PASSWORD", "").strip()

    if not server:
        host = os.getenv("HRNZ_DECODO_PROXY_HOST", "").strip()
        port = os.getenv("HRNZ_DECODO_PROXY_PORT", "").strip()
        scheme = os.getenv("HRNZ_DECODO_PROXY_SCHEME", "http").strip() or "http"
        if host and port:
            server = f"{scheme}://{host}:{port}"

    if not (server and username and password):
        return None

    rotate_raw = os.getenv("HRNZ_DECODO_ROTATE_EACH_REQUEST", "true").strip()
    rotate = rotate_raw.lower() not in ("0", "false", "no", "n")
    session_param = (
        os.getenv("HRNZ_DECODO_SESSION_PARAM", "session").strip() or "session"
    )
    session_id = ""

    if rotate:
        session_id = secrets.token_hex(8)
    else:
        session_id = os.getenv("HRNZ_DECODO_SESSION_ID", "").strip()

    template = os.getenv("HRNZ_DECODO_USERNAME_TEMPLATE", "").strip()
    if template and session_id:
        username = template.format(username=username, session=session_id)
    elif session_id:
        username = f"{username}-{session_param}-{session_id}"

    return {"server": server, "username": username, "password": password}
