lib/redimap.rb in redimap-0.5.0 vs lib/redimap.rb in redimap-0.6.0
- old
+ new
@@ -1,5 +1,65 @@
+require 'logger'
+
require_relative 'redimap/version'
require_relative 'redimap/config'
-require_relative 'redimap/base'
+
require_relative 'redimap/imap_conn'
require_relative 'redimap/redis_conn'
+
+
+module Redimap
+
+ extend self
+
+ def config
+ @config ||= Redimap::Config.new
+ end
+
+ def configure
+ yield config
+
+ Redimap.logger.debug { "Configured #{Redimap.config.to_s}" }
+ end
+
+ def logger
+ unless @logger
+ @logger = Logger.new($stdout)
+
+ @logger.level = Logger.const_get(Redimap.config.log_level)
+ @logger.progname = :Redimap
+ end
+
+ @logger
+ end
+
+ 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
+
+end