Lingara Lingara Documentation Guides API Bibliothèques Applications Créer Application web
Langue: Français

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 premier each ou next. Un flux lu avec next nécessite un close explicite.
  • Identifiez les événements avec case et in.
  • Pour arrêter un flux plus tôt, quittez le bloc avec break, ou appelez close.
  • Les erreurs héritent de Lingara::Error. retry_after est un nombre de secondes, ou nil quand 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 dans net_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.6

Ruby

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
end

Ruby

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

Ce que cette page encapsule