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.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