# apps/aroflo_connector_app/core/config.py

from __future__ import annotations

import os
from dataclasses import dataclass

from dotenv import load_dotenv

# Carga .env (si existe) en variables de entorno
load_dotenv()


@dataclass
class AroFloSettings:
    """
    Configuración básica del conector AroFlo.
    Los valores se leen desde variables de entorno (y opcionalmente .env).

    Variables esperadas:
      - AROFLO_BASE_URL
      - AROFLO_SECRET_KEY
      - AROFLO_HOST_IP (opcional)
      - AROFLO_ACCEPT (default: text/json)
      - AROFLO_U_ENCODED
      - AROFLO_P_ENCODED
      - AROFLO_ORG_ENCODED
    """

    base_url: str
    secret_key: str
    host_ip: str | None
    accept: str
    u_encoded: str
    p_encoded: str
    org_encoded: str

    @classmethod
    def from_env(cls) -> "AroFloSettings":
        base_url = os.getenv("AROFLO_BASE_URL", "https://api.aroflo.com/")
        secret_key = os.environ["AROFLO_SECRET_KEY"]

        host_ip = os.getenv("AROFLO_HOST_IP") or None
        accept = os.getenv("AROFLO_ACCEPT", "text/json")

        u_encoded = os.environ["AROFLO_U_ENCODED"]
        p_encoded = os.environ["AROFLO_P_ENCODED"]
        org_encoded = os.environ["AROFLO_ORG_ENCODED"]

        return cls(
            base_url=base_url.rstrip("/"),
            secret_key=secret_key,
            host_ip=host_ip,
            accept=accept,
            u_encoded=u_encoded,
            p_encoded=p_encoded,
            org_encoded=org_encoded,
        )


settings = AroFloSettings.from_env()
