# frozen_string_literal: true require "blather" class IBR < Blather::Stanza::Iq::Query register :ibr, nil, "jabber:iq:register" def registered=(reg) query.at_xpath("./ns:registered", ns: self.class.registered_ns)&.remove node = Nokogiri::XML::Node.new("registered", document) node.default_namespace = self.class.registered_ns query << node if reg end def registered? !!query.at_xpath("./ns:registered", ns: self.class.registered_ns) end [ "instructions", "username", "nick", "password", "name", "first", "last", "email", "address", "city", "state", "zip", "phone", "url", "date" ].each do |tag| define_method("#{tag}=") do |v| query.at_xpath("./ns:#{tag}", ns: self.class.registered_ns)&.remove node = Nokogiri::XML::Node.new(tag, document) node.default_namespace = self.class.registered_ns node.content = v query << node end define_method(tag) do query.at_xpath("./ns:#{tag}", ns: self.class.registered_ns)&.content end end end