# =XMPP4R - XMPP Library for Ruby # License:: Ruby's license (see the LICENSE file) or GNU GPL, at your option. # Website::http://xmpp4r.github.io require 'xmpp4r/query' module Jabber module Version ## # Class for handling queries for 'Software Version' # (JEP 0092) # # Notice that according to JEP 0092 only the element can be omitted, # (iname) and must be present class IqQueryVersion < IqQuery name_xmlns 'query', 'jabber:iq:version' ## # Create a new element def initialize(iname=nil, version=nil, os=nil) super() set_iname(iname) if iname set_version(version) if version set_os(os) if os end ## # Get the name of the software # # This has been renamed to 'iname' here to keep # REXML::Element#name accessible def iname first_element_text('name') end ## # Set the name of the software # # The element won't be deleted if text is nil as # it must occur in a version query, but its text will # be empty. def iname=(text) replace_element_text('name', text.nil? ? '' : text) end ## # Set the name of the software (chaining-friendly) # result:: [String] or nil def set_iname(text) self.iname = text self end ## # Get the version of the software # result:: [String] or nil def version first_element_text('version') end ## # Set the version of the software # # The element won't be deleted if text is nil as # it must occur in a version query def version=(text) replace_element_text('version', text.nil? ? '' : text) end ## # Set the version of the software (chaining-friendly) # text:: [String] def set_version(text) self.version = text self end ## # Get the operating system or nil # (os is not mandatory for Version Query) def os first_element_text('os') end ## # Set the os of the software # text:: [String] or nil def os=(text) if text replace_element_text('os', text) else delete_elements('os') end end ## # Set the os of the software (chaining-friendly) # text:: [String] or nil def set_os(text) self.os = text self end end end end