Kotlin
Diese Seite ist aus dem Englischen übersetzt. Wenn die beiden voneinander abweichen, ist die englische Seite maßgeblich. Englische Seite lesen
Die Kotlin-Bibliothek ist com.getlingara:lingara-kotlin auf Maven Central. Sie läuft auf der JVM, benötigt Java 17 und Kotlin 2.2 oder neuer und verwendet kotlinx.coroutines und kotlinx.serialization.
Wie sie sich liest
- Jeder Aufruf ist eine
suspend-Funktion. Brechen Sie die Coroutine ab, um den Aufruf abzubrechen, oder verwenden SiewithTimeoutfür eine Frist; Sie sehen Ihre eigeneCancellationException, nie eine verpackte. - Ein Stream ist ein
EventStream, einFlow, den Sie einmal einsammeln. Sammeln Sie ihn innerhalb vonuseein, damit er geschlossen wird, wenn Sie fertig sind. Events sind Data Classes unter einem Sealed Interface und werden mitwhenunterschieden. - Fehler erweitern die Sealed Class
LingaraException, sodass einwhenüber sie vollständig ist.retryAfterist eineDurationodernull, wenn die API keine Wartezeit genannt hat. - Erstellen Sie einen Client mit dem Builder
LingaraClient { }. Er verwendet denHttpClientdes JDK, den Sie durch Ihren eigenen ersetzen können.
Die folgenden Beispiele fügen die Abhängigkeit hinzu, erstellen einen Client, streamen eine Vokabelliste und behandeln einen Fehler.
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.