Lingara Lingara Τεκμηρίωση Οδηγοί API Βιβλιοθήκες Εφαρμογές Δημιουργία Διαδικτυακή εφαρμογή
Γλώσσα: Ελληνικά

Java

Αυτή η σελίδα έχει μεταφραστεί από τα αγγλικά. Αν οι δύο διαφέρουν, η αγγλική σελίδα είναι η σωστή. Διαβάστε την αγγλική σελίδα

Η βιβλιοθήκη για Java είναι το com.getlingara:lingara-java στο Maven Central. Απαιτεί Java 17 ή νεότερη και χρησιμοποιεί το εγγενές java.net.http.HttpClient του JDK, με το Jackson για JSON.

Πώς διαβάζεται

  • Οι κλήσεις είναι σύγχρονες. Για πολλές ταυτόχρονα, εκτελέστε τες σε virtual threads ή σε έναν executor.
  • Μια ροή είναι ένα EventStream, που είναι ταυτόχρονα Iterable και AutoCloseable: διαβάστε την με έναν βρόχο for μέσα σε try-with-resources. Τα συμβάντα είναι records κάτω από ένα sealed interface, οπότε ένα switch πάνω τους είναι εξαντλητικό.
  • Για ακύρωση, διακόψτε το νήμα ή καλέστε close() από άλλο νήμα. Η κλήση τότε ρίχνει CancellationException, που δεν είναι ένα από τα σφάλματα της βιβλιοθήκης.
  • Τα σφάλματα επεκτείνουν το LingaraException, μια unchecked εξαίρεση. Το retryAfter() επιστρέφει ένα Optional<Duration>.
  • Δημιουργήστε έναν client με LingaraClient.builder(). Μια κλήση που δεν μεταδίδει ροή δεν έχει χρονικό όριο μέχρι να ορίσετε το requestTimeout.

Τα παρακάτω δείγματα προσθέτουν την εξάρτηση, δημιουργούν έναν client, μεταδίδουν σε ροή μια λίστα λεξιλογίου και χειρίζονται ένα σφάλμα.

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.

Τι περιβάλλει αυτή η σελίδα