Servicio de traducción klingon


Historia

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

Has encontrado una API de traducción mágica capaz de atender cualquier petición de traducción en un tiempo razonable, y quieres sacarle partido.

Esta API mágica tiene una interfaz 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 ninguna traducción disponible (porque todavía no se ha solicitado), la API lanza un error. Esto también ocurre si un texto no se puede traducir.

Solicitar una traducción

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

La API de request es inestable, lo que significa que a veces llamará al callback con un error. Si eso ocurre, no pasa nada por volver a solicitarla.

⚠ ¡Advertencia! ⚠

Debido a que algunos usuarios anteriores eran unos vagos a la hora de programar y siempre solicitaban una traducción sin comprobar siquiera 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 es la API lanza un error
  • Un fallo en un Callback es la API llamará a callback con un error

Todos los textos que hay que traducir son de klingon a inglés.

Implementaciones

Referencia

Nota bene

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