package jsonip import ( "encoding/json" "net" "net/http" ) type Service struct { url string } func New() *Service { return &Service{ url: "https://jsonip.com", } } func (s Service) Name() string { return "jsonip" } func (s Service) Lookup() (net.IP, error) { resp, err := http.DefaultClient.Get(s.url) if err != nil { return nil, err } var v struct { Ip string `json:"ip"` Location string `json:"geo-ip"` Help string `json:"API Help"` } if err := json.NewDecoder(resp.Body).Decode(&v); err != nil { return nil, err } return net.ParseIP(v.Ip), err }