"""HIVE API Client.""" import config import httpx import httpx_retries # https://docs.thehive.ai/reference/submit-a-task-synchronously API_BASE_URL = "https://api.thehive.ai/api/v2" def run_task(url: str) -> dict: """Run a task in The Hive.""" headers = { "accept": "application/json", "authorization": f"token {config.HIVE_API_KEY}", } transport = httpx_retries.RetryTransport( retry=httpx_retries.Retry( total=config.HIVE_RETRIES, backoff_factor=2, status_forcelist=[429] ) ) block_text = None with httpx.Client(transport=transport) as client: response = client.post( f"{API_BASE_URL}/task/sync", headers=headers, json={"url": url}, timeout=config.HIVE_TIMEOUT, ) response.raise_for_status() response_json = response.json() result_status = response_json.get("status") if result_status: result = result_status[0].get("response") if result: output = result.get("output") if output: block_text = output[0].get("block_text") if block_text is None: raise Exception(f"Unexpected Hive text recognition result: {response_json}") return block_text