Initialize a new NodeBrowser new(stream,pubsubservice)
# File lib/xmpp4r/pubsub/helper/nodebrowser.rb, line 14 def initialize(stream) @stream = stream end
get category of node
# File lib/xmpp4r/pubsub/helper/nodebrowser.rb, line 122 def category(jid,node) info = get_info(jid,node) return info['category'] end
get disco info for a node
check www.xmpp.org/extensions/xep-0060.html#entity for more infos
# File lib/xmpp4r/pubsub/helper/nodebrowser.rb, line 86 def get_info(jid,node) iq = Iq.new(:get,jid) iq.from = @stream.jid discoinfo = Discovery::IqQueryDiscoInfo.new discoinfo.node = node iq.add(discoinfo) info = {} @stream.send_with_id(iq) do |answer| identity = answer.query.identity info['type'] = identity.type info['category'] = identity.category info['features'] = answer.query.features answer.query.each_element('x') { |x| info['nodeinformation'] = x } end info end
Retrieve the items from a node Throws an ServerError when receiving <iq
type='error'/>
Target entity (set only domain!)
of [Hash] with keys 'name' => [String] and 'jid' => [Jabber::JID]
# File lib/xmpp4r/pubsub/helper/nodebrowser.rb, line 64 def items(jid,node) iq = Iq.new(:get,jid) iq.from = @stream.jid discoitems = Discovery::IqQueryDiscoItems.new discoitems.node = node iq.add(discoitems) items = [] err = nil @stream.send_with_id(iq) do |answer| answer.query.each_element('item') { |item| items.push( {'jid' => item.jid,'name' => item.iname } ) } end items end
Retrieve the nodes Throws an ServerError
when receiving <iq type='error'/>
Target entity (set only domain!)
of [String] or [nil]
# File lib/xmpp4r/pubsub/helper/nodebrowser.rb, line 24 def nodes(jid) iq = Iq.new(:get,jid) iq.from = @stream.jid iq.add(Discovery::IqQueryDiscoItems.new) nodes = [] @stream.send_with_id(iq) do |answer| answer.query.each_element('item') { |item| nodes.push(item.node) } end nodes end
Retrieve the nodes with names Throws a ServerError when receiving <iq
type='error'/>
Target entity (set only domain!)
of [Hash] with keys 'node' => [String] and 'name' => [String] or [nil]
# File lib/xmpp4r/pubsub/helper/nodebrowser.rb, line 43 def nodes_names(jid) iq = Iq.new(:get,jid) iq.from = @stream.jid iq.add(Discovery::IqQueryDiscoItems.new) nodes = [] @stream.send_with_id(iq) do |answer| answer.query.each_element('item') do |item| nodes.push( {'node' => item.node,'name' => item.iname } ) end end nodes end
get type of node
# File lib/xmpp4r/pubsub/helper/nodebrowser.rb, line 112 def type(jid,node) info = get_info(jid,node) return info['type'] end