Skip to Content

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é.