# frozen_string_literal: true require "blather" class OOB < Blather::XMPPNode register :oob, "jabber:x:oob" def self.new(url=nil, desc: nil) new_node = super :x case url when Nokogiri::XML::Node new_node.inherit url else new_node.url = url if url new_node.desc = desc if desc end new_node end def self.find_or_create(parent) if (found_x = parent.find("ns:x", ns: registered_ns).first) x = new(found_x) found_x.remove else x = new end parent << x x end def url find("ns:url", ns: self.class.registered_ns).first&.content end def url=(url) remove_children :url i = Niceogiri::XML::Node.new(:url, document, namespace) i.content = url self << i end def desc find("ns:desc", ns: self.class.registered_ns).first&.content end def desc=(description) remove_children :desc i = Niceogiri::XML::Node.new(:desc, document, namespace) i.content = description self << i end end