Class: Jabber::PubSub::ServiceHelper
- Inherits:
-
Object
- Object
- Jabber::PubSub::ServiceHelper
- Defined in:
- lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb
Overview
A Helper representing a PubSub Service
Direct Known Subclasses
Instance Method Summary collapse
-
#add_event_callback(prio = 200, ref = nil, &block) ⇒ Object
Register callbacks for incoming events (i.e. Message stanzas containing) PubSub notifications.
-
#create_collection_node(node = nil, configure = Jabber::PubSub::NodeConfig.new) ⇒ Object
- Create a new collection node on the pubsub service node
- String
- the node name - otherwise you get an automatically generated one (in most cases) configure
- Jabber::PubSub::NodeConfig
- if you want to configure your node (default nil) return
-
[String].
-
#create_node(node = nil, configure = Jabber::PubSub::NodeConfig.new) ⇒ Object
- Create a new node on the pubsub service node
- String
- the node name - otherwise you get a automatically generated one (in most cases) configure
- Jabber::PubSub::NodeConfig
- if you want to configure your node (default nil) return
-
[String].
-
#delete_node(node) ⇒ Object
- Delete a pubsub node node
- String
- return
-
true.
-
#get_affiliations(node = nil) ⇒ Object
- shows the affiliations on a pubsub service node
- String
- return
- Hash
-
of { node => symbol }.
-
#get_config_from(node) ⇒ Object
- get configuration from a node node
- String
- return
-
[Jabber::PubSub::Configure].
-
#get_items_from(node, count = nil) ⇒ Object
- gets all items from a pubsub node node
- String
- count
- Fixnum
- return
- Hash
-
{ id => [Jabber::PubSub::Item] }.
-
#get_options_from(node, jid, subid = nil) ⇒ Object
- get options from a subscription node
- String
- jid
- Jabber::JID
- or [String] subid
- String
- or nil return
-
[Jabber::PubSub::OwnerConfigure].
-
#get_subscribers_from(node) ⇒ Object
- shows all jids of subscribers of a node node
- String
- return
- Array
-
of [String].
-
#get_subscriptions_from(node) ⇒ Object
- shows all subscriptions on the given node node
- String
- return
- Array
-
of [Jabber::Pubsub::Subscription].
-
#get_subscriptions_from_all_nodes ⇒ Object
- get all subscriptions on a pubsub component return
- Hash
-
of [PubSub::Subscription].
-
#initialize(stream, pubsubjid) ⇒ ServiceHelper
constructor
- Creates a new representation of a pubsub service stream
- Jabber::Stream
- pubsubjid
- String
-
or [Jabber::JID].
-
#publish_item_to(node, item) ⇒ Object
NOTE: this method sends only one item per publish request because some services may not allow batch processing.
-
#publish_item_with_id_to(node, item, id) ⇒ Object
- node
- String
- item
- REXML::Element
- id
- String
- return
-
true.
-
#purge_items_from(node) ⇒ Object
- purges all items on a persistent node node
- String
- return
-
true.
-
#set_config_for(node, config) ⇒ Object
- set configuration for a node node
- String
- options
- Jabber::PubSub::NodeConfig
- return
-
true on success.
-
#set_options_for(node, jid, options, subid = nil) ⇒ Object
- set options for a subscription node
- String
- jid
- Jabber::JID
- or [String] options
- Jabber::PubSub::SubscriptionConfig} specifying configuration options subid:: [String
- or nil return
-
true.
-
#subscribe_to(node) ⇒ Object
- subscribe to a node node
- String
- return
- Hash
-
of { attributename => value }.
-
#to_s ⇒ Object
- String representation result
- String
-
The PubSub service’s JID.
-
#unsubscribe_from(node, subid = nil) ⇒ Object
Unsubscribe from a node with an optional subscription id.
Constructor Details
#initialize(stream, pubsubjid) ⇒ ServiceHelper
Creates a new representation of a pubsub service
- stream
- Jabber::Stream
- pubsubjid
- String
-
or [Jabber::JID]
60 61 62 63 64 65 66 67 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 60 def initialize(stream, pubsubjid) @stream = stream @pubsubjid = pubsubjid @event_cbs = CallbackList.new @stream.(200,self) { || () } end |
Instance Method Details
#add_event_callback(prio = 200, ref = nil, &block) ⇒ Object
Register callbacks for incoming events (i.e. Message stanzas containing) PubSub notifications
384 385 386 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 384 def add_event_callback(prio = 200, ref = nil, &block) @event_cbs.add(prio, ref, block) end |
#create_collection_node(node = nil, configure = Jabber::PubSub::NodeConfig.new) ⇒ Object
Create a new collection node on the pubsub service
- node
- String
-
the node name - otherwise you get an automatically generated one (in most cases)
- configure
- Jabber::PubSub::NodeConfig
-
if you want to configure your node (default nil)
- return
- String
231 232 233 234 235 236 237 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 231 def create_collection_node(node = nil, configure = Jabber::PubSub::NodeConfig.new) if configure.['pubsub#node_type'] && configure.['pubsub#node_type'] != 'collection' raise Jabber::ArgumentError, "Invalid node_type specified in node configuration. Either do not specify one, or use 'collection'" end configure. = configure..merge({'pubsub#node_type' => 'collection'}) create_node(node, configure) end |
#create_node(node = nil, configure = Jabber::PubSub::NodeConfig.new) ⇒ Object
Create a new node on the pubsub service
- node
- String
-
the node name - otherwise you get a automatically generated one (in most cases)
- configure
- Jabber::PubSub::NodeConfig
-
if you want to configure your node (default nil)
- return
- String
207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 207 def create_node(node = nil, configure = Jabber::PubSub::NodeConfig.new) rnode = nil iq = basic_pubsub_query(:set) iq.pubsub.add(REXML::Element.new('create')).attributes['node'] = node if configure if configure.kind_of?(Jabber::PubSub::NodeConfig) iq.pubsub.add(configure) end end @stream.send_with_id(iq) do |reply| if reply.kind_of?(Jabber::Iq) and reply.type == :result rnode = node end end rnode end |
#delete_node(node) ⇒ Object
Delete a pubsub node
- node
- String
- return
-
true
268 269 270 271 272 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 268 def delete_node(node) iq = basic_pubsub_query(:set,true) iq.pubsub.add(REXML::Element.new('delete')).attributes['node'] = node @stream.send_with_id(iq) end |
#get_affiliations(node = nil) ⇒ Object
shows the affiliations on a pubsub service
- node
- String
- return
- Hash
-
of { node => symbol }
279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 279 def get_affiliations(node = nil) iq = basic_pubsub_query(:get) affiliations = iq.pubsub.add(REXML::Element.new('affiliations')) affiliations.attributes['node'] = node res = nil @stream.send_with_id(iq) { |reply| if reply.pubsub.first_element('affiliations') res = {} reply.pubsub.first_element('affiliations').each_element('affiliation') do |affiliation| # TODO: This should be handled by an affiliation element class aff = case affiliation.attributes['affiliation'] when 'owner' then :owner when 'publisher' then :publisher when 'none' then :none when 'outcast' then :outcast else nil end res[affiliation.attributes['node']] = aff end end true } res end |
#get_config_from(node) ⇒ Object
get configuration from a node
- node
- String
- return
- Jabber::PubSub::Configure
243 244 245 246 247 248 249 250 251 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 243 def get_config_from(node) iq = basic_pubsub_query(:get, true) iq.pubsub.add(Jabber::PubSub::OwnerNodeConfig.new(node)) ret = nil @stream.send_with_id(iq) do |reply| ret = reply.pubsub.first_element('configure') end ret end |
#get_items_from(node, count = nil) ⇒ Object
gets all items from a pubsub node
- node
- String
- count
- Fixnum
- return
- Hash
-
{ id => [Jabber::PubSub::Item] }
132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 132 def get_items_from(node, count=nil) iq = basic_pubsub_query(:get) items = Jabber::PubSub::Items.new items.node = node iq.pubsub.add(items) res = nil @stream.send_with_id(iq) { |reply| if reply.kind_of?(Iq) and reply.pubsub and reply.pubsub.first_element('items') res = {} reply.pubsub.first_element('items').each_element('item') do |item| res[item.attributes['id']] = item.children.first if item.children.first end end true } res end |
#get_options_from(node, jid, subid = nil) ⇒ Object
get options from a subscription
- node
- String
- jid
- Jabber::JID
-
or [String]
- subid
- String
-
or nil
- return
- Jabber::PubSub::OwnerConfigure
346 347 348 349 350 351 352 353 354 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 346 def (node, jid, subid = nil) iq = basic_pubsub_query(:get) iq.pubsub.add(Jabber::PubSub::SubscriptionConfig.new(node, jid.kind_of?(String) ? Jabber::JID.new(jid).strip: jid.strip, subid)) ret = nil @stream.send_with_id(iq) do |reply| ret = reply.pubsub.first_element('options') end ret end |
#get_subscribers_from(node) ⇒ Object
shows all jids of subscribers of a node
- node
- String
- return
- Array
-
of [String]
331 332 333 334 335 336 337 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 331 def get_subscribers_from(node) res = [] get_subscriptions_from(node).each { |sub| res << sub.jid } res end |
#get_subscriptions_from(node) ⇒ Object
shows all subscriptions on the given node
- node
- String
- return
- Array
-
of [Jabber::Pubsub::Subscription]
308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 308 def get_subscriptions_from(node) iq = basic_pubsub_query(:get) entities = iq.pubsub.add(REXML::Element.new('subscriptions')) entities.attributes['node'] = node res = nil @stream.send_with_id(iq) { |reply| if reply.pubsub.first_element('subscriptions') res = [] if reply.pubsub.first_element('subscriptions').attributes['node'] == node reply.pubsub.first_element('subscriptions').each_element('subscription') { |subscription| res << PubSub::Subscription.import(subscription) } end end true } res end |
#get_subscriptions_from_all_nodes ⇒ Object
get all subscriptions on a pubsub component
- return
- Hash
-
of [PubSub::Subscription]
72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 72 def get_subscriptions_from_all_nodes iq = basic_pubsub_query(:get) entities = iq.pubsub.add(REXML::Element.new('subscriptions')) res = nil @stream.send_with_id(iq) { |reply| if reply.pubsub.first_element('subscriptions') res = [] reply.pubsub.first_element('subscriptions').each_element('subscription') { |subscription| res << Jabber::PubSub::Subscription.import(subscription) } end } res end |
#publish_item_to(node, item) ⇒ Object
NOTE: this method sends only one item per publish request because some services may not allow batch processing. Maybe this will changed in the future?
- node
- String
- item
- Jabber::PubSub::Item
- return
-
true
it automatically generates an id for the item
157 158 159 160 161 162 163 164 165 166 167 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 157 def publish_item_to(node,item) iq = basic_pubsub_query(:set) publish = iq.pubsub.add(REXML::Element.new('publish')) publish.attributes['node'] = node if item.kind_of?(Jabber::PubSub::Item) item.id = Jabber::IdGenerator.generate_id publish.add(item) @stream.send_with_id(iq) end end |
#publish_item_with_id_to(node, item, id) ⇒ Object
- node
- String
- item
- REXML::Element
- id
- String
- return
-
true
174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 174 def publish_item_with_id_to(node,item,id) iq = basic_pubsub_query(:set) publish = iq.pubsub.add(REXML::Element.new('publish')) publish.attributes['node'] = node if item.kind_of?(REXML::Element) xmlitem = Jabber::PubSub::Item.new xmlitem.id = id xmlitem.import(item) publish.add(xmlitem) else raise "given item is not a proper xml document or Jabber::PubSub::Item" end @stream.send_with_id(iq) end |
#purge_items_from(node) ⇒ Object
purges all items on a persistent node
- node
- String
- return
-
true
194 195 196 197 198 199 200 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 194 def purge_items_from(node) iq = basic_pubsub_query(:set) purge = REXML::Element.new('purge') purge.attributes['node'] = node iq.pubsub.add(purge) @stream.send_with_id(iq) end |
#set_config_for(node, config) ⇒ Object
set configuration for a node
- node
- String
- options
- Jabber::PubSub::NodeConfig
- return
-
true on success
258 259 260 261 262 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 258 def set_config_for(node, config) iq = basic_pubsub_query( :set ) iq.pubsub.add(config.form) @stream.send_with_id(iq) end |
#set_options_for(node, jid, options, subid = nil) ⇒ Object
set options for a subscription
- node
- String
- jid
- Jabber::JID
-
or [String]
- options
-
[Jabber::PubSub::SubscriptionConfig} specifying configuration options
- subid
- String
-
or nil
- return
-
true
363 364 365 366 367 368 369 370 371 372 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 363 def (node, jid, , subid = nil) iq = basic_pubsub_query(:set) iq.pubsub.add(Jabber::PubSub::SubscriptionConfig.new(node, jid.kind_of?(String) ? Jabber::JID.new(jid).strip: jid.strip, , subid)) ret = false @stream.send_with_id(iq) do |reply| ret = ( reply.type == :result ) end ret end |
#subscribe_to(node) ⇒ Object
subscribe to a node
- node
- String
- return
- Hash
-
of { attributename => value }
91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 91 def subscribe_to(node) iq = basic_pubsub_query(:set) sub = REXML::Element.new('subscribe') sub.attributes['node'] = node sub.attributes['jid'] = @stream.jid.strip.to_s iq.pubsub.add(sub) res = nil @stream.send_with_id(iq) do |reply| pubsubanswer = reply.pubsub if pubsubanswer.first_element('subscription') res = PubSub::Subscription.import(pubsubanswer.first_element('subscription')) end end # @stream.send_with_id(iq) res end |
#to_s ⇒ Object
String representation
- result
- String
-
The PubSub service’s JID
377 378 379 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 377 def to_s @pubsubjid.to_s end |
#unsubscribe_from(node, subid = nil) ⇒ Object
Unsubscribe from a node with an optional subscription id
May raise ServerError
- node
- String
- subid
- String
-
or nil (not supported)
- return
-
true
114 115 116 117 118 119 120 121 122 123 124 125 |
# File 'lib/vendor/xmpp4r/lib/xmpp4r/pubsub/helper/servicehelper.rb', line 114 def unsubscribe_from(node, subid=nil) iq = basic_pubsub_query(:set) unsub = PubSub::Unsubscribe.new unsub.node = node unsub.jid = @stream.jid.strip iq.pubsub.add(unsub) ret = false @stream.send_with_id(iq) { |reply| ret = reply.kind_of?(Jabber::Iq) and reply.type == :result } # @stream.send_with_id(iq) ret end |