Module: Redimap

Extended by:
Redimap
Included in:
Redimap
Defined in:
lib/redimap.rb,
lib/redimap/config.rb,
lib/redimap/version.rb,
lib/redimap/imap_conn.rb,
lib/redimap/redis_conn.rb

Defined Under Namespace

Classes: Config, ImapConn, RedisConn

Constant Summary collapse

VERSION =
"0.6.0"

Instance Method Summary collapse

Instance Method Details

#configObject



14
15
16
# File 'lib/redimap.rb', line 14

def config
  @config ||= Redimap::Config.new
end

#configure {|config| ... } ⇒ Object

Yields:



18
19
20
21
22
# File 'lib/redimap.rb', line 18

def configure
  yield config
  
  Redimap.logger.debug { "Configured #{Redimap.config.to_s}" }
end

#loggerObject



24
25
26
27
28
29
30
31
32
33
# File 'lib/redimap.rb', line 24

def logger
  unless @logger
    @logger = Logger.new($stdout)
    
    @logger.level    = Logger.const_get(Redimap.config.log_level)
    @logger.progname = :Redimap
  end
  
  @logger
end

#queue_new_mailboxes_uidsObject



35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# File 'lib/redimap.rb', line 35

def queue_new_mailboxes_uids
  Redimap.logger.info { "Queueing new mailboxes UIDs" }
  
  Redimap::ImapConn.new do |imap|
    Redimap::RedisConn.new do |redis|
      begin
        Redimap.config.imap_mailboxes.each do |mailbox|
          last_seen_uid = redis.get_mailbox_uid(mailbox)
          
          Redimap.logger.debug { "Last saw #{mailbox}##{last_seen_uid}" }
          
          unseen_uids = imap.read_mailbox(mailbox, last_seen_uid)
          
          unseen_uids.each do |uid|
            redis.queue_mailbox_uid(mailbox, uid)
            
            redis.set_mailbox_uid(mailbox, uid)
          end
          
          Redimap.logger.info { "Queued #{unseen_uids.count} UIDs from #{mailbox}" }
        end
      rescue Net::IMAP::Error, Redis::BaseError => e
        Redimap.logger.error { e.to_s }
        
        return
      end
    end
  end
end