Lingara Lingara Dokumentation Ratgeber API Bibliotheken Apps Erstellen Web-App
Sprache: Deutsch

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 Sie withTimeout für eine Frist; Sie sehen Ihre eigene CancellationException, nie eine verpackte.
  • Ein Stream ist ein EventStream, ein Flow, den Sie einmal einsammeln. Sammeln Sie ihn innerhalb von use ein, damit er geschlossen wird, wenn Sie fertig sind. Events sind Data Classes unter einem Sealed Interface und werden mit when unterschieden.
  • Fehler erweitern die Sealed Class LingaraException, sodass ein when über sie vollständig ist. retryAfter ist eine Duration oder null, wenn die API keine Wartezeit genannt hat.
  • Erstellen Sie einen Client mit dem Builder LingaraClient { }. Er verwendet den HttpClient des 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.

Was diese Seite kapselt