lib/blather/stanza/pubsub_owner.rb in blather-0.4.7 vs lib/blather/stanza/pubsub_owner.rb in blather-0.4.8
- old
+ new
@@ -1,41 +1,51 @@
module Blather
class Stanza
+ # # PubSubOwner Base Class
+ #
+ # [XEP-0060 - Publish-Subscribe](http://xmpp.org/extensions/xep-0060.html)
+ #
+ # @handler :pubsub_owner
class PubSubOwner < Iq
register :pubsub_owner, :pubsub, 'http://jabber.org/protocol/pubsub#owner'
+ # Creates the proper class from the stana's child
+ # @private
def self.import(node)
klass = nil
if pubsub = node.document.find_first('//ns:pubsub', :ns => self.registered_ns)
pubsub.children.each { |e| break if klass = class_from_registration(e.element_name, (e.namespace.href if e.namespace)) }
end
(klass || self).new(node[:type]).inherit(node)
end
- ##
- # Ensure the namespace is set to the query node
+ # Overrides the parent to ensure a pubsub node is created
+ # @private
def self.new(type = nil, host = nil)
new_node = super type
new_node.to = host
new_node.pubsub
new_node
end
- ##
- # Kill the pubsub node before running inherit
+ # Overrides the parent to ensure the pubsub node is destroyed
+ # @private
def inherit(node)
remove_children :pubsub
super
end
+ # Get or create the pubsub node on the stanza
+ #
+ # @return [Blather::XMPPNode]
def pubsub
unless p = find_first('ns:pubsub', :ns => self.class.registered_ns)
self << (p = XMPPNode.new('pubsub', self.document))
p.namespace = self.class.registered_ns
end
p
end
- end
+ end # PubSubOwner
-end #Stanza
-end #Blather
+end # Stanza
+end # Blather