Lingara Lingara Dokumentasi Panduan API Pustaka Aplikasi Bina Apl web
Bahasa: Bahasa Melayu

Go

Halaman ini diterjemahkan daripada bahasa Inggeris. Jika kedua-duanya berbeza, halaman bahasa Inggeris adalah yang betul. Baca halaman bahasa Inggeris

Pustaka Go ialah pakej lingara dalam modul github.com/Spinning-Cat-Studios/lingara_api_clients/go. Ia memerlukan Go 1.23 atau lebih baharu dan hanya menggunakan pustaka standard.

Cara ia digunakan

  • Setiap panggilan menerima context.Context sebagai argumen pertama. Batalkan context untuk membatalkan panggilan; ralat yang anda terima ialah ralat context itu sendiri, jadi errors.Is(err, context.Canceled) berfungsi.
  • Panggilan adalah segerak. Jalankan dalam goroutine apabila anda mahukan beberapa panggilan serentak; satu klien selamat untuk dikongsi.
  • Strim dibaca dengan for ev, err := range s.Events(), dan setiap peristiwa dipadankan dengan type switch. Tutup dengan defer s.Close().
  • Ralat terdiri daripada empat jenis yang berkongsi antara muka lingara.Error. Gunakan errors.As untuk mencapai salah satunya; RetryAfter bernilai nil apabila API tidak menyatakan tempoh menunggu.
  • Pilihan adalah berfungsi: hantar lingara.WithHTTPClient untuk menggunakan http.Client anda sendiri. Timeout klien itu kemudian mengehadkan setiap panggilan, termasuk strim.

Contoh di bawah memasang modul, mencipta klien, menstrim senarai perbendaharaan kata dan mengendalikan ralat.

Go

go get github.com/Spinning-Cat-Studios/lingara_api_clients/go@v0.1.0-alpha.6

Go

import (
	"os"

	lingara "github.com/Spinning-Cat-Studios/lingara_api_clients/go"
)

client, err := lingara.New(
	lingara.WithClientCredentials(os.Getenv("LINGARA_CLIENT_ID"), os.Getenv("LINGARA_CLIENT_SECRET")),
)
if err != nil {
	return nil, err
}

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

Go

_, err := client.GetUsage(ctx)
var apiErr *lingara.APIError
var oauthErr *lingara.OAuthError
var maintenance *lingara.MaintenanceError
var transport *lingara.TransportError
switch {
case err == nil:
case errors.As(err, &apiErr):
	// A refusal from the API: Status, Code (stable) and Message (localised).
	fmt.Println(apiErr.Status, apiErr.Code, apiErr.Message)
	if apiErr.RetryAfter != nil {
		fmt.Println("retry after", *apiErr.RetryAfter)
	}
case errors.As(err, &oauthErr):
	// The token endpoint refused the credentials or the scopes.
	fmt.Println(oauthErr.Status, oauthErr.ErrorCode, oauthErr.Description)
case errors.As(err, &maintenance):
	fmt.Println("under maintenance")
	if maintenance.RetryAfter != nil {
		fmt.Println("retry after", *maintenance.RetryAfter)
	}
case errors.As(err, &transport):
	// No usable answer: connect, tls, reset, timeout, and so on.
	fmt.Println("transport:", transport.Kind)
default:
	// ctx was cancelled or timed out: errors.Is(err, context.Canceled).
	fmt.Println(err)
}

Perkara yang dibalut oleh halaman ini