"""IP do cliente para restrição de rede da API interna."""

from typing import Optional

from django.conf import settings


def get_client_ip(request) -> Optional[str]:
    """
    Por padrão usa REMOTE_ADDR (correto quando Django fala direto com o cliente ou com o último hop confiável).

    Se INTERNAL_API_TRUST_X_FORWARDED_FOR estiver True, usa o primeiro IP de X-Forwarded-For.
    Só ative atrás de proxy reverso que sobrescreva ou valide esse header.
    """
    if getattr(settings, "INTERNAL_API_TRUST_X_FORWARDED_FOR", False):
        xff = request.META.get("HTTP_X_FORWARDED_FOR")
        if xff:
            return xff.split(",")[0].strip() or None
    addr = request.META.get("REMOTE_ADDR")
    return addr if addr else None
