Serviço de tradução klingon


História

Neste exercício, você vai fornecer um TranslationService em que membros pagos têm alguma garantia de qualidade.

Você encontrou uma API mágica de tradução capaz de atender qualquer solicitação de tradução em um tempo razoável, e quer tirar proveito disso.

A API mágica tem uma interface bem minimalista:

Buscando uma tradução

api.fetch(text) busca a tradução de text e retorna dois valores:

  • translation: a tradução em si
  • quality: a qualidade expressa como um número

Se não houver tradução disponível (porque ela ainda não foi solicitada), a API lança um erro. Isso também acontece se um trecho de texto for intraduzível.

Solicitando uma tradução

api.request(text, callback) solicita a tradução de text e chama o callback quando ela estiver pronta, sem nenhum valor.

A API request é instável, o que significa que às vezes a API vai chamar o callback com um erro. Se isso acontecer, não tem problema solicitar de novo.

⚠ Atenção! ⚠

Alguns usuários anteriores foram preguiçosos na hora de programar: sempre solicitavam uma tradução sem nem conferir se o texto já havia sido traduzido. Por causa disso, a API retorna um erro se o texto já tiver sido traduzido e bloqueia todo o acesso por completo, para sempre.

Tarefas

Estes são exemplos de tarefas que se encaixam na história do serviço de tradução:

  • Buscar uma tradução, ignorando a qualidade
  • Buscar um lote de traduções, tudo ou nada
  • Solicitar uma tradução, tentando novamente no máximo 2 vezes
  • Buscar uma tradução, inspecionar a qualidade ou solicitá-la

Terminologia

Estas são recomendações, não regras, para a terminologia recorrente nas instruções (incluindo comentários do stub)

  • A dependência injetada é chamada de TranslationService, ou API
  • O serviço é assíncrono, mas isso nunca é mencionado
  • Uma falha em um Future é a API lança um erro
  • Uma falha em um Callback é a API vai chamar o callback com um erro

Todos os textos a traduzir são de klingon para inglês.

Implementações

Referências

Observação

A tradução correta de 'arlogh Qoylu'pu'? é How many times has it been heard?.