Watch-IP

Menggunakan Watch-IP dengan Go

github.com/Digitload/watch-ip-sdk-go (v0.1.1) membungkus GET /v1/geo dengan request yang sadar context dan tanpa dependensi di luar standard library.

Instalasi

Membutuhkan Go 1.21+. Modul ini di-mirror secara read-only dari repositori utama Watch-IP ke repositori publik agar bisa diambil dengan go get.

go get

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

Mulai cepat

GetGeo menerima context.Context sebagai argumen pertamanya — padanan Go untuk AbortSignal milik JS SDK. Seperti SDK sisi server lainnya, set WithOrigin untuk memenuhi pemeriksaan allowed-origins key tersebut saat memanggil dari server, bukan browser. Setiap field lokasi adalah pointer, karena setiap field Watch-IP bersifat nullable secara independen — periksa nil sebelum melakukan dereference.

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("lokasi tidak tersedia untuk koneksi ini")
}

Penanganan error dan timeout

Setiap kegagalan mengembalikan *WatchIPError dengan field Status dan Code. Batasi waktu request dengan context.WithTimeout, bukan opsi timeout tingkat klien.

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

Yang tidak dicakup SDK ini

Modul ini hanya memanggil GET /v1/geo. Pencarian IP, validasi email, dan pemeriksaan risiko adalah endpoint server-ke-server terpisah yang belum punya klien Go — panggil langsung dengan net/http, diautentikasi dengan cara yang sama seperti yang dijelaskan panduan autentikasi.

Halaman terkait