Lingara Lingara दस्तावेज़ मार्गदर्शिकाएँ API लाइब्रेरी ऐप बनाएं वेब ऐप
भाषा: हिन्दी

Go

यह पेज अंग्रेज़ी से अनुवादित है। अगर दोनों में अंतर हो, तो अंग्रेज़ी पेज सही है। अंग्रेज़ी पेज पढ़ें

Go लाइब्रेरी lingara पैकेज है, जो मॉड्यूल github.com/Spinning-Cat-Studios/lingara_api_clients/go में मौजूद है। इसके लिए Go 1.23 या उसके बाद का संस्करण चाहिए और यह केवल स्टैंडर्ड लाइब्रेरी का उपयोग करती है।

इसे कैसे इस्तेमाल करें

  • हर कॉल सबसे पहले एक context.Context लेती है। कॉल रद्द करने के लिए context रद्द करें; आपको जो एरर मिलता है वह context का अपना होता है, इसलिए errors.Is(err, context.Canceled) काम करता है।
  • कॉल सिंक्रोनस होती हैं। जब आप एक साथ कई कॉल चाहें, तो उन्हें goroutines में चलाएँ; एक क्लाइंट को साझा करना सुरक्षित है।
  • स्ट्रीम को for ev, err := range s.Events() से पढ़ा जाता है, और हर इवेंट को type switch से मिलाया जाता है। इसे defer s.Close() से बंद करें।
  • एरर चार टाइप हैं जो lingara.Error इंटरफ़ेस साझा करते हैं। किसी एक तक पहुँचने के लिए errors.As का उपयोग करें; जब API ने कोई इंतज़ार नहीं बताया, तो RetryAfter का मान nil होता है।
  • विकल्प फ़ंक्शनल हैं: lingara.WithHTTPClient पास करें, ताकि आप अपना खुद का http.Client इस्तेमाल कर सकें। तब उसका Timeout स्ट्रीम सहित हर कॉल को सीमित करता है।

नीचे दिए उदाहरण मॉड्यूल इंस्टॉल करते हैं, क्लाइंट बनाते हैं, शब्दावली सूची स्ट्रीम करते हैं और एक एरर संभालते हैं।

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

यह पेज क्या रैप करता है