class Riddl::Utils::Notifications::Producer::CreateSubscription

Public Instance Methods

response() click to toggle source
# File lib/ruby/riddl/utils/notifications_producer.rb, line 222
def response
  backend = @a[0]
  handler = @a[1]

  url = @p[0].name == 'url' ? @p.shift.value : nil

  topics = []
  key, consumer_secret, producer_secret = backend.subscriptions.create do |doc,key|
    doc.root.attributes['url'] = url if url
    while @p.length > 0
      topic = @p.shift.value
      base = @p.shift
      type = base.name
      items = base.value.split(',')
      t = if topics.include?(topic)
        doc.find("/n:subscription/n:topic[@id='#{topic}']").first
      else
        topics << topic
        doc.root.add('topic', :id => topic)
      end
      items.each do |i|
        t.add(type[0..-2], i)
      end
    end
  end

  handler.key(key).topics(topics).create unless handler.nil?
  [
    Riddl::Parameter::Simple.new('key',key),
    Riddl::Parameter::Simple.new('producer-secret',producer_secret),
    Riddl::Parameter::Simple.new('consumer-secret',consumer_secret)
  ]
end