class ARII::Detector

Detector

Main change detection class, to be inherited by SQL, CSV, JSON and XML detectors (and others to come).

Attributes

agent[RW]
content[RW]
identifier[RW]
objects[RW]
payloads[RW]
templates[RW]

Public Class Methods

new(agent) click to toggle source
# File lib/arii/detector.rb, line 18
def initialize agent
  begin
    @agent = agent
    @payloads = Array.new
    @objects = Array.new
    @help = ARII::Helper.new
    ARII::Config.log.info(self.class.name) { "Started new #{agent.identifier} detector" }
  rescue Exception => e
    ARII::Config.log.error(self.class.name) { "#{e}" }
  end
end

Public Instance Methods

checkup() click to toggle source

Start original source detection process

# File lib/arii/detector.rb, line 34
def checkup

  begin


    ##
    # => Process seed data, if available.
    #
    unless @agent.seeds.nil? then
      @agent.seeds.each do |seed|
        case seed[:publisher]
          when 'csv'
            begin
              @sr = ARII::CSVSeedReader.new(@agent, seed)
            rescue Exception => e
              ARII::Config.log.error(self.class.name) { "#{e}" }
            end
          when 'sql'
            begin
              @sr = ARII::SQLSeedReader.new(@agent, seed)
            rescue Exception => e
              ARII::Config.log.error(self.class.name) { "#{e}" }
            end
          when 'xml'
            begin
              @sr = ARII::XMLSeedReader.new(@agent, seed)
            rescue Exception => e
              ARII::Config.log.error(self.class.name) { "#{e}" }
            end
          when 'json'
            begin
              @sr = ARII::JSONSeedReader.new(@agent, seed)
            rescue Exception => e
              ARII::Config.log.error(self.class.name) { "#{e}" }
            end
        end
        begin
          @reads = @sr.read
          @reads.each do |read|
            @objects.push read
          end
        rescue Exception => e
          ARII::Config.log.error(self.class.name) { "#{e}" }
        end
      end

    else
      ##
      # no seeds, simply copy agent data
      object = @help.deep_copy @agent.payload
      object[:identifier] = @agent.identifier
      object[:cache] = @agent.cache
      object[:seed] = object[:identifier]
      object[:selectors] = @agent.selectors
      unless self.content.nil? then
        object[:content] = self.content
      end
      @objects.push object
    end
  rescue Exception => e
    @response = {:status => 404, :message => "[ARII][Detector] failed to load doc, #{e}"}
    ARII::Config.log.error(self.class.name) { "#{e}" }
  end

  begin
    # increase detected events count


    @templates = Array.new
    @response = {:payload => @payloads, :templates => @templates, :status => 100}
  rescue Exception => e
    @response = {:status => 404, :message => "[ARII][Detector] failed to process queries, #{e}"}
    ARII::Config.log.error(self.class.name) { "#{e}" }
  end
  @response
end