package source import ( "log/slog" "net/netip" ) type icanhazip struct { log *slog.Logger } var _ Source = (*icanhazip)(nil) func newICanHazIp(log *slog.Logger) (*icanhazip, error) { return &icanhazip{log: log}, nil } func (icanhazip) Supports(Family) bool { return true } func (s icanhazip) Lookup(family Family) (netip.Addr, error) { s.log.Info("will look up address from the icanhazip.com service", slog.String("family", string(family)), ) if family == IPv6 { return fetch("https://ipv6.icanhazip.com", IPv6) } return fetch("https://ipv4.icanhazip.com", IPv4) }