Service de traduction klingon


Histoire

Dans cet exercice, tu vas fournir un TranslationService qui offre une assurance qualité aux membres payants.

Tu as trouvé une API de traduction magique capable de répondre à n'importe quelle requête de traduction en un temps raisonnable, et tu veux en tirer profit.

Cette API magique propose une interface très minimaliste :

Récupère une traduction

api.fetch(text) récupère la traduction de text et renvoie deux valeurs :

  • translation : la traduction proprement dite
  • quality : la qualité, exprimée sous forme de nombre

Si aucune traduction n'est disponible (parce qu'elle n'a pas encore été demandée), l'API lève une erreur. C'est également le cas si un texte est intraduisible.

Demande une traduction

api.request(text, callback) demande la traduction de text et appelle le callback une fois celle-ci prête, sans lui passer de valeur.

L'API request est instable, ce qui signifie que parfois l'API appellera le callback avec une erreur. Si cela se produit, tu peux refaire la demande.

⚠ Attention ! ⚠

Parce que certains utilisateurs précédents ont été paresseux en programmant, demandant toujours une traduction sans même vérifier si le texte avait déjà été traduit, l'API renvoie une erreur si le texte a déjà été traduit et bloque tout accès, complètement, pour toujours.

Tâches

Voici des exemples de tâches qui collent à l'histoire du service de traduction :

  • Récupère une traduction en ignorant la qualité
  • Récupère un lot de traductions, tout ou rien
  • Demande une traduction, en réessayant au maximum 2 fois
  • Récupère une traduction, inspecte la qualité, ou demande-la

Terminologie

Ce sont des recommandations, et non des règles, concernant la terminologie récurrente des instructions (y compris les commentaires du stub)

  • La dépendance injectée s'appelle le TranslationService, ou l'API
  • Le service est asynchrone, mais on ne le mentionne jamais
  • Un échec sur un Future s'énonce l'API lève une erreur
  • Un échec sur un Callback s'énonce l'API appellera callback avec une erreur

Tous les textes traduits vont du klingon vers l'anglais.

Implémentations

Références

N.B.

La traduction correcte de 'arlogh Qoylu'pu'? est How many times has it been heard?.