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
20 21 22 23 24 |
# File 'lib/fat_free_crm/mail_processor/base.rb', line 20 def initialize @archived = 0 @discarded = 0 @dry_run = false end |
Instance Method Details
#run(dry_run = false) ⇒ Object
52 53 54 55 56 57 58 59 60 61 62 63 |
# File 'lib/fat_free_crm/mail_processor/base.rb', line 52 def run(dry_run = false) log "Not discarding or archiving any new messages..." if @dry_run = dry_run connect! || (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.
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
# File 'lib/fat_free_crm/mail_processor/base.rb', line 28 def setup log "connecting to #{@settings[:server]}..." connect!(setup: true) || (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 Exception => e warn "setup error #{e.inspect}" ensure disconnect! end |