from __future__ import annotations import time from typing import Any import httpx class HttpHealthCheckExecutor: def execute(self, params: dict[str, Any]) -> tuple[bool, str, dict[str, Any], dict[str, Any]]: url = params["url"] timeout_ms = int(params.get("timeout_ms", 3000)) started_at = time.perf_counter() with httpx.Client(timeout=timeout_ms / 1000.0) as client: response = client.get(url) latency_ms = max(int((time.perf_counter() - started_at) * 1000), 0) success = response.status_code == 200 message = f"{response.status_code} {response.reason_phrase}" data: dict[str, Any] = { "status_code": response.status_code, "latency_ms": latency_ms, } evidence = { "response_body": response.text, } return success, message, data, evidence