Class: Jabber::PubSub::NodeBrowser

Inherits:
Object
  • Object
show all
Defined in:
lib/xmpp4r/pubsub/helper/nodebrowser.rb

Instance Method Summary collapse

Constructor Details

#initialize(stream) ⇒ NodeBrowser

Initialize a new NodeBrowser new(stream,pubsubservice)

stream
Jabber::Stream


14
15
16
# File 'lib/xmpp4r/pubsub/helper/nodebrowser.rb', line 14

def initialize(stream)
  @stream = stream
end

Instance Method Details

#category(jid, node) ⇒ Object

get category of node

jid
Jabber::JID
node
String


151
152
153
154
# File 'lib/xmpp4r/pubsub/helper/nodebrowser.rb', line 151

def category(jid,node)
  info = get_info(jid,node)
  return info['category']
end

#get_info(jid, node) ⇒ Object Also known as: get_metadata

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



112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/xmpp4r/pubsub/helper/nodebrowser.rb', line 112

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) { |answer|
    if answer.type == :result
      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
  }
  return info
end

#items(jid, node) ⇒ Object

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]



82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
# File 'lib/xmpp4r/pubsub/helper/nodebrowser.rb', line 82

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) { |answer|
    if answer.type == :result
      answer.query.each_element('item') { |item|
        items.push( {'jid' => item.jid,'name' => item.iname } )
      }
      true
    elsif answer.type == :error
      err = answer.error
      true
    else
      false
    end
  }
  return items
end

#nodes(jid) ⇒ Object

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

jid
JID

Target entity (set only domain!)

return
Array

of [String] or [nil]



24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
# 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 = []
  err = nil
  @stream.send_with_id(iq) { |answer|
    if answer.type == :result
      answer.query.each_element('item') { |item|
        nodes.push(item.node)
      }
      true
    elsif answer.type == :error
      err = answer.error
      true
    else
      false
    end
  }
  return nodes
end

#nodes_names(jid) ⇒ Object

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]



52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
# File 'lib/xmpp4r/pubsub/helper/nodebrowser.rb', line 52

def nodes_names(jid)
  iq = Iq.new(:get,jid)
  iq.from = @stream.jid
  iq.add(Discovery::IqQueryDiscoItems.new)
  nodes = []
  err = nil
  @stream.send_with_id(iq) { |answer|
    if answer.type == :result
      answer.query.each_element('item') { |item|
        nodes.push( {'node' => item.node,'name' => item.iname } )
      }
      true
    elsif answer.type == :error
      err = answer.error
      true
    else
      false
    end
  }
  return nodes
end

#type(jid, node) ⇒ Object

get type of node

jid
Jabber::JID
node
String


141
142
143
144
# File 'lib/xmpp4r/pubsub/helper/nodebrowser.rb', line 141

def type(jid,node)
  info = get_info(jid,node)
  return info['type']
end