mail_slack_bot 0.0.3 → 0.0.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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