Sha256: 43f81659801df35bba51d21cd7d05116bb20240911a013914fdfc424088dbcc1

Contents?: true

Size: 1.72 KB

Versions: 6

Compression:

Stored size: 1.72 KB

Contents

module Blather
class Stanza
class PubSub

  class Event < Message
    register :pubsub_event, :event, 'http://jabber.org/protocol/pubsub#event'

    ##
    # Ensure the event_node is created
    def self.new(type = nil)
      node = super
      node.event_node
      node
    end

    ##
    # Kill the event_node node before running inherit
    def inherit(node)
      event_node.remove
      super
    end

    def node
      !purge? ? items_node[:node] : purge_node[:node]
    end

    def retractions
      items_node.find('ns:retract', :ns => self.class.registered_ns).map { |i| i[:id] }
    end

    def retractions?
      !retractions.empty?
    end

    def items
      items_node.find('ns:item', :ns => self.class.registered_ns).map { |i| PubSubItem.new(nil,nil,self.document).inherit i }
    end

    def items?
      !items.empty?
    end

    def purge?
      purge_node
    end

    def event_node
      node = find_first('ns:event', :ns => self.class.registered_ns)
      node = find_first('event', self.class.registered_ns) unless node
      unless node
        (self << (node = XMPPNode.new('event', self.document)))
        node.namespace = self.class.registered_ns
      end
      node
    end

    def items_node
      node = find_first('event/ns:items', :ns => self.class.registered_ns)
      unless node
        (self.event_node << (node = XMPPNode.new('items', self.document)))
        node.namespace = event_node.namespace
      end
      node
    end

    def purge_node
      event_node.find_first('ns:purge', :ns => self.class.registered_ns)
    end

    def subscription_ids
      find('//ns:header[@name="SubID"]', :ns => 'http://jabber.org/protocol/shim').map { |n| n.content }
    end
  end

end #PubSub
end #Stanza
end #Blather

Version data entries

6 entries across 6 versions & 2 rubygems

Version Path
sprsquish-blather-0.4.0 lib/blather/stanza/pubsub/event.rb
sprsquish-blather-0.4.1 lib/blather/stanza/pubsub/event.rb
sprsquish-blather-0.4.2 lib/blather/stanza/pubsub/event.rb
blather-0.4.0 lib/blather/stanza/pubsub/event.rb
blather-0.4.1 lib/blather/stanza/pubsub/event.rb
blather-0.4.2 lib/blather/stanza/pubsub/event.rb