Lingara Lingara مستندات راهنماها API کتابخانه‌ها برنامه‌ها ساخت نسخهٔ وب
زبان: فارسی

Ruby

این صفحه از انگلیسی ترجمه شده است. اگر این دو با هم تفاوت داشته باشند، صفحهٔ انگلیسی درست است. خواندن صفحهٔ انگلیسی

کتابخانه Ruby همان gem با نام lingara در RubyGems است. به 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

آنچه این صفحه دربر می‌گیرد