From 0816e89b32e7149ea51e49957595e3c9d031ce98 Mon Sep 17 00:00:00 2001 From: fiatjaf Date: Fri, 25 Jul 2025 09:50:00 -0300 Subject: [PATCH] nip65 helpers. --- nip65/nip65.go | 34 ++++++++++++++++++++++++++++++++++ 1 file changed, 34 insertions(+) create mode 100644 nip65/nip65.go diff --git a/nip65/nip65.go b/nip65/nip65.go new file mode 100644 index 0000000..bc8c447 --- /dev/null +++ b/nip65/nip65.go @@ -0,0 +1,34 @@ +package nip65 + +import "fiatjaf.com/nostr" + +// ParseRelayList parses a NIP-65 relay list event (kind 10002) and returns +// separate lists of read and write relays based on the "r" tags. +func ParseRelayList(event nostr.Event) (readRelays []string, writeRelays []string) { + for tag := range event.Tags.FindAll("r") { + if len(tag) < 2 { + continue + } + + relayURL := tag[1] + if !nostr.IsValidRelayURL(relayURL) { + continue + } + + normalizedURL := nostr.NormalizeURL(relayURL) + var marker string + if len(tag) > 2 { + marker = tag[2] + } + + if marker == "" || marker == "read" { + readRelays = append(readRelays, normalizedURL) + } + if marker == "" || marker == "write" { + writeRelays = append(writeRelays, normalizedURL) + } + } + + return readRelays, writeRelays +} +