Lingara Lingara Dokumentasi Panduan API Pustaka Aplikasi Buat Aplikasi web
Bahasa: Bahasa Indonesia

Kotlin

Halaman ini diterjemahkan dari bahasa Inggris. Jika keduanya berbeda, halaman bahasa Inggris yang benar. Baca halaman bahasa Inggris

Pustaka Kotlin adalah com.getlingara:lingara-kotlin di Maven Central. Pustaka ini berjalan di JVM, membutuhkan Java 17 dan Kotlin 2.2 atau lebih baru, serta menggunakan kotlinx.coroutines dan kotlinx.serialization.

Cara pemakaiannya

  • Setiap panggilan adalah fungsi suspend. Batalkan coroutine untuk membatalkan panggilan, atau gunakan withTimeout untuk tenggat waktu; Anda melihat CancellationException milik Anda sendiri, tidak pernah yang dibungkus.
  • Stream adalah sebuah EventStream, sebuah Flow yang Anda kumpulkan satu kali. Kumpulkan di dalam use, agar stream tertutup saat Anda selesai. Event berupa data class di bawah sealed interface, dicocokkan dengan when.
  • Error merupakan turunan sealed class LingaraException, sehingga when atasnya bersifat menyeluruh. retryAfter adalah sebuah Duration, atau null jika API tidak menyebutkan waktu tunggu.
  • Buat klien dengan builder LingaraClient { }. Builder ini memakai HttpClient milik JDK, yang dapat Anda ganti dengan milik Anda sendiri.

Contoh di bawah ini menambahkan dependensi, membuat klien, men-stream daftar kosakata, dan menangani 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.

Yang dibungkus halaman ini