Lingara Lingara Belgeler Rehberler API Kütüphaneler Uygulamalar Oluştur Web uygulaması
Dil: Türkçe

Akışlar

Bu sayfa İngilizceden çevrilmiştir. İkisi arasında fark varsa İngilizce sayfa doğrudur. İngilizce sayfayı oku

Dört işlem sonuçlarını server-sent events olarak akış hâlinde gönderir: kelime listesi üretmek, öğretmene mesaj göndermek, ders planı oluşturmak ve bir ders planını takip etmek. Her kütüphane olay akışını dilin kendi yineleyici türüne dönüştürür ve size her olayı türü belirli bir değere önceden çözülmüş olarak verir.

Bir akış nasıl biter

  • İş bittiğinde. Yineleme, akışın son olayında kendiliğinden durur. Bir ders planında bu son olay sonucu taşır, böylece döngü bitmeden onu alırsınız.
  • API bir hata bildirdiğinde. Akışın içinde gelen bir hata, akıştan önce gelen bir hatayla aynı türde, API hatası olarak fırlatılır.
  • Bağlantı koptuğunda. Son olayından önce biten ya da 120 saniye boyunca hiçbir şey göndermeyen bir akış, aktarım hatası olarak fırlatılır.
  • Siz durduğunuzda. Çağrıyı dilinizin alışılmış yoluyla iptal edin ya da okumayı bırakın; bağlantı hemen kapanır.

Keepalive yorumları ve bir kütüphanenin henüz tanımadığı olay türleri atlanır; böylece daha yeni bir API, daha eski bir kütüphaneyi asla bozmaz.

Asla yeniden oynatılmaz

Tek bir olay bile teslim etmiş bir akış, kütüphane tarafından asla yeniden denenmez, çünkü tekrarlamak kullanım hakkınızı iki kez harcayabilir. Bir ders planının akışı başladıktan sonra koparsa, aynı planı streamLessonPlan ve ilk olayındaki plan_id ile takip edin.

Kod örneğinin dili

TypeScript

const stream = client.generateVocabulary({ level: 2, source_lang: "en", target_lang: "zh", count: 8 });
for await (const ev of stream) {
  if (ev.event === "item") console.log(ev.data.word, ev.data.translation);
}

Rust

use lingara::models::{GenerateVocabularyEvent, VocabRequest};
use std::num::NonZeroU8;

let request = VocabRequest { level: 2, source_lang: "en".into(), target_lang: "zh".into(), count: NonZeroU8::new(8) };
let mut stream = client.generate_vocabulary(&request).await?;
while let Some(event) = stream.next().await {
    if let GenerateVocabularyEvent::Item(item) = event? {
        println!("{} {}", item.word, item.translation);
    }
}

Go

count := uint8(8)
s, err := client.GenerateVocabulary(ctx, lingara.VocabRequest{Level: 2, SourceLang: "en", TargetLang: "zh", Count: &count})
if err != nil {
	return err
}
defer s.Close()
for ev, err := range s.Events() {
	if err != nil {
		return err
	}
	if item, ok := ev.(lingara.GenerateVocabularyEventItem); ok {
		fmt.Println(item.Data.Word, item.Data.Translation)
	}
}

Java

import com.getlingara.client.model.GenerateVocabularyEvent;
import com.getlingara.client.model.VocabRequest;

VocabRequest request = new VocabRequest().level(2).sourceLang("en").targetLang("zh").count(8);
try (EventStream<GenerateVocabularyEvent> stream = client.generateVocabulary(request)) {
  for (GenerateVocabularyEvent event : stream) {
    if (event instanceof GenerateVocabularyEvent.Item item) {
      System.out.println(item.data().getWord() + " " + item.data().getTranslation());
    }
  }
}

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
        }
    }
}

Ruby

client.generate_vocabulary(level: 2, source_lang: "en", target_lang: "zh", count: 8) do |event|
  case event
  in Lingara::GenerateVocabularyEventItem => item then puts "#{item.data.word}: #{item.data.translation}"
  else nil
  end
end

PHP

use Lingara\Model\VocabRequest;
use Lingara\Stream\GenerateVocabularyEvent;

$request = new VocabRequest(['level' => 2, 'source_lang' => 'en', 'target_lang' => 'zh', 'count' => 8]);
foreach ($client->generateVocabulary($request) as $event) {
    if ($event instanceof GenerateVocabularyEvent\Item) {
        echo $event->data->getWord(), ': ', $event->data->getTranslation(), "\n";
    }
}

Bu sayfanın sarmaladıkları