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()دەخوێندرێتەوە، و هەر ڕووداوێک بە 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.6Go
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)
}