Lingara Lingara Mwongozo Miongozo API Maktaba Programu Unda Programu ya wavuti
Lugha: Kiswahili

Go

Ukurasa huu umetafsiriwa kutoka Kiingereza. Ikiwa hizi mbili zinatofautiana, ukurasa wa Kiingereza ndio sahihi. Soma ukurasa wa Kiingereza

Maktaba ya Go ni kifurushi cha lingara katika moduli github.com/Spinning-Cat-Studios/lingara_api_clients/go. Inahitaji Go 1.23 au toleo jipya zaidi na hutumia maktaba ya kawaida pekee.

Jinsi inavyotumika

  • Kila mwito hupokea context.Context kwanza. Ghairi muktadha ili kughairi mwito; hitilafu unayorudishiwa ni ya muktadha wenyewe, kwa hivyo errors.Is(err, context.Canceled) inafanya kazi.
  • Miito inasawazishwa. Iendeshe ndani ya goroutine unapotaka kadhaa kwa wakati mmoja; mteja mmoja ni salama kushirikiwa.
  • Mtiririko husomwa kwa for ev, err := range s.Events(), na kila tukio hulinganishwa kwa type switch. Uufunge kwa defer s.Close().
  • Hitilafu ni aina nne zinazoshiriki kiolesura cha lingara.Error. Tumia errors.As kufikia mojawapo; RetryAfter ni nil wakati API haikutaja muda wa kusubiri.
  • Chaguo ni za kitendakazi: pitisha lingara.WithHTTPClient ili kutumia http.Client yako mwenyewe. Kisha Timeout yake huweka kikomo kwa kila mwito, ikiwemo mitiririko.

Sampuli zilizo hapa chini husakinisha moduli, huunda mteja, hutiririsha orodha ya msamiati na hushughulikia hitilafu.

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

Kile ukurasa huu unachofunika