Files
lan_checker/checkers/http.py
Antoine Van Elstraete b0d571ae26 Add French docstrings and README
- 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>
2026-01-26 18:25:20 +01:00

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
)