class Schleuder::Filters::Runner
Attributes
filter_type[R]
list[R]
Public Class Methods
new(list, filter_type)
click to toggle source
# File lib/schleuder/filters_runner.rb, line 6 def initialize(list, filter_type) @list = list @filter_type = filter_type end
Public Instance Methods
filters()
click to toggle source
# File lib/schleuder/filters_runner.rb, line 22 def filters @filters ||= load_filters end
run(mail)
click to toggle source
# File lib/schleuder/filters_runner.rb, line 11 def run(mail) filters.map do |cmd| list.logger.debug "Calling filter #{cmd}" response = Filters.send(cmd, list, mail) if stop?(response) return response end end nil end
Private Instance Methods
all_filter_files()
click to toggle source
# File lib/schleuder/filters_runner.rb, line 45 def all_filter_files @all_filter_files ||= begin files_in_filter_dirs = Dir[*filter_dirs] files_in_filter_dirs.inject({}) do |res, file| filter_name = File.basename(file, '.rb') res[filter_name] = file res end end end
filter_dirs()
click to toggle source
# File lib/schleuder/filters_runner.rb, line 56 def filter_dirs @filter_dirs ||= [File.join(File.dirname(__FILE__), 'filters'), Schleuder::Conf.filters_dir].map do |d| File.join(d, "#{filter_type}_decryption/[0-9]*_*.rb") end end
load_filters()
click to toggle source
# File lib/schleuder/filters_runner.rb, line 31 def load_filters list.logger.debug "Loading #{filter_type}_decryption filters" sorted_filters.map do |filter_name| require all_filter_files[filter_name] filter_name.split('_', 2).last end end
sorted_filters()
click to toggle source
# File lib/schleuder/filters_runner.rb, line 39 def sorted_filters @sorted_filters ||= all_filter_files.keys.sort do |a, b| a.split('_', 2).first.to_i <=> b.split('_', 2).first.to_i end end
stop?(response)
click to toggle source
# File lib/schleuder/filters_runner.rb, line 27 def stop?(response) response.kind_of?(StandardError) end