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