"""Lit Retry-After hors ligne. Aucune connexion ni nouvelle tentative HTTP."""

import re
import sys
from datetime import datetime, timedelta, timezone
from email.utils import parsedate_to_datetime


def echeance_retry_after(valeur, reception):
    """Retourne une échéance UTC, ou None si la valeur est inexploitable."""
    if reception.tzinfo is None or reception.utcoffset() is None:
        raise ValueError("L'heure de réception doit contenir son fuseau.")
    texte = valeur.strip()
    if not texte:
        return None
    try:
        if re.fullmatch(r"[0-9]+", texte):
            return reception.astimezone(timezone.utc) + timedelta(seconds=int(texte))
        # Ne pas traiter -1, +120 ou 1.5 comme des dates.
        if not re.search(r"[A-Za-z]", texte):
            return None
        date = parsedate_to_datetime(texte)
        if date.tzinfo is None or date.utcoffset() is None:
            return None
        return date.astimezone(timezone.utc)
    except (ValueError, TypeError, OverflowError):
        return None


if __name__ == "__main__":
    if len(sys.argv) != 3:
        raise SystemExit('Usage : python lire_retry_after.py "VALEUR" "2026-11-13T10:00:00+00:00"')
    try:
        reception = datetime.fromisoformat(sys.argv[2].replace("Z", "+00:00"))
        echeance = echeance_retry_after(sys.argv[1], reception)
    except ValueError as erreur:
        raise SystemExit(str(erreur))
    if echeance is None:
        print("Délai inexploitable : consulter la politique du service. Ne pas relancer automatiquement.")
    elif echeance <= reception:
        print("Échéance déjà atteinte à réception. Cela ne garantit pas qu'une reprise sera acceptée.")
    else:
        print("Ne pas réessayer avant (UTC) :", echeance.isoformat())
    print("Aucune requête HTTP n'a été effectuée.")
