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.