class Vines::Stanza::PubSub::Create

Constants

NS

Public Instance Methods

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

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

  id = (node['node'] || '').strip
  id = Kit.uuid if id.empty?
  raise StanzaErrors::Conflict.new(self, 'cancel') if pubsub.node?(id)
  pubsub.add_node(id)
  send_result_iq(id)
end

Private Instance Methods

send_result_iq(id) click to toggle source
# File lib/vines/stanza/pubsub/create.rb, line 28
def send_result_iq(id)
  el = to_result
  el << el.document.create_element('pubsub') do |node|
    node.default_namespace = NS
    node << el.document.create_element('create', 'node' => id)
  end
  stream.write(el)
end