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

Kotlin

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

Η βιβλιοθήκη για Kotlin είναι το com.getlingara:lingara-kotlin στο Maven Central. Τρέχει στο JVM, απαιτεί Java 17 και Kotlin 2.2 ή νεότερο, και χρησιμοποιεί τα kotlinx.coroutines και kotlinx.serialization.

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

  • Κάθε κλήση είναι μια συνάρτηση suspend. Ακυρώστε τη coroutine για να ακυρώσετε την κλήση, ή χρησιμοποιήστε withTimeout για προθεσμία· βλέπετε το δικό σας CancellationException, ποτέ ένα τυλιγμένο.
  • Μια ροή είναι ένα EventStream, ένα Flow που συλλέγετε μία φορά. Συλλέξτε το μέσα σε use, ώστε να κλείνει όταν τελειώσετε. Τα συμβάντα είναι data classes κάτω από ένα sealed interface και αντιστοιχίζονται με when.
  • Τα σφάλματα επεκτείνουν τη sealed class LingaraException, οπότε ένα when πάνω τους είναι εξαντλητικό. Το retryAfter είναι ένα Duration, ή null όταν το API δεν όρισε αναμονή.
  • Δημιουργήστε έναν client με τον builder LingaraClient { }. Χρησιμοποιεί το HttpClient του JDK, το οποίο μπορείτε να αντικαταστήσετε με το δικό σας.

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

Kotlin

implementation("com.getlingara:lingara-kotlin:0.1.0-alpha.6")

Kotlin

import com.getlingara.kotlin.LingaraClient

val client =
    LingaraClient {
        clientCredentials(System.getenv("LINGARA_CLIENT_ID"), System.getenv("LINGARA_CLIENT_SECRET"))
    }

Kotlin

import com.getlingara.kotlin.LingaraClient
import com.getlingara.kotlin.model.GenerateVocabularyEvent
import com.getlingara.kotlin.model.VocabRequest

val request = VocabRequest(level = 2, sourceLang = "en", targetLang = "zh", count = 8)
// The request is sent here; collect the stream once, inside use {}.
client.generateVocabulary(request).use { stream ->
    stream.collect { event ->
        when (event) {
            is GenerateVocabularyEvent.Item -> println("${event.data.word} ${event.data.translation}")
            is GenerateVocabularyEvent.Started -> Unit
        }
    }
}

Kotlin

try {
    client.getUsage()
} catch (e: LingaraException) {
    when (e) {
        // A refusal from the API: status, code (stable) and message (localised).
        is ApiException -> println("${e.status} ${e.code} ${e.message}; retry after ${e.retryAfter}")
        // The token endpoint refused the credentials or the scopes.
        is OAuthException -> println("${e.status} ${e.error} ${e.description}")
        is MaintenanceException -> println("under maintenance; retry after ${e.retryAfter}")
        // No usable answer: CONNECT, TLS, RESET, TIMEOUT, and so on.
        is TransportException -> println("transport: ${e.kind}")
    }
}
// A cancelled call throws the caller's own CancellationException instead.

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