class Jabber::PubSub::NodeBrowser

Public Class Methods

new(stream) click to toggle source

Initialize a new NodeBrowser new(stream,pubsubservice)

stream
Jabber::Stream
# File lib/xmpp4r/pubsub/helper/nodebrowser.rb, line 14
def initialize(stream)
  @stream = stream
end

Public Instance Methods

category(jid,node) click to toggle source

get category of node

jid
Jabber::JID
node
String
# File lib/xmpp4r/pubsub/helper/nodebrowser.rb, line 122
def category(jid,node)
  info = get_info(jid,node)
  return info['category']
end
get_info(jid,node) click to toggle source

get disco info for a node

jid
Jabber::JID
node
String
return
Hash
with possible keys type
String
,category
String],features:: [Array
of feature, nodeinformation
Jabber::XData

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
Also aliased as: get_metadata
get_metadata(jid,node)

this is only for a xep <-> nodebrowser.rb understanding

Alias for: get_info
items(jid,node) click to toggle source

Retrieve the items from a node Throws an ServerError when receiving <iq type='error'/>

jid
Jabber::JID

Target entity (set only domain!)

node
String
return
Array

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
nodes(jid) click to toggle source

Retrieve the nodes Throws an ServerError when receiving <iq type='error'/>

jid
JID

Target entity (set only domain!)

return
Array

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
nodes_names(jid) click to toggle source

Retrieve the nodes with names Throws a ServerError when receiving <iq type='error'/>

jid
Jabber::JID

Target entity (set only domain!)

return
Array

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
type(jid,node) click to toggle source

get type of node

jid
Jabber::JID
node
String
# File lib/xmpp4r/pubsub/helper/nodebrowser.rb, line 112
def type(jid,node)
  info = get_info(jid,node)
  return info['type']
end