Class: FatFreeCRM::MailProcessor::Base
- Inherits:
-
Object
- Object
- FatFreeCRM::MailProcessor::Base
- Defined in:
- lib/fat_free_crm/mail_processor/base.rb
Direct Known Subclasses
Constant Summary collapse
- KEYWORDS =
%w(account campaign contact lead opportunity).freeze
Instance Method Summary collapse
-
#initialize ⇒ Base
constructor
————————————————————————————–.
-
#run(dry_run = false) ⇒ Object
————————————————————————————–.
-
#setup ⇒ Object
Setup imap folders in settings.
Constructor Details
#initialize ⇒ Base
30 31 32 |
# File 'lib/fat_free_crm/mail_processor/base.rb', line 30 def initialize @archived, @discarded, @dry_run = 0, 0, false end |
Instance Method Details
#run(dry_run = false) ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/fat_free_crm/mail_processor/base.rb', line 60 def run(dry_run = false) if @dry_run = dry_run log "Not discarding or archiving any new messages..." end connect! or return nil with_new_emails do |uid, email| # Subclasses must define a #process method that takes arguments: uid, email process(uid, email) archive(uid) end ensure log "messages processed=#{@archived + @discarded} archived=#{@archived} discarded=#{@discarded}" disconnect! end |
#setup ⇒ Object
Setup imap folders in settings.
36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 |
# File 'lib/fat_free_crm/mail_processor/base.rb', line 36 def setup log "connecting to #{@settings[:server]}..." connect!(:setup => true) or return nil log "logged in to #{@settings[:server]}, checking folders..." folders = [ @settings[:scan_folder] ] folders << @settings[:move_to_folder] unless @settings[:move_to_folder].blank? folders << @settings[:move_invalid_to_folder] unless @settings[:move_invalid_to_folder].blank? # Open (or create) destination folder in read-write mode. folders.each do |folder| if @imap.list("", folder) log "folder #{folder} OK" else log "folder #{folder} missing, creating..." @imap.create(folder) end end rescue => e $stderr.puts "setup error #{e.inspect}" ensure disconnect! end |