ibr.rb

 1# frozen_string_literal: true
 2
 3require "blather"
 4
 5class IBR < Blather::Stanza::Iq::Query
 6	register :ibr, nil, "jabber:iq:register"
 7
 8	def registered=(reg)
 9		query.at_xpath("./ns:registered", ns: self.class.registered_ns)&.remove
10		node = Nokogiri::XML::Node.new("registered", document)
11		node.default_namespace = self.class.registered_ns
12		query << node if reg
13	end
14
15	def registered?
16		!!query.at_xpath("./ns:registered", ns: self.class.registered_ns)
17	end
18
19	[
20		"instructions",
21		"username",
22		"nick",
23		"password",
24		"name",
25		"first",
26		"last",
27		"email",
28		"address",
29		"city",
30		"state",
31		"zip",
32		"phone",
33		"url",
34		"date"
35	].each do |tag|
36		define_method("#{tag}=") do |v|
37			query.at_xpath("./ns:#{tag}", ns: self.class.registered_ns)&.remove
38			node = Nokogiri::XML::Node.new(tag, document)
39			node.default_namespace = self.class.registered_ns
40			node.content = v
41			query << node
42		end
43
44		define_method(tag) do
45			query.at_xpath("./ns:#{tag}", ns: self.class.registered_ns)&.content
46		end
47	end
48end