- Docstrings for all modules, classes and methods - README.md with installation and usage instructions - Update CLAUDE.md with dns.py Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
79 lines
2.5 KiB
Python
79 lines
2.5 KiB
Python
"""
|
|
Checker HTTP.
|
|
|
|
Vérifie la disponibilité d'un service web via requête HTTP.
|
|
"""
|
|
|
|
import time
|
|
|
|
import requests
|
|
|
|
from .base import BaseChecker, CheckResult
|
|
|
|
|
|
class HttpChecker(BaseChecker):
|
|
"""
|
|
Vérifie la disponibilité d'un service web.
|
|
|
|
Configuration YAML:
|
|
url: URL à vérifier (obligatoire).
|
|
method: Méthode HTTP (défaut: GET).
|
|
expected_status: Code HTTP attendu (défaut: 200).
|
|
timeout: Délai d'attente en secondes (défaut: 10).
|
|
verify_ssl: Vérifier le certificat SSL (défaut: true).
|
|
headers: En-têtes HTTP additionnels (optionnel).
|
|
"""
|
|
|
|
def check(self) -> CheckResult:
|
|
"""
|
|
Exécute une requête HTTP vers l'URL configurée.
|
|
|
|
Returns:
|
|
CheckResult avec success=True si le code HTTP correspond
|
|
à expected_status.
|
|
"""
|
|
url = self.config["url"]
|
|
method = self.config.get("method", "GET").upper()
|
|
timeout = self.config.get("timeout", 10)
|
|
expected_status = self.config.get("expected_status", 200)
|
|
verify_ssl = self.config.get("verify_ssl", True)
|
|
headers = self.config.get("headers", {})
|
|
|
|
start = time.time()
|
|
try:
|
|
response = requests.request(
|
|
method=method,
|
|
url=url,
|
|
timeout=timeout,
|
|
verify=verify_ssl,
|
|
headers=headers
|
|
)
|
|
response_time = (time.time() - start) * 1000 # ms
|
|
|
|
if response.status_code == expected_status:
|
|
return CheckResult(
|
|
success=True,
|
|
message=f"HTTP {response.status_code}",
|
|
response_time=response_time,
|
|
details={"status_code": response.status_code}
|
|
)
|
|
else:
|
|
return CheckResult(
|
|
success=False,
|
|
message=f"Unexpected status: {response.status_code} (expected {expected_status})",
|
|
response_time=response_time,
|
|
details={"status_code": response.status_code}
|
|
)
|
|
except requests.Timeout:
|
|
return CheckResult(
|
|
success=False,
|
|
message="HTTP timeout",
|
|
response_time=None
|
|
)
|
|
except requests.RequestException as e:
|
|
return CheckResult(
|
|
success=False,
|
|
message=f"HTTP error: {e}",
|
|
response_time=None
|
|
)
|