Servicio de traducción klingon


Historia

En este ejercicio vas a proporcionar un TranslationService con el que los miembros de pago cuentan con cierto control de calidad.

Encontraste una API de traducción mágica capaz de responder cualquier solicitud de traducción en un tiempo razonable, y quieres sacarle provecho.

La API mágica tiene una interfaz muy mínima:

Obtener una traducción

api.fetch(text) obtiene la traducción de text y devuelve dos valores:

  • translation: la traducción en sí
  • quality: la calidad expresada como un número

Si no hay una traducción disponible (porque todavía no se ha solicitado), la API lanza un error. Esto también pasa si un texto es intraducible.

Solicitar una traducción

api.request(text, callback) solicita la traducción de text y llama a callback cuando está lista, sin ningún valor.

La API de request es inestable, lo que significa que a veces llamará a callback con un error. Si eso pasa, no hay problema en volver a solicitarla.

⚠ ¡Advertencia! ⚠

Como algunos usuarios anteriores fueron flojos al programar y siempre solicitaban una traducción, sin siquiera comprobar si el texto ya estaba traducido, la API devuelve un error si el texto ya se ha traducido y bloquea todo acceso por completo, para siempre.

Tareas

Estos son ejemplos de tareas que encajan con la historia del servicio de traducción:

  • Obtener una traducción, ignorando la calidad
  • Obtener un lote de traducciones, todo o nada
  • Solicitar una traducción, reintentando como máximo 2 veces
  • Obtener una traducción, inspeccionar la calidad o solicitarla

Terminología

Estas son recomendaciones, no reglas, sobre la terminología recurrente en las instrucciones (incluidos los comentarios del stub)

  • La dependencia inyectada se llama TranslationService, o API
  • El servicio es asíncrono, pero esto nunca se menciona
  • Un fallo en un Future se expresa como la API lanza un error
  • Un fallo en un Callback se expresa como la API llamará a callback con un error

Todos los textos de traducción son de klingon a inglés.

Implementaciones

Referencia

N.B.

La traducción correcta de 'arlogh Qoylu'pu'? es How many times has it been heard?.