from __future__ import annotations

import os
import requests
import streamlit as st

def _get_setting(name: str, default: str = "") -> str:
    """
    Lee configuración desde:
    1) variables de entorno
    2) st.secrets
    """
    v = os.getenv(name)
    if v:
        return v.strip()

    if name in st.secrets:
        return str(st.secrets[name]).strip()

    return default

BASE = _get_setting("CABANNA_API_BASE")
KEY  = _get_setting("CABANNA_API_KEY")

def api_get(path: str, params: dict | None = None, timeout: int = 60) -> dict:
    """
    GET seguro hacia la API Cabanna.
    Adjunta X-API-Key automáticamente.
    """
    if not BASE:
        raise ValueError("Falta CABANNA_API_BASE en secrets/env.")
    if not KEY:
        raise ValueError("Falta CABANNA_API_KEY en secrets/env.")

    url = f"{BASE.rstrip('/')}/{path.lstrip('/')}"
    r = requests.get(url, params=params, headers={"X-API-Key": KEY}, timeout=timeout)
    r.raise_for_status()
    return r.json()

def api_get_bytes(path: str, params=None, timeout=120) -> bytes:
    url = f"{BASE.rstrip('/')}/{path.lstrip('/')}"
    r = requests.get(
        url,
        params=params,
        headers={"X-API-Key": KEY},
        timeout=timeout
    )
    r.raise_for_status()
    return r.content
