#THIS IS WHAT IS USED IN PROD, CURRENT MAIN INIT IS FOR TESTING ONLY import os, json, gzip, logging, requests import azure.functions as func AGENT_API_URL = os.getenv("AGENT_API_URL") # e.g. https://agent-api-app.azurewebsites.net def _to_events(data: bytes): # gunzip if needed if len(data) >= 2 and data[0] == 0x1F and data[1] == 0x8B: data = gzip.decompress(data) text = data.decode("utf-8", errors="replace").lstrip("\ufeff").strip() if not text: return [] # try JSON (object or array) try: parsed = json.loads(text) if isinstance(parsed, dict): return [parsed] if isinstance(parsed, list): return [x for x in parsed if isinstance(x, dict)] except Exception: pass # try JSONL out = [] for ln in text.splitlines(): s = ln.strip() if not s: continue try: out.append(json.loads(s)) except Exception: pass return out def main(inputblob: func.InputStream): if not AGENT_API_URL: logging.warning("AGENT_API_URL not set; skipping.") return events = _to_events(inputblob.read()) if not events: logging.info("No JSON events parsed from blob %s", inputblob.name) return try: url = AGENT_API_URL.rstrip("/") + "/ingest" r = requests.post(url, json={"events": events}, timeout=30) logging.info("Agent ingest -> %s %s", r.status_code, r.text[:300]) r.raise_for_status() except Exception as e: logging.exception("Ingest failed: %s", e)