Sha256: 3e1ee644d4f2f560334c5c9442e8736b74498afc0184c937beb6e00a88edc207

Contents?: true

Size: 1.75 KB

Versions: 4

Compression:

Stored size: 1.75 KB

Contents

#require 'helper'
require 'mysql2'

module ARII

  ##
  # = SQLDetector
  #
  # Detec changes in SQL databases. MySQL support only.
  #
  class SQLDetector < Detector

    public
    ##
    # == Detect the changes
    #
    def detect object
      ARII::Config.log.debug(self.class.name) { "Monitoring #{object[:host]}" }
      begin
        @client = Mysql2::Client.new(:host => object[:host], :username => object[:username], :password => object[:password], :database => object[:database])
        @client.query(object[:query]).each(:symbolize_keys => false) do |row|
          unless object[:cache].nil? then
            @response = Cashier.verify row[object[:cache]], object, row, object[:seed]
          else
            @response = Cashier.verify row["id"], object, row, object[:seed]
          end

          # Process ARII cache response
          @cache = JSON.parse(@response, {:symbolize_names => true})
          unless @cache[:templates].nil? then
            @cache[:templates].each do |t|
              @templates.push t
            end
          end
          # The actual processing
          #
          if @cache[:cache][:status] == 100 then
            ARII::Config.log.info(self.class.name) { "Not on cache, generating payload" }
            # add row data to payload from selectors (key => key, value => column name)
            payload = Hash.new
            object[:selectors].each do |selector|
              selector.each do |k, v|
                payload[k] = row[v]
              end
            end
            # add payload object to payloads list
            @payloads.push payload
          end
        end
      rescue Exception => e
        ARII::Config.log.error(self.class.name) { "Processing error: #{e}" }
      end
      @cache[:templates]
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
arii-1.7 lib/arii/sqldetector.rb
arii-1.6 lib/arii/sqldetector.rb
arii-1.5 lib/arii/sqldetector.rb
arii-1.2.2 lib/arii/sqldetector.rb