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

Java

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

کتابخانه Java همان com.getlingara:lingara-java در Maven Central است. به Java 17 یا بالاتر نیاز دارد و از java.net.http.HttpClient خود JDK استفاده می‌کند، همراه با Jackson برای JSON.

در عمل چگونه است

  • فراخوانی‌ها همگام‌اند. برای اجرای تعداد زیادی به‌طور هم‌زمان، آن‌ها را روی رشته‌های مجازی یا یک اجراکننده اجرا کنید.
  • جریان یک EventStream است که هم Iterable است و هم AutoCloseable: آن را با حلقه for درون try-with-resources بخوانید. رویدادها رکوردهایی زیر یک رابط مهروموم‌شده‌اند، پس یک switch روی آن‌ها جامع است.
  • برای لغو، رشته را متوقف کنید یا close() را از رشته‌ای دیگر فراخوانی کنید. آنگاه فراخوانی CancellationException پرتاب می‌کند، که جزو خطاهای کتابخانه نیست.
  • خطاها از LingaraException ارث می‌برند، که یک استثنای بررسی‌نشده است. retryAfter() یک Optional<Duration> برمی‌گرداند.
  • کلاینت را با LingaraClient.builder() بسازید. فراخوانی‌ای که جریانی نیست تا وقتی requestTimeout را تنظیم نکنید مهلتی ندارد.

نمونه‌های زیر وابستگی را اضافه می‌کنند، یک کلاینت می‌سازند، فهرستی از واژگان را جریانی دریافت می‌کنند و یک خطا را مدیریت می‌کنند.

Java

<dependency>
  <groupId>com.getlingara</groupId>
  <artifactId>lingara-java</artifactId>
  <version>0.1.0-alpha.6</version>
</dependency>

Java

import com.getlingara.client.LingaraClient;

LingaraClient client =
    LingaraClient.builder()
        .clientCredentials(
            System.getenv("LINGARA_CLIENT_ID"), System.getenv("LINGARA_CLIENT_SECRET"))
        .build();

Java

import com.getlingara.client.model.GenerateVocabularyEvent;
import com.getlingara.client.model.VocabRequest;

VocabRequest request = new VocabRequest().level(2).sourceLang("en").targetLang("zh").count(8);
try (EventStream<GenerateVocabularyEvent> stream = client.generateVocabulary(request)) {
  for (GenerateVocabularyEvent event : stream) {
    if (event instanceof GenerateVocabularyEvent.Item item) {
      System.out.println(item.data().getWord() + " " + item.data().getTranslation());
    }
  }
}

Java

try {
  client.getUsage();
} catch (LingaraException e) {
  if (e instanceof ApiException api) {
    // A refusal from the API: status(), code() (stable) and getMessage() (localised).
    System.out.println(api.status() + " " + api.code() + " " + api.getMessage());
    api.retryAfter().ifPresent(wait -> System.out.println("retry after " + wait));
  } else if (e instanceof OAuthException oauth) {
    // The token endpoint refused the credentials or the scopes.
    System.out.println(oauth.status() + " " + oauth.error() + " " + oauth.description());
  } else if (e instanceof MaintenanceException maintenance) {
    System.out.println("under maintenance");
    maintenance.retryAfter().ifPresent(wait -> System.out.println("retry after " + wait));
  } else if (e instanceof TransportException transport) {
    // No usable answer: CONNECT, TLS, RESET, TIMEOUT, and so on.
    System.out.println("transport: " + transport.kind());
  }
}
// An interrupted call throws java.util.concurrent.CancellationException instead.

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