package ipecho import ( "io" "net" "net/http" ) type Service struct { url string } func New() *Service { return &Service{ url: "http://ipecho.net/plain", } } func (s Service) Name() string { return "ipecho" } func (s Service) Lookup() (net.IP, error) { resp, err := http.DefaultClient.Get(s.url) if err != nil { return nil, err } body, err := io.ReadAll(resp.Body) if err != nil { return nil, err } return net.ParseIP(string(body)), nil }