Lingara Lingara 說明文件 學習指南 API 程式庫 App 建立 網頁版
語言: 粵語

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

呢頁包裝咗乜嘢