mail_slack_bot 0.0.3 → 0.0.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: c4c9541b06f5c2cc31f470170dd2564d47cd74e6
4
- data.tar.gz: dcafe84c0ce77d698cba45ca8876bb8c88e5d1ff
3
+ metadata.gz: 010fc443bd53f6996e302d9dd2a4fa96caec5f1b
4
+ data.tar.gz: 222d3f3c1e429eb0801c635eb4f80620ea395111
5
5
  SHA512:
6
- metadata.gz: 906fd085f05f2f772e124abf447afb8fda1ae788b8df6366f9e325c20dde36615d882c15b5ce24728c6c8dea1570960884f79c07002cb76f980e0f5855476629
7
- data.tar.gz: 1077657d70eec30e09c84a383c49c9354ea7890a39ac25c5379e08a8b75037542b802cb6fbaa64255998bcf1d8a612a0991c28830cebacccbae25e2707d548d5
6
+ metadata.gz: f49d9a1ca5ec8d3025b37160f442cf99d49fe63916a192b5ef9c921cb024f125ec28023792096200aa7526ed22d43a05e375c1897fa69a686651580490e1db27
7
+ data.tar.gz: 4fa17ad24622df50ef627ea2c4f0b97c0473d35632edae8bd5501d399bcb1876bad2aa5a5242ac52338f94635b754b82fda27070689fa8acfec72fc31796b044
data/README.md CHANGED
@@ -18,27 +18,22 @@ Or install it yourself as:
18
18
 
19
19
  ## Usage
20
20
 
21
- To create a bot, write a class that extends MailSlackBot::Daemon and provides mail and slack settings For example:
21
+ To create a bot, write a class that extends MailSlackBot and provides mail and slack settings For example:
22
22
 
23
23
  ```ruby
24
-
25
24
  require 'mail_slack_bot'
26
25
 
27
- class MyAlertBot < MailSlackBot::Daemon
26
+ class MyAlertBot < MailSlackBot
28
27
 
29
28
  configure do |config|
30
-
31
- # Slack settings
32
29
  config.slack.team = ENV["SLACK_TEAM"]
33
30
  config.slack.token = ENV["SLACK_TOKEN"]
34
- config.slack.channel = '#alert'
35
- config.slack.username = 'alert'
36
-
37
- # Mail checking interval
38
- config.mail_check_interval = 10 # seconds
39
-
40
- # Uses https://github.com/mikel/mail,
41
- # so it's same as Mail.defaults https://github.com/mikel/mail#getting-emails-from-a-pop-server
31
+ config.logger = Logger.new('log/my_alert_bot.log') # The default is STDOUT.
32
+ config.slack.channel = '#alert' # The default is '#general'
33
+ config.slack.username = 'alert' # The default is 'mail'
34
+ config.slack.icon_emoji = ':rage:' # The default is ':mail:'
35
+
36
+ # See also https://github.com/mikel/mail#getting-emails-from-a-pop-server
42
37
  config.mail.retriever_method :pop3,
43
38
  :address => "pop.gmail.com",
44
39
  :port => 995,
@@ -49,20 +44,10 @@ class MyAlertBot < MailSlackBot::Daemon
49
44
 
50
45
  end
51
46
 
52
- # See also https://github.com/alexvollmer/daemon-spawn
53
- MyAlertBot.spawn!(log_file: 'my_alert_bot.log',
54
- pid_file: 'my_alert_bot.pid',
55
- sync_log: true,
56
- working_dir: File.dirname(__FILE__))
47
+ MyAlertBot.new.run
57
48
 
58
49
  ```
59
50
 
60
- And run above script like following:
61
-
62
- ```
63
- ruby my_alert_bot.rb start
64
- ```
65
-
66
51
  ## Contributing
67
52
 
68
53
  1. Fork it ( https://github.com/kmrshntr/mail_slack_bot/fork )
@@ -4,6 +4,7 @@ require 'mail'
4
4
  require 'slack-notifier'
5
5
  require 'daemon_spawn'
6
6
  require 'logger'
7
+ require 'nkf'
7
8
 
8
9
  class MailSlackBot
9
10
 
@@ -13,6 +14,10 @@ class MailSlackBot
13
14
 
14
15
  def configure
15
16
  @config = Configatron::RootStore.new
17
+ @config.slack.channel = '#general'
18
+ @config.slack.username = 'mail'
19
+ @config.slack.icon_emoji = ':mail:'
20
+ @config.mail_check_interval = 10
16
21
  @config.mail = Mail::Configuration.instance
17
22
  @config.logger = Logger.new(STDOUT)
18
23
  yield(@config)
@@ -24,23 +29,33 @@ class MailSlackBot
24
29
  @config = self.class.config
25
30
  yield(@config) if block_given?
26
31
  @logger = @config.logger
27
- sleep_time = @config.mail_check_interval || 10
32
+ sleep_time = @config.mail_check_interval
28
33
  slack_client = Slack::Notifier.new(@config.slack.team, @config.slack.token,
29
34
  channel: @config.slack.channel, username: @config.slack.username)
30
35
  loop do
31
- @logger.debug("Feching mail.")
32
- Mail.all.each do |mail|
33
- @logger.debug mail.subject
34
- @logger.debug mail.body.decoded
35
- manipulate(mail, slack_client)
36
+ begin
37
+ @logger.debug("Feching mail.")
38
+ Mail.all.each do |mail|
39
+ @logger.debug mail.subject
40
+ @logger.debug mail.body.decoded
41
+ manipulate(mail, slack_client)
42
+ end
43
+ rescue => e
44
+ slack_client.ping e.backtrace.join("\n"), pretext: e.message, icon_emoji: ":bow:"
36
45
  end
37
46
  sleep sleep_time
38
47
  end
39
48
  end
40
49
 
41
50
  def manipulate(mail, slack_client)
42
- slack_client.ping mail.body.decoded.encode("UTF-8", undef: :replace, invalid: :replace),
43
- pretext: mail.subject
51
+ text_plain = if mail.multipart?
52
+ mail.parts.detect { |p| p.content_type =~ /text\/plain/i }.body.decoded
53
+ else
54
+ mail.body.decoded
55
+ end
56
+ slack_client.ping NKF.nkf('-w', text_plain),
57
+ pretext: mail.subject,
58
+ icon_emoji: @config.slack.icon_emoji
44
59
  end
45
60
 
46
61
  end
@@ -1,3 +1,3 @@
1
1
  class MailSlackBot
2
- VERSION = "0.0.3"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: mail_slack_bot
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.3
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shintaro Kimura
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-15 00:00:00.000000000 Z
11
+ date: 2014-09-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler