Ruby
Cette page est traduite de l'anglais. En cas de différence, la page anglaise fait foi. Lire la page en anglais
La bibliothèque Ruby est la gem lingara sur RubyGems. Elle nécessite Ruby 3.3 ou version ultérieure et utilise Net::HTTP de la bibliothèque standard, sans aucune autre gem.
À quoi elle ressemble
- Les appels sont synchrones. Un même client peut être partagé entre threads, et il reste correct après un
fork. - Passez un bloc à un appel en flux et chaque événement lui est transmis. Sans bloc, vous obtenez à la place un flux
Enumerable, qui est paresseux : la requête est envoyée au premiereachounext. Un flux lu avecnextnécessite uncloseexplicite. - Identifiez les événements avec
caseetin. - Pour arrêter un flux plus tôt, quittez le bloc avec
break, ou appelezclose. - Les erreurs héritent de
Lingara::Error.retry_afterest un nombre de secondes, ounilquand l’API n’a indiqué aucun délai. - Créez un client avec des arguments nommés passés à
Lingara::Client.new. Les options de Net::HTTP se placent dansnet_http_options; son délai de lecture est aussi le délai d’inactivité du flux.
Les exemples ci-dessous installent la gem, créent un client, diffusent une liste de vocabulaire et gèrent une erreur.
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