From a3d45a117c2f5cb389f647c31bb37630fa1d7dcf Mon Sep 17 00:00:00 2001 From: thePR0M3TH3AN <53631862+PR0M3TH3AN@users.noreply.github.com> Date: Mon, 28 Jul 2025 13:55:55 -0400 Subject: [PATCH] Fix relay URL handling for nostr-sdk 0.43 --- src/nostr/client.py | 19 ++++++++++++++++--- src/tests/test_nostr_client.py | 4 ++-- 2 files changed, 18 insertions(+), 5 deletions(-) diff --git a/src/nostr/client.py b/src/nostr/client.py index 0155617..76fdb00 100644 --- a/src/nostr/client.py +++ b/src/nostr/client.py @@ -21,6 +21,7 @@ from nostr_sdk import ( Kind, KindStandard, Tag, + RelayUrl, ) from datetime import timedelta from nostr_sdk import EventId, Timestamp @@ -173,14 +174,26 @@ class NostrClient: async def _initialize_client_pool(self) -> None: if self.offline_mode or not self.relays: return + + formatted = [] + for relay in self.relays: + if isinstance(relay, str): + try: + formatted.append(RelayUrl.parse(relay)) + except Exception: + logger.error("Invalid relay URL: %s", relay) + else: + formatted.append(relay) + if hasattr(self.client, "add_relays"): - await self.client.add_relays(self.relays) + await self.client.add_relays(formatted) else: - for relay in self.relays: + for relay in formatted: await self.client.add_relay(relay) + await self.client.connect() self._connected = True - logger.info(f"NostrClient connected to relays: {self.relays}") + logger.info("NostrClient connected to relays: %s", formatted) async def _ping_relay(self, relay: str, timeout: float) -> bool: """Attempt to retrieve the latest event from a single relay.""" diff --git a/src/tests/test_nostr_client.py b/src/tests/test_nostr_client.py index 1aa998f..0fc5a61 100644 --- a/src/tests/test_nostr_client.py +++ b/src/tests/test_nostr_client.py @@ -91,7 +91,7 @@ def test_initialize_client_pool_add_relays_used(tmp_path): client = _setup_client(tmp_path, FakeAddRelaysClient) fc = client.client client.connect() - assert fc.added == [client.relays] + assert [[str(r) for r in relays] for relays in fc.added] == [client.relays] assert fc.connected is True @@ -99,7 +99,7 @@ def test_initialize_client_pool_add_relay_fallback(tmp_path): client = _setup_client(tmp_path, FakeAddRelayClient) fc = client.client client.connect() - assert fc.added == client.relays + assert [str(r) for r in fc.added] == client.relays assert fc.connected is True