Lingara Lingara Dokumentasyon Mga gabay API Mga library Mga app Gumawa Web app
Wika: Filipino

Go

Isinalin mula sa Ingles ang pahinang ito. Kung magkaiba ang dalawa, ang pahinang Ingles ang tama. Basahin ang pahinang Ingles

Ang Go library ay ang package na lingara sa module na github.com/Spinning-Cat-Studios/lingara_api_clients/go. Kailangan nito ang Go 1.23 o mas bago at standard library lamang ang ginagamit nito.

Paano ito gamitin

  • Ang bawat tawag ay tumatanggap muna ng context.Context. Kanselahin ang context para kanselahin ang tawag; ang error na ibinabalik sa iyo ay ang sariling error ng context, kaya gumagana ang errors.Is(err, context.Canceled).
  • Synchronous ang mga tawag. Patakbuhin ang mga ito sa mga goroutine kapag gusto mo ng ilang sabay-sabay; ligtas na pagsaluhan ang iisang client.
  • Binabasa ang stream gamit ang for ev, err := range s.Events(), at itinutugma ang bawat event gamit ang type switch. Isara ito gamit ang defer s.Close().
  • Ang mga error ay apat na type na may iisang interface na lingara.Error. Gamitin ang errors.As para makuha ang isa; ang RetryAfter ay nil kapag walang itinakdang paghihintay ang API.
  • Functional ang mga option: ipasa ang lingara.WithHTTPClient para gamitin ang sarili mong http.Client. Ang Timeout nito ang maglilimita sa bawat tawag, kasama ang mga stream.

Ini-install ng mga halimbawa sa ibaba ang module, gumagawa ng client, nag-i-stream ng listahan ng bokabularyo at humahawak ng error.

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

Ang binabalot ng pahinang ito