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.

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