23 lines
572 B
Ruby
23 lines
572 B
Ruby
class InMailbox < ApplicationMailbox
|
|
def process
|
|
email_importer = EmailImporter.new
|
|
repository = EmailRepository.new
|
|
rules_evaluator = RulesEvaluator.new
|
|
|
|
email = email_importer.import(mail)
|
|
|
|
RuleSet.enabled.each do |rule_set|
|
|
if rules_evaluator.evaluate(email, rule_set)
|
|
rule_set.actions.enabled.each do |action|
|
|
klass = action.class_name.constantize
|
|
email = klass.new.process(email)
|
|
rescue NameError => ex
|
|
# TODO: log a warning
|
|
end
|
|
end
|
|
end
|
|
|
|
repository.save(email)
|
|
end
|
|
end
|