class EventMachine::EmailServer::MaildirEmailStore
Public Class Methods
new(maildir_path = "/home/:user/Maildir")
click to toggle source
# File lib/eventmachine/email_server/maildir.rb, line 8 def initialize(maildir_path = "/home/:user/Maildir") @maildir_path = maildir_path @user_maildirs = Hash.new end
Public Instance Methods
-(email)
click to toggle source
# File lib/eventmachine/email_server/maildir.rb, line 54 def -(email) delete_email(email) end
<<(email)
click to toggle source
# File lib/eventmachine/email_server/maildir.rb, line 43 def <<(email) save_email(email) end
count()
click to toggle source
# File lib/eventmachine/email_server/maildir.rb, line 69 def count raise "Unimplemented in #{self.class}" end
delete_email(email)
click to toggle source
# File lib/eventmachine/email_server/maildir.rb, line 47 def delete_email(email) key = email.subject maildir = get_maildir(email.uid) message = maildir.get(key) message.destroy end
delete_id(id)
click to toggle source
# File lib/eventmachine/email_server/maildir.rb, line 58 def delete_id(id) raise "Unsupported in #{self.class}" end
delete_user(uid)
click to toggle source
# File lib/eventmachine/email_server/maildir.rb, line 62 def delete_user(uid) maildir = get_maildir(email.uid) @user_maildirs[id].list(:new).map do |message| message.destroy end end
emails_by_userid(id)
click to toggle source
# File lib/eventmachine/email_server/maildir.rb, line 23 def emails_by_userid(id) maildir = get_maildir(id) messages = @user_maildirs[id].list(:new) # convert into EventMachine::EmailServer::Email, place each message as the subject? m = Array.new counter = -1 messages = @user_maildirs[id].list(:new).map do |message| # :id,:from,:to,:subject,:body,:uid,:marked counter += 1 EventMachine::EmailServer::Email.new(counter, nil, nil, message.key, message.data, id, 'false') end messages end
get_maildir(id)
click to toggle source
# File lib/eventmachine/email_server/maildir.rb, line 13 def get_maildir(id) if @user_maildirs[id].nil? user_maildir_path = @maildir_path.gsub(/:user/, id) puts user_maildir_path @user_maildirs[id] = ::Maildir.new(user_maildir_path) end @user_maildirs[id] end
save_email(email)
click to toggle source
# File lib/eventmachine/email_server/maildir.rb, line 37 def save_email(email) maildir = get_maildir(email.uid) message = maildir.add(email.body) message end