Fetch user relays, synchronously

This commit is contained in:
2024-10-12 12:45:50 +02:00
parent 9e3652479b
commit a08a4746f7
3 changed files with 96 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
module NostrManager
class DiscoverUserRelays < NostrManagerService
def initialize(pubkey:)
@pubkey = pubkey
@relays = Setting.nostr_discovery_relays
# @relays = %w[
# wss://nostr.kosmos.org
# wss://purplepag.es
# wss://relay.nostr.band
# wss://njump.me
# ]
end
def call
nip65_events = []
user_relays = []
filter = Nostr::Filter.new(
authors: [@pubkey],
kinds: [10002],
limit: 1,
)
@relays.each do |url|
event = NostrManager::FetchLatestEvent.call(filter: filter, relay_url: url)
if event.present? && user_relays.detect { |r| r[:id] == event["id"] }.nil?
user_relays << { id: event["id"], created_at: event["created_at"] }
end
end
puts user_relays.inspect
end
end
end