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