Ruby
Halaman ini diterjemahkan dari bahasa Inggris. Jika keduanya berbeda, halaman bahasa Inggris yang benar. Baca halaman bahasa Inggris
Pustaka Ruby adalah gem lingara di RubyGems. Pustaka ini membutuhkan Ruby 3.3 atau lebih baru dan menggunakan Net::HTTP dari pustaka standar, tanpa gem lain.
Cara pemakaiannya
- Panggilan bersifat sinkron. Satu klien dapat dipakai bersama antar-thread, dan tetap benar setelah
fork. - Berikan block ke panggilan streaming dan setiap event akan di-yield ke block itu. Tanpa block, Anda mendapatkan stream
Enumerablesebagai gantinya, yang bersifat lazy: permintaan dikirim padaeachataunextpertama. Stream yang dibaca dengannextmembutuhkanclosesecara eksplisit. - Cocokkan event dengan
casedanin. - Untuk menghentikan stream lebih awal, keluar dari block dengan
break, atau panggilclose. - Error merupakan turunan
Lingara::Error.retry_afteradalah jumlah detik, atauniljika API tidak menyebutkan waktu tunggu. - Buat klien dengan argumen kata kunci ke
Lingara::Client.new. Opsi untuk Net::HTTP dimasukkan kenet_http_options; batas waktu bacanya juga menjadi batas waktu diam stream.
Contoh di bawah ini memasang gem, membuat klien, men-stream daftar kosakata, dan menangani error.
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