Sha256: 53f19fd254b151dbc17afbf4be0e07fabd7e2d17e4ef41afa60e2444e4fea7e0

Contents?: true

Size: 1.46 KB

Versions: 10

Compression:

Stored size: 1.46 KB

Contents

module Blather
class Stanza

  class PubSub < Iq
    register :pubsub_node, :pubsub, 'http://jabber.org/protocol/pubsub'

    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
    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
    def inherit(node)
      remove_children :pubsub
      super
    end

    def pubsub
      p = find_first('ns:pubsub', :ns => self.class.registered_ns) ||
          find_first('pubsub', :ns => self.class.registered_ns)

      unless p
        self << (p = XMPPNode.new('pubsub', self.document))
        p.namespace = self.class.registered_ns
      end
      p
    end
  end

  class PubSubItem < XMPPNode
    def self.new(id = nil, payload = nil, document = nil)
      new_node = super 'item', document
      new_node.id = id
      new_node.payload = payload if payload
      new_node
    end

    attribute_accessor :id

    def payload=(payload = nil)
      self.content = payload
    end

    def payload
      content.empty? ? nil : content
    end
  end

end #Stanza
end #Blather

Version data entries

10 entries across 10 versions & 2 rubygems

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