Kotlin
Isinalin mula sa Ingles ang pahinang ito. Kung magkaiba ang dalawa, ang pahinang Ingles ang tama. Basahin ang pahinang Ingles
Ang Kotlin library ay ang com.getlingara:lingara-kotlin sa Maven Central. Tumatakbo ito sa JVM, nangangailangan ng Java 17 at Kotlin 2.2 o mas bago, at ginagamit ang kotlinx.coroutines at kotlinx.serialization.
Paano ito gamitin
- Ang bawat tawag ay isang
suspendfunction. Kanselahin ang coroutine para kanselahin ang tawag, o gamitin angwithTimeoutpara sa deadline; ang makikita mo ay ang sarili mongCancellationException, hindi kailanman isang nakabalot. - Ang stream ay isang
EventStream, isangFlowna isang beses mo lang kinokolekta. Kolektahin ito sa loob nguse, para magsara ito kapag tapos ka na. Ang mga event ay mga data class sa ilalim ng isang sealed interface, na itinutugma gamit angwhen. - Ang mga error ay nag-e-extend ng sealed class na
LingaraException, kaya kumpleto ang saklaw ng isangwhensa mga ito. AngretryAfteray isangDuration, onullkapag walang itinakdang paghihintay ang API. - Gumawa ng client gamit ang builder na
LingaraClient { }. Ginagamit nito angHttpClientng JDK, na mapapalitan mo ng sarili mo.
Idinaragdag ng mga halimbawa sa ibaba ang dependency, gumagawa ng client, nag-i-stream ng listahan ng bokabularyo at humahawak ng error.
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.