class TodoistizeMail::Mailer

Constants

MAILBOX_NAME
SUBJECT_ATTR

Public Class Methods

new(host, port, usessl) click to toggle source
# File lib/todoistize_mail/mailer.rb, line 10
def initialize(host, port, usessl)
  @imap = Net::IMAP.new(host, port, usessl)
end

Public Instance Methods

login(user, passwd) { |self| ... } click to toggle source
# File lib/todoistize_mail/mailer.rb, line 14
def login(user, passwd)
  @imap.login(user, passwd)
  if block_given?
    yield self
    logout
  end
  self
end
logout() click to toggle source
# File lib/todoistize_mail/mailer.rb, line 23
def logout
  @imap.logout
  self
end
mark_read(subject) { |target| ... } click to toggle source
# File lib/todoistize_mail/mailer.rb, line 37
def mark_read(subject)
  target = unread_list.select { |_k, unread_subject| subject =~ /^#{unread_subject}$/ }
  return if target.count == 0
  yield target if block_given?
  @imap.select(MAILBOX_NAME)
  target.each { |id, _v| @imap.store(id, '+FLAGS', [:Seen]) }
end
unread?(subject) click to toggle source
# File lib/todoistize_mail/mailer.rb, line 32
def unread?(subject)
  unread_list.each { |_id, unread_subject| return true if subject =~ /^#{unread_subject}$/ }
  false
end
unread_subjects() click to toggle source
# File lib/todoistize_mail/mailer.rb, line 28
def unread_subjects
  unread_list.each_with_object([]) { |(_id, subject), subjects| subjects << subject }
end

Private Instance Methods

unread_list() click to toggle source
# File lib/todoistize_mail/mailer.rb, line 47
def unread_list
  @imap.examine(MAILBOX_NAME)
  @imap.search(['UNSEEN']).each_with_object({}) do |id, hash|
    msg = @imap.fetch(id, [SUBJECT_ATTR]).first
    hash.merge!(id => msg.attr[SUBJECT_ATTR].toutf8.strip)
  end
end