Lingara Lingara Documentatie Gidsen API Bibliotheken Apps Bouwen Webapp
Taal: Nederlands

Kotlin

Deze pagina is vertaald uit het Engels. Als de twee verschillen, is de Engelse pagina juist. Lees de Engelse pagina

De Kotlin-bibliotheek is com.getlingara:lingara-kotlin op Maven Central. Ze draait op de JVM, vereist Java 17 en Kotlin 2.2 of hoger, en gebruikt kotlinx.coroutines en kotlinx.serialization.

Hoe het leest

  • Elke aanroep is een suspend-functie. Annuleer de coroutine om de aanroep te annuleren, of gebruik withTimeout voor een deadline; je ziet je eigen CancellationException, nooit een ingepakte.
  • Een stream is een EventStream, een Flow die je één keer collect. Collect hem binnen use, zodat hij sluit als je klaar bent. Events zijn data classes onder een sealed interface, gematcht met when.
  • Fouten breiden de sealed class LingaraException uit, dus een when erover is uitputtend. retryAfter is een Duration, of null wanneer de API geen wachttijd noemde.
  • Maak een client aan met de builder LingaraClient { }. Hij gebruikt de HttpClient van de JDK, die je door je eigen kunt vervangen.

De voorbeelden hieronder voegen de afhankelijkheid toe, maken een client aan, streamen een woordenlijst en handelen een fout af.

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.

Wat deze pagina omvat