Watch-IP

GoでWatch-IPを使う

github.com/Digitload/watch-ip-sdk-go(v0.1.1)は、コンテキスト対応のリクエストでGET /v1/geoをラップし、標準ライブラリ以外への依存関係はありません。

インストール

Go 1.21以降が必要です。このモジュールは、go getで取得できるようにメインのWatch-IPリポジトリから読み取り専用でパブリックリポジトリにミラーされています。

go get

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

クイックスタート

GetGeoは第1引数としてcontext.Contextを受け取ります—JS SDKのAbortSignalに相当するGoの仕組みです。他のサーバーサイドSDKと同様、ブラウザではなくサーバーから呼び出す場合はWithOriginを設定し、キーの許可オリジンチェックを満たしてください。Watch-IPの各フィールドは個別にnullになりうるため、位置情報の各フィールドはポインタです—参照を外す前にnilかどうか確認してください。

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("この接続では位置情報を利用できません")
}

エラー処理とタイムアウト

すべての失敗は、StatusフィールドとCodeフィールドを持つ*WatchIPErrorを返します。クライアントレベルのタイムアウトオプションではなく、context.WithTimeoutでリクエスト時間を制限してください。

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

このSDKがカバーしていないもの

このモジュールが呼び出すのはGET /v1/geoのみです。IPルックアップ、メール検証、リスクチェックは別個のサーバー間エンドポイントで、まだGoクライアントはありません—認証ガイドで説明されているのと同じ方法で認証しながら、net/httpで直接呼び出してください。

関連ページ