Lingara Lingara Τεκμηρίωση Οδηγοί API Βιβλιοθήκες Εφαρμογές Δημιουργία Διαδικτυακή εφαρμογή
Γλώσσα: Ελληνικά

Go

Αυτή η σελίδα έχει μεταφραστεί από τα αγγλικά. Αν οι δύο διαφέρουν, η αγγλική σελίδα είναι η σωστή. Διαβάστε την αγγλική σελίδα

Η βιβλιοθήκη για Go είναι το πακέτο lingara στο module github.com/Spinning-Cat-Studios/lingara_api_clients/go. Απαιτεί Go 1.23 ή νεότερο και χρησιμοποιεί μόνο την τυπική βιβλιοθήκη.

Πώς διαβάζεται

  • Κάθε κλήση δέχεται πρώτα ένα context.Context. Ακυρώστε το context για να ακυρώσετε την κλήση· το σφάλμα που λαμβάνετε είναι αυτό του ίδιου του context, οπότε το errors.Is(err, context.Canceled) λειτουργεί.
  • Οι κλήσεις είναι σύγχρονες. Εκτελέστε τες σε goroutines όταν θέλετε πολλές ταυτόχρονα· ένας client μπορεί να μοιράζεται με ασφάλεια.
  • Μια ροή διαβάζεται με for ev, err := range s.Events(), και κάθε συμβάν αντιστοιχίζεται με ένα type switch. Κλείστε την με defer s.Close().
  • Τα σφάλματα είναι τέσσερις τύποι που μοιράζονται το interface lingara.Error. Χρησιμοποιήστε errors.As για να φτάσετε σε έναν· το RetryAfter είναι nil όταν το API δεν όρισε αναμονή.
  • Οι επιλογές είναι συναρτησιακές: περάστε lingara.WithHTTPClient για να χρησιμοποιήσετε το δικό σας http.Client. Το Timeout του περιορίζει τότε κάθε κλήση, συμπεριλαμβανομένων των ροών.

Τα παρακάτω δείγματα εγκαθιστούν το module, δημιουργούν έναν client, μεταδίδουν σε ροή μια λίστα λεξιλογίου και χειρίζονται ένα σφάλμα.

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

Τι περιβάλλει αυτή η σελίδα