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