From a063107a15f3e1f23f40d2c8907d3709366d9bea Mon Sep 17 00:00:00 2001 From: Vitor Pamplona Date: Sat, 30 Aug 2025 12:45:32 -0400 Subject: [PATCH] Adds a normalized parser to all nip65 relays --- .../quartz/nip65RelayList/AdvertisedRelayListEvent.kt | 2 ++ .../quartz/nip65RelayList/tags/AdvertisedRelayInfoTag.kt | 7 +++++++ 2 files changed, 9 insertions(+) diff --git a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip65RelayList/AdvertisedRelayListEvent.kt b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip65RelayList/AdvertisedRelayListEvent.kt index 315f406b3..8f1093b0f 100644 --- a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip65RelayList/AdvertisedRelayListEvent.kt +++ b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip65RelayList/AdvertisedRelayListEvent.kt @@ -41,6 +41,8 @@ class AdvertisedRelayListEvent( ) : BaseReplaceableEvent(id, pubKey, createdAt, KIND, tags, content, sig) { fun relays() = tags.mapNotNull(AdvertisedRelayInfo::parse) + fun relaysNorm() = tags.mapNotNull(AdvertisedRelayInfo::parseNorm) + fun readRelays() = tags.mapNotNull(AdvertisedRelayInfo::parseRead).ifEmpty { null } fun readRelaysNorm() = tags.mapNotNull(AdvertisedRelayInfo::parseReadNorm).ifEmpty { null } diff --git a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip65RelayList/tags/AdvertisedRelayInfoTag.kt b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip65RelayList/tags/AdvertisedRelayInfoTag.kt index a588ec4c7..57215a443 100644 --- a/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip65RelayList/tags/AdvertisedRelayInfoTag.kt +++ b/quartz/src/androidMain/kotlin/com/vitorpamplona/quartz/nip65RelayList/tags/AdvertisedRelayInfoTag.kt @@ -58,6 +58,13 @@ class AdvertisedRelayInfo( return AdvertisedRelayInfo(normalizedUrl, type) } + @JvmStatic + fun parseNorm(tag: Array): NormalizedRelayUrl? { + ensure(match(tag)) { return null } + val normalizedUrl = RelayUrlNormalizer.normalizeOrNull(tag[1]) + return normalizedUrl + } + @JvmStatic fun parseRead(tag: Array): String? { ensure(match(tag)) { return null }