import httpx

class O11Actions:
    def __init__(self, host, auth, dry_run=True):
        self.host = host.rstrip("/")
        self.auth = auth
        self.dry_run = dry_run

    def ejecutar(self, accion, canal_id):
        if accion not in ("start", "stop"):
            raise ValueError("Accion no permitida")

        if not canal_id or not canal_id.startswith("lmp"):
            raise ValueError("Canal LMP invalido")

        payload = {
            "Action": accion,
            "ProviderId": "lmp",
            "Streams": [{"Id": canal_id}]
        }

        if self.dry_run:
            return {
                "simulado": True,
                "accion": accion,
                "canal": canal_id
            }

        respuesta = httpx.post(
            self.host + "/api/action",
            headers={
                "Authorization": self.auth,
                "Content-Type": "application/json",
                "Origin": self.host,
                "Referer": self.host + "/config/lmp"
            },
            json=payload,
            timeout=15
        )

        respuesta.raise_for_status()

        return {
            "simulado": False,
            "accion": accion,
            "canal": canal_id,
            "http": respuesta.status_code
        }
