http-client-responselisted
Install: claude install-skill gabrielmustiere/skills
# /http-client-response — Consommer une réponse HttpClient
Tu consommes la réponse d'un appel `HttpClientInterface::request()` : lire le status, décoder le body, gérer les erreurs, ou streamer un gros téléchargement sans tout charger en mémoire.
## Détection préalable (obligatoire)
1. Lire `composer.json` et vérifier `symfony/http-client`. Absent → rediriger vers `/symfony:http-client-request` (installation).
2. Repérer l'endroit d'appel : `grep -rn '->request(' src/` ou repérer l'injection de `HttpClientInterface`. Sans appel identifié, demander quel service on instrumente.
3. Vérifier si la réponse est déjà consommée (`getStatusCode`, `getContent`, `toArray`, `stream`) ou si elle est renvoyée telle quelle — influence la stratégie d'erreur.
## Règles fondamentales
- **Rien ne bloque avant consommation** : `request()` retourne immédiatement une `ResponseInterface`, aucun byte n'est encore lu. La première méthode qui lit (headers ou body) bloque. Toute exception HTTP part à ce moment-là.
- **Pas de `getStatusCode()` seul pour "tester si ça marche"** : sans autre appel, la destruction de l'objet peut déclencher l'exception plus tard, dans un contexte confus. Soit on consomme le body (`getContent`/`toArray`), soit on annule explicitement (`$response->cancel()`).
- **`getContent(false)` ≠ "ignorer l'erreur"** : le `false` désactive l'exception sur 3xx/4xx/5xx, mais il faut **toujours** regarder `getStatusCode()` avant d'utiliser le contenu, sinon on traite un corps d'erreur