import os
import time
from .audit import audit_tool_call
import requests
from .common import _auth_headers

FARMOS_BASE_URL = os.getenv("FARMOS_BASE_URL", "http://localhost:8080")


def get_asset(asset_id: str):
    _t = time.time()
    url = f"{FARMOS_BASE_URL}/jsonapi/asset/asset/{asset_id}"
    r = requests.get(url, headers=_auth_headers(), timeout=20)
    r.raise_for_status()
    out = r.json()
    audit_tool_call("tool_farmos_read.get_asset", {"asset_id": asset_id}, {"ok": True}, True, int((time.time()-_t)*1000))
    return out


def search_assets(name_contains: str = "", limit: int = 10):
    _t = time.time()
    params = {}
    if name_contains:
        params["filter[name][condition][path]"] = "name"
        params["filter[name][condition][operator]"] = "CONTAINS"
        params["filter[name][condition][value]"] = name_contains
    params["page[limit]"] = limit
    url = f"{FARMOS_BASE_URL}/jsonapi/asset/asset"
    r = requests.get(url, headers=_auth_headers(), params=params, timeout=20)
    r.raise_for_status()
    out = r.json()
    audit_tool_call("tool_farmos_read.get_asset", {"asset_id": asset_id}, {"ok": True}, True, int((time.time()-_t)*1000))
    return out


def read_logs(log_type: str = "observation", limit: int = 10):
    _t = time.time()
    url = f"{FARMOS_BASE_URL}/jsonapi/log/{log_type}"
    params = {"page[limit]": limit}
    r = requests.get(url, headers=_auth_headers(), params=params, timeout=20)
    r.raise_for_status()
    out = r.json()
    audit_tool_call("tool_farmos_read.get_asset", {"asset_id": asset_id}, {"ok": True}, True, int((time.time()-_t)*1000))
    return out


def read_inventory(limit: int = 10):
    _t = time.time()
    url = f"{FARMOS_BASE_URL}/jsonapi/log/inventory"
    params = {"page[limit]": limit}
    r = requests.get(url, headers=_auth_headers(), params=params, timeout=20)
    r.raise_for_status()
    out = r.json()
    audit_tool_call("tool_farmos_read.get_asset", {"asset_id": asset_id}, {"ok": True}, True, int((time.time()-_t)*1000))
    return out
