Lingara Lingara مستندات رهنماها API کتابخانه‌ها اپلیکیشن‌ها ساختن اپلیکیشن وب
زبان: دری

Kotlin

این صفحه از انگلیسی ترجمه شده است. اگر این دو با هم فرق داشته باشند، صفحهٔ انگلیسی درست است. صفحهٔ انگلیسی را بخوانید

کتابخانه Kotlin همان com.getlingara:lingara-kotlin در Maven Central است. روی JVM اجرا می‌شود، به Java 17 و Kotlin 2.2 یا بالاتر ضرورت دارد، و از kotlinx.coroutines و kotlinx.serialization استفاده می‌کند.

در عمل چطور است

  • هر فراخوانی یک تابع suspend است. برای لغو فراخوانی، کوروتین را لغو کنید، یا برای تعیین مهلت از withTimeout استفاده کنید؛ همان CancellationException خودتان را می‌بینید، هیچ‌گاه نسخه بسته‌بندی‌شده آن را.
  • جریان یک EventStream است، یعنی یک Flow که یک بار آن را جمع‌آوری می‌کنید. آن را داخل use جمع‌آوری کنید تا وقتی کارتان تمام شد بسته شود. رویدادها کلاس‌های دیتا زیر یک رابط مهرشده هستند که با when تطبیق داده می‌شوند.
  • خطاها از کلاس مهرشده LingaraException میراث می‌برند، پس یک when روی آن‌ها جامع است. retryAfter یک Duration است، یا وقتی API مدت انتظاری نگفته باشد null.
  • کلاینت را با سازنده LingaraClient { } بسازید. از HttpClient خود JDK استفاده می‌کند، که می‌توانید آن را با کلاینت خودتان عوض کنید.

نمونه‌های پایین وابستگی را اضافه می‌کنند، یک کلاینت می‌سازند، لستی از لغات را جریانی دریافت می‌کنند و یک خطا را رسیدگی می‌کنند.

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.

آنچه این صفحه دربر می‌گیرد