Watch-IP gebruiken met Go
github.com/Digitload/watch-ip-sdk-go (v0.1.1) wrapt GET /v1/geo met contextbewuste verzoeken en zonder afhankelijkheden buiten de standaardbibliotheek.
Installeren
Vereist Go 1.21+. Deze module wordt alleen-lezen gespiegeld vanuit de hoofdrepository van Watch-IP naar een publieke repository, zodat go get hem kan ophalen.
go get
go get github.com/Digitload/watch-ip-sdk-goSnel starten
GetGeo neemt een context.Context als eerste argument — het equivalent in Go van de AbortSignal van de JS-SDK. Net als bij de andere server-side SDK's stel je WithOrigin in om aan de controle op toegestane origins van de sleutel te voldoen wanneer je vanaf een server in plaats van een browser aanroept. Elk locatieveld is een pointer, omdat Watch-IP-velden onafhankelijk van elkaar nullable zijn — controleer op nil voordat je dereferentieert.
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("locatie niet beschikbaar voor deze verbinding")
}Foutafhandeling en timeouts
Elke mislukking geeft een *WatchIPError terug met Status- en Code-velden. Begrens de verzoektijd met context.WithTimeout in plaats van een timeout-optie op clientniveau.
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)
}Wat deze SDK niet dekt
Deze module roept alleen GET /v1/geo aan. IP-lookup, e-mailvalidatie en risicocontroles zijn afzonderlijke server-naar-server-endpoints waar nog geen Go-client voor is — roep ze rechtstreeks aan met net/http, geauthenticeerd op dezelfde manier als de authenticatiehandleiding beschrijft.