nip61: ensure mint URLs are always normalized.

This commit is contained in:
fiatjaf
2025-10-26 17:36:44 -03:00
parent a78ad86b41
commit a0a66cb719

View File

@@ -2,6 +2,7 @@ package nip61
import ( import (
"context" "context"
"fmt"
"slices" "slices"
"fiatjaf.com/nostr" "fiatjaf.com/nostr"
@@ -20,7 +21,12 @@ func (zi *Info) ToEvent(ctx context.Context, kr nostr.Keyer, evt *nostr.Event) e
evt.Tags = make(nostr.Tags, 0, len(zi.Mints)+len(zi.Relays)+1) evt.Tags = make(nostr.Tags, 0, len(zi.Mints)+len(zi.Relays)+1)
for _, mint := range zi.Mints { for _, mint := range zi.Mints {
evt.Tags = append(evt.Tags, nostr.Tag{"mint", mint}) url, err := nostr.NormalizeHTTPURL(mint)
if err != nil {
return fmt.Errorf("invalid URL '%s': %w", mint, err)
}
evt.Tags = append(evt.Tags, nostr.Tag{"mint", url})
} }
for _, url := range zi.Relays { for _, url := range zi.Relays {
evt.Tags = append(evt.Tags, nostr.Tag{"relay", url}) evt.Tags = append(evt.Tags, nostr.Tag{"relay", url})
@@ -46,9 +52,10 @@ func (zi *Info) ParseEvent(evt nostr.Event) error {
switch tag[0] { switch tag[0] {
case "mint": case "mint":
if len(tag) == 2 || slices.Contains(tag[2:], cashu.Sat.String()) { if len(tag) == 2 || slices.Contains(tag[2:], cashu.Sat.String()) {
url, _ := nostr.NormalizeHTTPURL(tag[1]) if url, err := nostr.NormalizeHTTPURL(tag[1]); err == nil {
zi.Mints = append(zi.Mints, url) zi.Mints = append(zi.Mints, url)
} }
}
case "relay": case "relay":
zi.Relays = append(zi.Relays, tag[1]) zi.Relays = append(zi.Relays, tag[1])
case "pubkey": case "pubkey":