Lingara Lingara Dokumentasie Gidse API Biblioteke Apps Bou Webtoepassing
Taal: Afrikaans

Go

Hierdie bladsy is uit Engels vertaal. As die twee verskil, is die Engelse bladsy korrek. Lees die Engelse bladsy

Die Go-biblioteek is die lingara-pakket in die module github.com/Spinning-Cat-Studios/lingara_api_clients/go. Dit vereis Go 1.23 of later en gebruik net die standaardbiblioteek.

Hoe dit lees

  • Elke oproep neem eerste ‘n context.Context. Kanselleer die konteks om die oproep te kanselleer; die fout wat jy terugkry, is die konteks s’n, so errors.Is(err, context.Canceled) werk.
  • Oproepe is sinchronies. Laat hulle in goroutines loop wanneer jy verskeie gelyktydig wil hê; een kliënt kan veilig gedeel word.
  • ‘n Stroom word gelees met for ev, err := range s.Events(), en elke gebeurtenis word met ‘n type switch gepas. Sluit dit met defer s.Close().
  • Foute is vier tipes wat die lingara.Error-koppelvlak deel. Gebruik errors.As om een te bereik; RetryAfter is nil wanneer die API geen wagtyd genoem het nie.
  • Opsies is funksioneel: gee lingara.WithHTTPClient deur om jou eie http.Client te gebruik. Sy Timeout begrens dan elke oproep, strome ingesluit.

Die voorbeelde hieronder installeer die module, skep ‘n kliënt, stroom ‘n woordelys en hanteer ‘n fout.

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

Wat hierdie bladsy omvou