main
Raw Download raw file
 1package iplookup
 2
 3import (
 4	"encoding/json"
 5	"fmt"
 6	"io"
 7	"net/http"
 8)
 9
10type Details struct {
11	Address    string `json:"address"`
12	UserAgent  string `json:"user_agent"`
13	DomainName string `json:"domain_name"`
14}
15
16const (
17	SERVICE_URL = "https://ip.trustme.click"
18)
19
20func Discover() (*Details, error) {
21	resp, err := http.Get(SERVICE_URL)
22	if err != nil {
23		return nil, fmt.Errorf(
24			"failed to fetch ip details url=%s: %w",
25			SERVICE_URL,
26			err)
27	}
28	b, err := io.ReadAll(resp.Body)
29	if err != nil {
30		return nil, fmt.Errorf(
31			"failed to read ip details url=%s: %w",
32			SERVICE_URL,
33			err)
34	}
35	var details Details
36	err = json.Unmarshal(b, &details)
37	if err != nil {
38		return nil, fmt.Errorf(
39			"failed to unmarshal ip details url=%s: %w",
40			SERVICE_URL,
41			err)
42	}
43	return &details, nil
44}