import os
import time
from .audit import audit_tool_call
import requests

THINGSBOARD_BASE_URL = os.getenv("THINGSBOARD_BASE_URL", "http://localhost:8081")
THINGSBOARD_TOKEN = os.getenv("THINGSBOARD_TOKEN", "")


def _headers():
    if THINGSBOARD_TOKEN:
        return {"X-Authorization": f"Bearer {THINGSBOARD_TOKEN}"}
    return {}


def get_latest_telemetry(device_id: str, metric: str, window: int = 3600):
    _t = time.time()
    # Using deviceId with JWT token (admin). If using device token, adapt externally.
    url = f"{THINGSBOARD_BASE_URL}/api/plugins/telemetry/DEVICE/{device_id}/values/timeseries"
    params = {"keys": metric, "startTs": "", "endTs": ""}
    r = requests.get(url, headers=_headers(), params=params, timeout=20)
    r.raise_for_status()
    out = r.json()
    audit_tool_call("tool_thingsboard_read.get_latest_telemetry", {"device_id": device_id, "metric": metric}, {"ok": True}, True, int((time.time()-_t)*1000))
    return out


def get_device_status(device_id: str):
    _t = time.time()
    url = f"{THINGSBOARD_BASE_URL}/api/device/info/{device_id}"
    r = requests.get(url, headers=_headers(), timeout=20)
    r.raise_for_status()
    out = r.json()
    audit_tool_call("tool_thingsboard_read.get_latest_telemetry", {"device_id": device_id, "metric": metric}, {"ok": True}, True, int((time.time()-_t)*1000))
    return out
