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
18 19 20 |
# File 'lib/fat_free_crm/mail_processor/base.rb', line 18 def initialize @archived, @discarded, @dry_run = 0, 0, false end |
Instance Method Details
#run(dry_run = false) ⇒ Object
48 49 50 51 52 53 54 55 56 57 58 59 60 61 |
# File 'lib/fat_free_crm/mail_processor/base.rb', line 48 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.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
# File 'lib/fat_free_crm/mail_processor/base.rb', line 24 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 |