module VigilionRails::ActiveRecord
Public Instance Methods
scan_file(column, options={})
click to toggle source
# File lib/vigilion-rails.rb, line 9 def scan_file column, options={} default = { scan_column: "#{column}_scan_results", integration: Vigilion::Configuration.integration } options = default.merge(options) integration_class = "VigilionRails::#{options[:integration].to_s.camelize}Integration" class_eval <<-RUBY, __FILE__, __LINE__+1 def scan_#{column}! key = { model: self.class.name, column: '#{column}', id: id }.to_json if Vigilion::Configuration.loopback logger.info 'vigilion scan request was simulated' self.class.find(id).on_scan_#{column} status: Vigilion::Configuration.loopback_response else #{integration_class}.new.scan key, self, :#{column} end @#{column}_old_url = #{column}.url return true end # Vigilion service callback def on_scan_#{column} params update_attribute('#{options[:scan_column]}', params[:status]) end after_initialize :remember_#{column}_url after_commit :check_scan_#{column} def remember_#{column}_url @#{column}_old_url = #{column}.try(:url) unless new_record? end def check_scan_#{column} if @#{column}_old_url != #{column}.url scan_#{column}! end end def clean? #{options[:scan_column]} == "clean" end RUBY end