class MailSlackBot
Constants
- VERSION
Attributes
config[R]
Public Class Methods
configure() { |config| ... }
click to toggle source
# File lib/mail_slack_bot.rb, line 15 def configure @config = Configatron::RootStore.new @config.slack.channel = '#general' @config.slack.username = 'mail' @config.slack.icon_emoji = ':mail:' @config.mail_check_interval = 10 @config.mail = Mail::Configuration.instance @config.logger = Logger.new(STDOUT) yield(@config) end
Public Instance Methods
manipulate(mail, slack_client)
click to toggle source
# File lib/mail_slack_bot.rb, line 50 def manipulate(mail, slack_client) text_plain = if mail.multipart? mail.parts.detect { |p| p.content_type =~ /text\/plain/i }.body.decoded else mail.body.decoded end slack_client.ping NKF.nkf('-w', text_plain), pretext: mail.subject, icon_emoji: @config.slack.icon_emoji end
run() { |config| ... }
click to toggle source
# File lib/mail_slack_bot.rb, line 28 def run @config = self.class.config yield(@config) if block_given? @logger = @config.logger sleep_time = @config.mail_check_interval slack_client = Slack::Notifier.new(@config.slack.team, @config.slack.token, channel: @config.slack.channel, username: @config.slack.username) loop do begin @logger.debug("Feching mail.") Mail.all.each do |mail| @logger.debug mail.subject @logger.debug mail.body.decoded manipulate(mail, slack_client) end rescue => e slack_client.ping e.backtrace.join("\n"), pretext: e.message, icon_emoji: ":bow:" end sleep sleep_time end end