Lingara Lingara 文档 学习指南 API 库 应用 构建 网页版
语言: 中文简体

Ruby

本页译自英文。如两者有出入,以英文页面为准。 阅读英文页面

Ruby 库是 RubyGems 上的 lingara gem。它需要 Ruby 3.3 或更高版本,使用标准库中的 Net::HTTP,不依赖任何其他 gem。

用法一览

  • 调用是同步的。一个客户端可以在多个线程之间共享,并且在 fork 之后依然正确。
  • 给流式调用传入一个块,每个事件都会被逐一传给它。不传块时,你会得到一个 Enumerable 流,它是惰性的:请求会在第一次 each 或 next 时才发送。用 next 读取的流需要显式调用 close。
  • 用 case 和 in 匹配事件。
  • 要提前停止流,可以用 break 跳出块,或者调用 close。
  • 错误继承自 Lingara::Error。retry_after 是秒数,当 API 没有指定等待时间时为 nil。
  • 通过向 Lingara::Client.new 传入关键字参数来创建客户端。Net::HTTP 的选项放在 net_http_options 中;它的读取超时同时也是流的空闲超时。

下面的示例会安装 gem、创建客户端、以流的方式获取词汇列表并处理错误。

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

本页封装的内容