class Riddl::Utils::Notifications::Producer::Backend

Attributes

topics[R]

Public Class Methods

new(topics,target,init=nil) click to toggle source
# File lib/ruby/riddl/utils/notifications_producer.rb, line 133
def initialize(topics,target,init=nil)
  @target = target.gsub(/^\/+/,'/')

  unless File.exist?(@target)
    if init
      FileUtils::cp_r init, @target
    else
      FileUtils::mkdir_p(@target)
    end
  end

  raise "topics file not found" unless File.exist?(topics)
  @topics = XML::Smart.open_unprotected(topics.gsub(/^\/+/,'/'))
  @topics.register_namespace 'n', 'http://riddl.org/ns/common-patterns/notifications-producer/1.0'

  subscriptions.each do |sub,key|
    sub.read do |doc|
      if doc.find('/*[@url]').empty?
        sub.delete
      end
    end
  end
end

Public Instance Methods

subscriptions() click to toggle source
# File lib/ruby/riddl/utils/notifications_producer.rb, line 157
def subscriptions
  Subs.new(@target)
end