def response
backend = @a[0]
handler = @a[1]
key = @r.last
url = @p[0].name == 'url' ? @p.shift.value : nil
unless backend.subscriptions[key]
@status = 404
return
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