Ruby
Esta página está traducida del inglés. Si ambas difieren, la página en inglés es la correcta. Leer la página en inglés
La biblioteca de Ruby es la gema lingara en RubyGems. Necesita Ruby 3.3 o posterior y usa Net::HTTP de la biblioteca estándar, sin ninguna otra gema.
Cómo se usa
- Las llamadas son síncronas. Un mismo cliente se puede compartir entre hilos, y sigue funcionando correctamente tras un
fork. - Pasa un bloque a una llamada con flujo y cada evento se le entrega mediante yield. Sin bloque obtienes en su lugar un flujo
Enumerable, que es perezoso: la petición se envía en el primereachonext. Un flujo leído connextnecesita uncloseexplícito. - Distingue los eventos con
caseein. - Para detener un flujo antes de tiempo, sal del bloque con
break, o llama aclose. - Los errores heredan de
Lingara::Error.retry_afteres un número de segundos, onilcuando la API no indicó ninguna espera. - Crea un cliente con argumentos de palabra clave para
Lingara::Client.new. Las opciones de Net::HTTP van ennet_http_options; su tiempo de espera de lectura es también el tiempo de inactividad del flujo.
Los ejemplos de abajo instalan la gema, crean un cliente, reciben en flujo una lista de vocabulario y gestionan un error.
Ruby
gem install lingara -v 0.1.0-alpha.6Ruby
require "lingara"
client = Lingara::Client.new(client_id: client_id, client_secret: client_secret)Ruby
client.generate_vocabulary(level: 2, source_lang: "en", target_lang: "zh", count: 8) do |event|
case event
in Lingara::GenerateVocabularyEventItem => item then puts "#{item.data.word}: #{item.data.translation}"
else nil
end
endRuby
begin
client.get_usage
rescue Lingara::ApiError => e
# A refusal from the API: status, code (stable) and message (localised).
puts "#{e.status} #{e.code}: #{e.message}"
puts "retry after #{e.retry_after}s" if e.retry_after
rescue Lingara::OAuthError => e
# The token endpoint refused the credentials or the scopes.
puts "#{e.status} #{e.error}: #{e.description}"
rescue Lingara::MaintenanceError => e
puts "under maintenance"
puts "retry after #{e.retry_after}s" if e.retry_after
rescue Lingara::TransportError => e
# No usable answer: :connect, :tls, :reset, :timeout, and so on.
puts "transport: #{e.kind}"
end