"""
GoHighLevel (Linkia) API client.
Envio de mensagem WhatsApp de volta ao lead.
"""

import logging
import requests

log = logging.getLogger("ghl_client")

GHL_API_BASE = "https://services.leadconnectorhq.com"
GHL_API_VERSION = "2021-07-28"


def send_whatsapp_message(
    contact_id: str,
    message: str,
    token: str,
    conversation_id: str | None = None,
) -> tuple[bool, int, str]:
    """
    Envia mensagem WhatsApp para o contato via API do GHL/Linkia.

    Retorna (ok, status_code, body).
    """
    url = f"{GHL_API_BASE}/conversations/messages"
    headers = {
        "Authorization": f"Bearer {token}",
        "Content-Type": "application/json",
        "Accept": "application/json",
        "Version": GHL_API_VERSION,
    }
    payload = {
        "type": "WhatsApp",
        "contactId": contact_id,
        "message": message,
    }
    if conversation_id:
        payload["conversationId"] = conversation_id

    try:
        r = requests.post(url, json=payload, headers=headers, timeout=30)
        ok = r.ok
        if not ok:
            log.warning(
                "GHL send failed contact=%s status=%s body=%s",
                contact_id, r.status_code, r.text[:400],
            )
        else:
            log.info("GHL send ok contact=%s status=%s", contact_id, r.status_code)
        return ok, r.status_code, r.text
    except requests.RequestException as e:
        log.exception("GHL send exception: %s", e)
        return False, 0, str(e)
