Terrain 13 — Interopérabilité
🔍 Renfort : Partie 13.
1. Requête HttpClient ⭐⭐
🕹️ Mission : GET une API avec un Bearer token, résultat en tableau.
✅ Solution
$this->client->request('GET', $url, ['auth_bearer' => $token, 'headers' => ['Accept' => 'application/json']])->toArray();2. Requêtes concurrentes ⭐⭐⭐
🕹️ Mission : appeler 10 endpoints en parallèle. Principe ?
✅ Solution
Réponses paresseuses : lancer les 10 request() (empilées), puis lire (toArray()) → exécution concurrente au fil des lectures.
3. Client typé ⭐⭐⭐
🕹️ Mission : pourquoi encapsuler une API externe dans un MoodleClient typé ?
✅ Solution
Centraliser URL/auth/erreurs, exposer des méthodes métier, faciliter test (mock) et remplacement — au lieu d’URLs dispersées.
4. Mock HTTP en test ⭐⭐⭐
🕹️ Mission : tester un client sans appel réseau.
✅ Solution
$mock = new MockHttpClient([new MockResponse(json_encode([...]), ['http_code' => 200])]);5. Consommer WordPress ⭐⭐
🕹️ Mission : récupérer les 5 derniers articles WP avec auteur/image.
✅ Solution
$this->client->request('GET', '/wp-json/wp/v2/posts', ['query' => ['per_page' => 5, '_embed' => true]])->toArray();6. Détecter une erreur Moodle ⭐⭐⭐
🕹️ Mission : pourquoi ne pas se fier au seul code HTTP avec Moodle ?
✅ Solution
Moodle renvoie souvent 200 même en cas d’échec ; l’erreur est dans le corps (exception/errorcode). Inspecter le corps et lever une exception si présent.
7. Webhook entrant ⭐⭐⭐
🕹️ Mission : quels composants structurent la réception de webhooks, et que fait le parser ?
✅ Solution
Webhook + RemoteEvent ; le RequestParser vérifie la signature et transforme la requête en RemoteEvent typé consommé par un handler (via Messenger).
8. Webhook sortant ⭐⭐⭐⭐
🕹️ Mission : trois exigences pour émettre un webhook de qualité.
✅ Solution
Signer (HMAC), retries (Messenger), event_id pour l’idempotence côté partenaire. (+ valider l’URL contre le SSRF.)
9. Lancement LTI ⭐⭐⭐⭐⭐
🕹️ Mission : sur quels standards repose LTI 1.3, et faut-il coder la validation du token ?
✅ Solution
OIDC + JWT signés (JWKS). Ne pas coder la validation soi-même → bibliothèque LTI (signature/nonce/aud/expiration).
10. AGS (notes) ⭐⭐⭐⭐
🕹️ Mission : quel service LTI renvoie une note dans le carnet Moodle ?
✅ Solution
AGS (Assignment and Grade Services) : l’outil poste un score dans le carnet de notes Moodle.
Terrain suivant : Tests & qualité.