Lingara Lingara لارښود لارښودونه API کتابتونونه اپلیکیشنونه جوړول ویب اپلیکیشن
ژبه: پښتو

Kotlin

دا پاڼه له انګلیسي ژبې ژباړل شوې ده. که دواړه سره توپیر ولري، انګلیسي پاڼه سمه ده. انګلیسي پاڼه ولولئ

د Kotlin کتابتون په Maven Central کې com.getlingara:lingara-kotlin دی. دا په JVM کې چلېږي، Java 17 او Kotlin 2.2 یا نوي ته اړتیا لري، او kotlinx.coroutines او kotlinx.serialization کاروي.

په عمل کې څنګه دی

  • هر کال یو suspend فنکشن دی. د کال د لغوه کولو لپاره کوروټین لغوه کړئ، یا د وروستۍ نېټې لپاره withTimeout وکاروئ؛ تاسو خپل CancellationException وینئ، هېڅکله یو نغښتی نه.
  • جریان یو EventStream دی، یو Flow چې یو ځل یې راټولوئ. هغه د use دننه راټول کړئ، ترڅو کله چې کار مو پای ته ورسېد وتړل شي. پېښې د یوه مهر شوي انټرفېس لاندې د ډېټا ټولګي دي، چې په when سمون مومي.
  • تېروتنې له مهر شوي ټولګي LingaraException میراث اخلي، نو پر هغوی یو when بشپړ دی. retryAfter یو Duration دی، یا null کله چې API د انتظار موده نه وي ویلې.
  • کلاینټ د LingaraClient { } جوړوونکي په مرسته جوړ کړئ. دا د JDK HttpClient کاروي، چې تاسو یې په خپل ځای پر ځای کولی شئ.

لاندې بېلګې تړاو اضافه کوي، یو کلاینټ جوړوي، د لغتونو یو لېست په جریان کې راوړي او یوه تېروتنه اداره کوي.

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.

دا پاڼه څه رانغاړي