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