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.

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