Watch-IP

Watch-IP'yi Go ile Kullanma

github.com/Digitload/watch-ip-sdk-go (v0.1.1), GET /v1/geo'yu context farkındalıklı isteklerle ve standart kütüphane dışında bağımlılık olmadan sarmalar.

Kurulum

Go 1.21+ gerektirir. Bu modül, go get'in getirebilmesi için ana Watch-IP deposundan herkese açık bir depoya salt okunur olarak yansıtılır (mirror).

go get

go get github.com/Digitload/watch-ip-sdk-go

Hızlı başlangıç

GetGeo, ilk argümanı olarak bir context.Context alır — Go'nun, JS SDK'sının AbortSignal'ine karşılığıdır. Diğer sunucu tarafı SDK'larda olduğu gibi, bir tarayıcıdan değil bir sunucudan çağırırken anahtarın izin verilen origin kontrolünü karşılamak için WithOrigin'i ayarlayın. Watch-IP alanları bağımsız olarak null olabildiğinden, her konum alanı bir pointer'dır — dereference etmeden önce nil kontrolü yapın.

Go

client, err := watchip.New("wip_pub_xxxxxxxx", watchip.WithOrigin("https://example.com"))
if err != nil {
    log.Fatal(err)
}

geo, err := client.GetGeo(context.Background())
if err != nil {
    log.Fatal(err)
}

if geo.Country != nil && geo.City != nil {
    fmt.Println(*geo.Country, *geo.City)
} else {
    fmt.Println("bu bağlantı için konum kullanılamıyor")
}

Hata işleme ve zaman aşımları

Her başarısızlık, Status ve Code alanlarına sahip bir *WatchIPError döndürür. İstek süresini bir istemci düzeyinde timeout seçeneği yerine context.WithTimeout ile sınırlayın.

Go

ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second)
defer cancel()

geo, err := client.GetGeo(ctx)
var wipErr *watchip.WatchIPError
if errors.As(err, &wipErr) {
    fmt.Println(wipErr.Code, wipErr.Status, wipErr.Message)
}

Bu SDK'nın kapsamadıkları

Bu modül yalnızca GET /v1/geo'yu çağırır. IP sorgulama, e-posta doğrulama ve risk kontrolleri, henüz bir Go istemcisi olmayan ayrı sunucudan sunucuya endpoint'lerdir — bunları, kimlik doğrulama kılavuzunun anlattığı şekilde kimliği doğrulanmış olarak doğrudan net/http ile çağırın.

İlgili sayfalar