Skip to content

Genel Bakış ve Kurulum

shopier-go, Shopier REST API'si için geliştirilmiş üretime hazır (production-ready) bir Go SDK ve API wrapper kütüphanesidir. Sıfır harici bağımlılık, otomatik yeniden deneme (retry) mekanizması, context yönetimi ve tam tip güvenliği sunar.

Gereksinimler

  • Go 1.23 veya üzeri

Kurulum

Projeye standart go get komutuyla ekleyin:

bash
go get github.com/AdisGroup/shopier-go

Hızlı Başlangıç

İstemciyi Personal Access Token (PAT) veya OAuth2 erişim belirteci ile başlatabilirsiniz:

go
package main

import (
	"context"
	"fmt"
	"log"
	"os"

	"github.com/AdisGroup/shopier-go"
)

func main() {
	client, err := shopier.NewClient(os.Getenv("SHOPIER_TOKEN"))
	if err != nil {
		log.Fatalf("İstemci başlatılamadı: %v", err)
	}

	ctx := context.Background()

	// Güncel hesap bakiyelerini sorgula
	balances, err := client.Balance.Get(ctx)
	if err != nil {
		log.Fatalf("Bakiye sorgusu başarısız: %v", err)
	}

	for _, b := range balances {
		fmt.Printf("Bakiye: %s %s\n", b.Amount, b.Currency)
	}
}

İstemci Yapılandırması (Functional Options)

İstemci oluşturulurken ağ, zaman aşımı, loglama ve yeniden deneme politikaları özelleştirilebilir:

go
import (
	"log/slog"
	"net/http"
	"os"
	"time"

	"github.com/AdisGroup/shopier-go"
)

logger := slog.New(slog.NewJSONHandler(os.Stdout, nil))

client, err := shopier.NewClient(os.Getenv("SHOPIER_TOKEN"),
	shopier.WithTimeout(15*time.Second),
	shopier.WithMaxRetries(3),
	shopier.WithRetryDelay(500*time.Millisecond, 10*time.Second),
	shopier.WithLogger(logger),
	shopier.WithHTTPClient(&http.Client{Timeout: 30 * time.Second}),
	shopier.WithUserAgent("ozel-servis/1.0"),
)

Yapılandırma Seçenekleri

SeçenekVarsayılanAçıklama
WithBaseURL(url)https://api.shopier.com/v1Özel REST API kök adresi
WithOAuthBaseURL(url)https://api.shopier.com:8443/v1Özel OAuth2 kök adresi (port 8443)
WithTimeout(d)30sContext deadline içermeyen istekler için varsayılan zaman aşımı
WithMaxRetries(n)3429 ve 5xx yanıtlarında maksimum yeniden deneme adedi
WithRetryDelay(initial, max)500ms, 10sÜstel geri çekilme (backoff) süre parametreleri
WithLogger(logger)Sessiz (Discard)Yapılandırılmış *slog.Logger nesnesi
WithHTTPClient(client)Standart istemciÖzel *http.Client taşıyıcısı
WithUserAgent(ua)shopier-go/1.0.0İsteklerde iletilecek User-Agent değeri