class Mail2FrontMatter::Watcher

Public Class Methods

run() click to toggle source
# File lib/mail2frontmatter/watcher.rb, line 7
def self.run
  mail_protocol = Mail2FrontMatter.config[:protocol] || :imap
  poll_interval = Mail2FrontMatter.config[:interval] || 60

  Mailman.config.poll_interval = poll_interval
  Mailman.config.ignore_stdin = true

  Mailman.config.send("#{mail_protocol}=", Mail2FrontMatter.config[:mailman])
  Mailman.config.logger = Mail2FrontMatter.logger

  Mail2FrontMatter.logger.info("Mail2FrontMatter v#{Mail2FrontMatter::VERSION} is starting...")

  Mailman::Application.run do
    logger = Mail2FrontMatter.logger

    from(Mail2FrontMatter.config[:senders]).to(Mail2FrontMatter.config[:receiver]) do
      logger.info('parsing message...')
      parser = Mail2FrontMatter::Parser.new(message)

      logger.info('processing body and attachments...')
      metadata, body = Mail2FrontMatter::PreProcessor.process(parser.metadata, parser.body)

      logger.info('saving processed post...')
      Mail2FrontMatter::Writer.write(metadata, body)

      logger.info('commiting written post and attachments...')
      Mail2FrontMatter::Committer.commit(metadata, body)

      logger.info('done...')
    end

    default do
      logger.error("received and discarded email from unknown address!")
    end
  end
end