package nip05 import ( "encoding/json" "fmt" "net/http" "strings" ) type ( Name2KeyMap map[string]string Key2RelaysMap map[string][]string ) type WellKnownResponse struct { Names Name2KeyMap `json:"names"` // NIP-05 Relays Key2RelaysMap `json:"relays"` // NIP-35 } func QueryIdentifier(fullname string) string { spl := strings.Split(fullname, "@") if len(spl) != 2 { return "" } name := spl[0] domain := spl[1] res, err := http.Get(fmt.Sprintf("https://%s/.well-known/nostr.json?name=%s", domain, name)) if err != nil { return "" } var result WellKnownResponse if err := json.NewDecoder(res.Body).Decode(&result); err != nil { return "" } pubkey, _ := result.Names[name] return pubkey } func NormalizeIdentifier(fullname string) string { if strings.HasPrefix(fullname, "_@") { return fullname[2:] } return fullname }