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 +4 -4
- data/README.md +9 -24
- data/lib/mail_slack_bot.rb +23 -8
- data/lib/mail_slack_bot/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 010fc443bd53f6996e302d9dd2a4fa96caec5f1b
|
4
|
+
data.tar.gz: 222d3f3c1e429eb0801c635eb4f80620ea395111
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
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
|
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
|
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.
|
35
|
-
config.slack.
|
36
|
-
|
37
|
-
#
|
38
|
-
|
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
|
-
|
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 )
|
data/lib/mail_slack_bot.rb
CHANGED
@@ -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
|
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
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
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
|
-
|
43
|
-
|
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
|
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.
|
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-
|
11
|
+
date: 2014-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|