class Riddl::Utils::Notifications::Producer::UpdateSubscription
Public Instance Methods
response()
click to toggle source
# File lib/ruby/riddl/utils/notifications_producer.rb, line 270 def response backend = @a[0] handler = @a[1] key = @r.last url = @p[0].name == 'url' ? @p.shift.value : nil # TODO check if message is valid (with producer secret) unless backend.subscriptions[key] @status = 404 return # subscription not found end topics = [] backend.subscriptions[key].modify do |doc| if url.nil? doc.find('/n:subscription/@url').delete_all! else doc.root.attributes['url'] = url end doc.root.children.delete_all! while @p.length > 1 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).update unless handler.nil? nil end