Lingara Lingara Dokumentasi Panduan API Pustaka Aplikasi Bina Apl web
Bahasa: Bahasa Melayu

Kotlin

Halaman ini diterjemahkan daripada bahasa Inggeris. Jika kedua-duanya berbeza, halaman bahasa Inggeris adalah yang betul. Baca halaman bahasa Inggeris

Pustaka Kotlin ialah com.getlingara:lingara-kotlin di Maven Central. Ia berjalan pada JVM, memerlukan Java 17 dan Kotlin 2.2 atau lebih baharu, dan menggunakan kotlinx.coroutines serta kotlinx.serialization.

Cara ia digunakan

  • Setiap panggilan ialah fungsi suspend. Batalkan coroutine untuk membatalkan panggilan, atau gunakan withTimeout untuk tarikh akhir; anda melihat CancellationException anda sendiri, tidak pernah yang dibalut.
  • Strim ialah sebuah EventStream, iaitu Flow yang anda kumpul sekali sahaja. Kumpulkannya di dalam use, supaya ia ditutup apabila anda selesai. Peristiwa ialah data class di bawah sealed interface, dipadankan dengan when.
  • Ralat melanjutkan sealed class LingaraException, jadi when ke atasnya adalah menyeluruh. retryAfter ialah sebuah Duration, atau null apabila API tidak menyatakan tempoh menunggu.
  • Cipta klien dengan builder LingaraClient { }. Ia menggunakan HttpClient milik JDK, yang boleh anda gantikan dengan milik anda sendiri.

Contoh di bawah menambah kebergantungan, mencipta klien, menstrim senarai perbendaharaan kata dan mengendalikan ralat.

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.

Perkara yang dibalut oleh halaman ini