class Vines::Stanza::PubSub::Delete

Constants

NS

Public Instance Methods

process() click to toggle source
# File lib/vines/stanza/pubsub/delete.rb, line 11
def process
  return if route_iq || !allowed?
  validate_to_address

  node = self.xpath('ns:pubsub/ns:delete', 'ns' => NS)
  raise StanzaErrors::BadRequest.new(self, 'modify') if node.size != 1
  node = node.first

  id = node['node']
  raise StanzaErrors::ItemNotFound.new(self, 'cancel') unless pubsub.node?(id)

  pubsub.publish(id, message(id))
  pubsub.delete_node(id)
  stream.write(to_result)
end

Private Instance Methods

message(id) click to toggle source
# File lib/vines/stanza/pubsub/delete.rb, line 29
def message(id)
  doc = Document.new
  doc.create_element('message') do |node|
    node << node.document.create_element('event') do |event|
      event.default_namespace = NAMESPACES[:pubsub_event]
      event << node.document.create_element('delete', 'node' => id)
    end
  end
end