blather_ext.rb

 1# frozen_string_literal: true
 2
 3require "securerandom"
 4
 5module Blather
 6	ADDRESSES_NS = "http://jabber.org/protocol/address"
 7
 8	class JID
 9		def with(node: self.node, domain: self.domain, resource: self.resource)
10			self.class.new(node, domain, resource)
11		end
12	end
13
14	module DSL
15		def say(to, msg, using=:chat)
16			client.write(Blather::Stanza::Message.new(to, msg, using).tap { |message|
17				message.id = SecureRandom.uuid
18			})
19		end
20	end
21
22	class Stanza
23		class Message
24			def addresses
25				find("ns:addresses", ns: ADDRESSES_NS)
26					.first
27					&.find("ns:address", ns: ADDRESSES_NS)
28			end
29		end
30	end
31end