Lingara Lingara Dokumentasyon Mga gabay API Mga library Mga app Gumawa Web app
Wika: Filipino

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 suspend function. Kanselahin ang coroutine para kanselahin ang tawag, o gamitin ang withTimeout para sa deadline; ang makikita mo ay ang sarili mong CancellationException, hindi kailanman isang nakabalot.
  • Ang stream ay isang EventStream, isang Flow na isang beses mo lang kinokolekta. Kolektahin ito sa loob ng use, para magsara ito kapag tapos ka na. Ang mga event ay mga data class sa ilalim ng isang sealed interface, na itinutugma gamit ang when.
  • Ang mga error ay nag-e-extend ng sealed class na LingaraException, kaya kumpleto ang saklaw ng isang when sa mga ito. Ang retryAfter ay isang Duration, o null kapag walang itinakdang paghihintay ang API.
  • Gumawa ng client gamit ang builder na LingaraClient { }. Ginagamit nito ang HttpClient ng 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.

Ang binabalot ng pahinang ito