slack-notify 0.1.0 → 0.1.1
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 +3 -2
- data/lib/slack-notify/version.rb +1 -1
- data/lib/slack-notify.rb +19 -15
- data/slack-notify.gemspec +1 -1
- data/spec/slack-notify/client_spec.rb +29 -9
- metadata +4 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 57d6d5e9bc2495e9e867ebb9c15123cbff6432a0
|
4
|
+
data.tar.gz: ece231fb7b78c6b715dacdfadf4b622d9697dca8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d5ae0948e81205f17980748fed744f81e218db8105675696a7c421205980f592cb57f3f3a59310330397ed30b70021f17a9753bfa2bde4967c467bb76819414a
|
7
|
+
data.tar.gz: 0c688b5b481e6c43a7bf6589085aef0ac4284e73709348f34c0b6dfa659f8652c16133aefd9319b85cb730b1625d2c5201f19e7d861805738a465a4b838e0511
|
data/README.md
CHANGED
@@ -33,13 +33,13 @@ require "slack-notify"
|
|
33
33
|
Initialize client:
|
34
34
|
|
35
35
|
```ruby
|
36
|
-
client = SlackNotify::Client.new("
|
36
|
+
client = SlackNotify::Client.new("team", "token")
|
37
37
|
```
|
38
38
|
|
39
39
|
Initialize with options:
|
40
40
|
|
41
41
|
```ruby
|
42
|
-
client = SlackNotify::Client.new("
|
42
|
+
client = SlackNotify::Client.new("team", "token", {
|
43
43
|
channel: "#development",
|
44
44
|
username: "mybot"
|
45
45
|
})
|
@@ -56,6 +56,7 @@ Send message:
|
|
56
56
|
```ruby
|
57
57
|
client.notify("Hello There!")
|
58
58
|
client.notify("Another message", "#channel2")
|
59
|
+
client.notify("Message", ["#channel1", "#channel2"])
|
59
60
|
```
|
60
61
|
|
61
62
|
## Gotchas
|
data/lib/slack-notify/version.rb
CHANGED
data/lib/slack-notify.rb
CHANGED
@@ -6,13 +6,13 @@ require "faraday"
|
|
6
6
|
|
7
7
|
module SlackNotify
|
8
8
|
class Client
|
9
|
-
def initialize(
|
10
|
-
@
|
11
|
-
@token
|
12
|
-
@username
|
13
|
-
@channel
|
9
|
+
def initialize(team, token, options={})
|
10
|
+
@team = team
|
11
|
+
@token = token
|
12
|
+
@username = options[:username] || "webhookbot"
|
13
|
+
@channel = options[:channel] || "#general"
|
14
14
|
|
15
|
-
raise ArgumentError, "
|
15
|
+
raise ArgumentError, "Team name required" if @team.nil?
|
16
16
|
raise ArgumentError, "Token required" if @token.nil?
|
17
17
|
end
|
18
18
|
|
@@ -21,20 +21,20 @@ module SlackNotify
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def notify(text, channel=nil)
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
24
|
+
channels = [channel || @channel].flatten.compact.uniq
|
25
|
+
|
26
|
+
channels.each do |chan|
|
27
|
+
chan.prepend("#") if chan[0] != "#"
|
28
|
+
send_payload(text: text, username: @username, channel: chan)
|
29
|
+
end
|
30
|
+
|
31
|
+
true
|
29
32
|
end
|
30
33
|
|
31
34
|
private
|
32
35
|
|
33
36
|
def send_payload(payload)
|
34
|
-
|
35
|
-
url << "?token=#{@token}"
|
36
|
-
|
37
|
-
response = Faraday.post(url) do |req|
|
37
|
+
response = Faraday.post(hook_url) do |req|
|
38
38
|
req.body = JSON.dump(payload)
|
39
39
|
end
|
40
40
|
|
@@ -48,5 +48,9 @@ module SlackNotify
|
|
48
48
|
end
|
49
49
|
end
|
50
50
|
end
|
51
|
+
|
52
|
+
def hook_url
|
53
|
+
"https://#{@team}.slack.com/services/hooks/incoming-webhook?token=#{@token}"
|
54
|
+
end
|
51
55
|
end
|
52
56
|
end
|
data/slack-notify.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_development_dependency "bundler", "~> 1.3"
|
22
22
|
spec.add_development_dependency "rake", "~> 10"
|
23
|
-
spec.add_development_dependency "simplecov", "~> 0.
|
23
|
+
spec.add_development_dependency "simplecov", "~> 0.7"
|
24
24
|
spec.add_development_dependency "rspec", "~> 2.13"
|
25
25
|
spec.add_development_dependency "webmock", "~> 1.0"
|
26
26
|
|
@@ -2,9 +2,9 @@ require "spec_helper"
|
|
2
2
|
|
3
3
|
describe SlackNotify::Client do
|
4
4
|
describe "#initialize" do
|
5
|
-
it "requires
|
5
|
+
it "requires team name" do
|
6
6
|
expect { described_class.new(nil, nil) }.
|
7
|
-
to raise_error ArgumentError, "
|
7
|
+
to raise_error ArgumentError, "Team name required"
|
8
8
|
end
|
9
9
|
|
10
10
|
it "requires token" do
|
@@ -79,19 +79,39 @@ describe SlackNotify::Client do
|
|
79
79
|
|
80
80
|
it "delivers payload" do
|
81
81
|
stub_request(:post, "https://foo.slack.com/services/hooks/incoming-webhook?token=token").
|
82
|
-
with(:body => {"{\"text\":\"Message\",\"
|
82
|
+
with(:body => {"{\"text\":\"Message\",\"username\":\"webhookbot\",\"channel\":\"#general\"}"=>true},
|
83
83
|
:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/x-www-form-urlencoded', 'User-Agent'=>'Faraday v0.8.8'}).
|
84
84
|
to_return(:status => 200, :body => "", :headers => {})
|
85
85
|
|
86
86
|
expect(client.notify("Message")).to eq true
|
87
87
|
end
|
88
88
|
|
89
|
-
context "
|
89
|
+
context "with multiple channels" do
|
90
|
+
before do
|
91
|
+
client.stub(:send_payload) { true }
|
92
|
+
end
|
93
|
+
|
94
|
+
it "delivers payload to multiple channels" do
|
95
|
+
expect(client).to receive(:send_payload).exactly(2).times
|
96
|
+
client.notify("Message", ["#channel1", "#channel2"])
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
context "when pound symbol is missing" do
|
101
|
+
before { client.stub(:send_payload).and_return(true) }
|
102
|
+
|
103
|
+
it "adds pound symbol to channel name" do
|
104
|
+
expect(client).to receive(:send_payload).with(text: "Message", username: "webhookbot", channel: "#foobar")
|
105
|
+
client.notify("Message", "foobar")
|
106
|
+
end
|
107
|
+
end
|
108
|
+
|
109
|
+
context "when team name is invalid" do
|
90
110
|
before do
|
91
111
|
stub_request(:post, "https://foo.slack.com/services/hooks/incoming-webhook?token=token").
|
92
|
-
with(:body => {"{\"text\":\"Message\",\"
|
112
|
+
with(:body => {"{\"text\":\"Message\",\"username\":\"webhookbot\",\"channel\":\"#general\"}"=>true},
|
93
113
|
:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/x-www-form-urlencoded', 'User-Agent'=>'Faraday v0.8.8'}).
|
94
|
-
to_return(:status => 404, :body => "
|
114
|
+
to_return(:status => 404, :body => "Line 1\nLine 2\nLine 3", :headers => {})
|
95
115
|
end
|
96
116
|
|
97
117
|
it "raises error" do
|
@@ -99,12 +119,12 @@ describe SlackNotify::Client do
|
|
99
119
|
end
|
100
120
|
end
|
101
121
|
|
102
|
-
context "
|
122
|
+
context "when token is invalid" do
|
103
123
|
before do
|
104
124
|
stub_request(:post, "https://foo.slack.com/services/hooks/incoming-webhook?token=token").
|
105
|
-
with(:body => {"{\"text\":\"Message\",\"
|
125
|
+
with(:body => {"{\"text\":\"Message\",\"username\":\"webhookbot\",\"channel\":\"#general\"}"=>true},
|
106
126
|
:headers => {'Accept'=>'*/*', 'Accept-Encoding'=>'gzip;q=1.0,deflate;q=0.6,identity;q=0.3', 'Content-Type'=>'application/x-www-form-urlencoded', 'User-Agent'=>'Faraday v0.8.8'}).
|
107
|
-
to_return(:status =>
|
127
|
+
to_return(:status => 400, :body => "No hooks", :headers => {})
|
108
128
|
end
|
109
129
|
|
110
130
|
it "raises error" do
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slack-notify
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dan Sosedoff
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-
|
11
|
+
date: 2013-11-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - ~>
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0.
|
47
|
+
version: '0.7'
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - ~>
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0.
|
54
|
+
version: '0.7'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -154,4 +154,3 @@ summary: Send notifications to Slack channel
|
|
154
154
|
test_files:
|
155
155
|
- spec/slack-notify/client_spec.rb
|
156
156
|
- spec/spec_helper.rb
|
157
|
-
has_rdoc:
|