def initialize(imap, name, delim, subscribed, *attr)
raise ArgumentError, "must provide a Larch::IMAP instance" unless imap.is_a?(Larch::IMAP)
@attr = attr.flatten
@delim = delim
@flags = []
@imap = imap
@last_scan = nil
@name = name
@name_utf7 = Net::IMAP.encode_utf7(@name)
@perm_flags = []
@subscribed = subscribed
@state = :closed
mb_data = {
:name => @name,
:delim => @delim,
:attr => @attr.map{|a| a.to_s }.join(','),
:subscribed => @subscribed ? 1 : 0
}
@db_mailbox = imap.db_account.mailboxes_dataset.filter(:name => @name).first
if @db_mailbox
@db_mailbox.update(mb_data)
else
@db_mailbox = Database::Mailbox.create(mb_data)
imap.db_account.add_mailbox(@db_mailbox)
end
Logger::LEVELS.each_key do |level|
next if Mailbox.private_method_defined?(level)
Mailbox.class_eval do
define_method(level) do |msg|
Larch.log.log(level, "#{@imap.options[:log_label]} #{@name}: #{msg}")
end
private level
end
end
end