Merge branch 'feature/170-nostr_zaps' into live
All checks were successful
continuous-integration/drone/push Build is passing
All checks were successful
continuous-integration/drone/push Build is passing
This commit is contained in:
commit
41bd920060
@ -1,50 +1,50 @@
|
||||
module NostrManager
|
||||
class PublishEvent < NostrManagerService
|
||||
def initialize(event:, relay_url:)
|
||||
relay_name = relay_url.gsub(/^ws(s):\/\//, "")
|
||||
relay_name = URI.parse(relay_url).host
|
||||
@relay = Nostr::Relay.new(url: relay_url, name: relay_name)
|
||||
@event = case event.class
|
||||
when Nostr::Event
|
||||
event
|
||||
when Hash
|
||||
Nostr::Event.new(**event.symbolize_keys)
|
||||
# else
|
||||
# TODO
|
||||
# raise NotImplementedError
|
||||
end
|
||||
|
||||
if event.is_a?(Nostr::Event)
|
||||
@event = event
|
||||
else
|
||||
@event = Nostr::Event.new(**event.symbolize_keys)
|
||||
end
|
||||
|
||||
@client = Nostr::Client.new
|
||||
end
|
||||
|
||||
def call
|
||||
client, relay, event = @client, @relay, @event
|
||||
log_prefix = "[nostr][#{relay.name}]"
|
||||
|
||||
client.on :connect do
|
||||
puts "Connected to #{relay.url}"
|
||||
puts "Publishing #{event.id}..."
|
||||
client.publish event
|
||||
end
|
||||
|
||||
client.on :error do |e|
|
||||
# TODO log relay URL/name
|
||||
puts "Error: #{e}"
|
||||
puts "Closing thread..."
|
||||
Thread.exit
|
||||
end
|
||||
|
||||
client.on :message do |m|
|
||||
puts "Message: #{m}"
|
||||
msg = JSON.parse(m) rescue []
|
||||
if msg[0] == "OK" && msg[1] == event.id
|
||||
puts "Event published. Closing thread..."
|
||||
else
|
||||
# TODO log relay URL/name
|
||||
puts "Unexpected message from relay. Closing thread..."
|
||||
thread = Thread.new do
|
||||
client.on :connect do
|
||||
puts "#{log_prefix} Publishing #{event.id}..."
|
||||
client.publish event
|
||||
end
|
||||
Thread.exit
|
||||
|
||||
client.on :error do |e|
|
||||
puts "#{log_prefix} Error: #{e}"
|
||||
puts "#{log_prefix} Closing thread..."
|
||||
thread.exit
|
||||
end
|
||||
|
||||
client.on :message do |m|
|
||||
puts "#{log_prefix} Message: #{m}"
|
||||
msg = JSON.parse(m) rescue []
|
||||
if msg[0] == "OK" && msg[1] == event.id
|
||||
puts "#{log_prefix} Event published. Closing thread..."
|
||||
else
|
||||
puts "#{log_prefix} Unexpected message from relay. Closing thread..."
|
||||
end
|
||||
thread.exit
|
||||
end
|
||||
|
||||
puts "#{log_prefix} Connecting to #{relay.url}..."
|
||||
client.connect relay
|
||||
end
|
||||
|
||||
puts "Connecting to #{relay.url}..."
|
||||
client.connect relay
|
||||
thread.join
|
||||
end
|
||||
end
|
||||
end
|
||||
|
Loading…
x
Reference in New Issue
Block a user