slack_message 1.2.0 → 1.3.0
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/CHANGELOG.md +6 -1
- data/Gemfile.lock +1 -1
- data/README.md +22 -4
- data/lib/slack_message/configuration.rb +5 -3
- data/lib/slack_message/dsl.rb +43 -6
- data/lib/slack_message.rb +6 -3
- data/slack_message.gemspec +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fb63c39ef18b4b6e6fb1d25e62300fcff41b759f3d59902c10423c306f892007
|
4
|
+
data.tar.gz: 499f1d885b3a00e60af92ff9d0ba17c19f59ba3b1468d178498d08802c9429dd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b0bf20b89e6ce48e9accb2ccd475d5f999686804d3c952e6a8903958af2f7b1500011f6abd904abba5f2cf73d635498f8c1feae7e4d00aa021b3ab0b6c1a5baa
|
7
|
+
data.tar.gz: 42a8e2ecc5b6ca51ec1ab534e2a91bb500e352e26636f1a5671bf81244a40b321162bed30e1e7e0a78e53490575fbb0052c9d39fb108951f73425269cfafbab5
|
data/CHANGELOG.md
CHANGED
@@ -2,11 +2,16 @@
|
|
2
2
|
|
3
3
|
## [Unreleased]
|
4
4
|
|
5
|
+
## [1.3.0] - 2021-09-27
|
6
|
+
- Added ability to use custom names when posting.
|
7
|
+
- Added ability to post images within sections.
|
8
|
+
- Added warnings for potentially invalid URLs.
|
9
|
+
|
5
10
|
## [1.2.0] - 2021-09-26
|
6
11
|
- Turns out gemspec was broken. Fixed that.
|
7
12
|
|
8
13
|
## [1.1.0] - 2021-09-26
|
9
|
-
- Expanded the README significantly w/ usage instructions
|
14
|
+
- Expanded the README significantly w/ usage instructions.
|
10
15
|
- Added lots of error handling to requests.
|
11
16
|
|
12
17
|
## [1.0.0] - 2021-09-25
|
data/Gemfile.lock
CHANGED
data/README.md
CHANGED
@@ -6,6 +6,14 @@ API](https://app.slack.com/block-kit-builder/) to make it easy to read and
|
|
6
6
|
write messages to slack in your ruby application. It has zero dependencies and
|
7
7
|
is built to be opinionated to keep your configuration needs low.
|
8
8
|
|
9
|
+
Posting a message to Slack should be this easy:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
SlackMessage.post_to('#general') do
|
13
|
+
text "We did it @here! :thumbsup:"
|
14
|
+
end
|
15
|
+
```
|
16
|
+
|
9
17
|
To install, just add `slack_message` to your bundle and you're ready to go.
|
10
18
|
|
11
19
|
|
@@ -63,11 +71,11 @@ end
|
|
63
71
|
|
64
72
|
### Usage
|
65
73
|
|
66
|
-
|
74
|
+
As mentioned at the top, posting a message to Slack is dang easy:
|
67
75
|
|
68
76
|
```ruby
|
69
77
|
SlackMessage.post_to('#general') do
|
70
|
-
text "We did it! :thumbsup:"
|
78
|
+
text "We did it @here! :thumbsup:"
|
71
79
|
end
|
72
80
|
```
|
73
81
|
|
@@ -130,7 +138,7 @@ SlackMessage is able to build all kinds of rich messages for you, and has been
|
|
130
138
|
a real joy to use for the author at least. To understand a bit more about the
|
131
139
|
possibilities of blocks, see Slack's [Block Kit
|
132
140
|
Builder](https://app.slack.com/block-kit-builder/) to understand the structure
|
133
|
-
better:
|
141
|
+
better. There are lots of options:
|
134
142
|
|
135
143
|
```ruby
|
136
144
|
SlackMessage.post_to('#general') do
|
@@ -174,6 +182,15 @@ SlackMessage.post_to('#general', as: :sidekiq_bot) do
|
|
174
182
|
end
|
175
183
|
```
|
176
184
|
|
185
|
+
You can also use a custom name when sending a message:
|
186
|
+
|
187
|
+
```ruby
|
188
|
+
SlackMessage.post_to('#general') do
|
189
|
+
bot_name "CoffeeBot"
|
190
|
+
|
191
|
+
text ":coffee::clock: Time to take a break!"
|
192
|
+
end
|
193
|
+
```
|
177
194
|
|
178
195
|
What it Doesn't Do
|
179
196
|
------------
|
@@ -190,7 +207,8 @@ DSL to include more of the block API itself.
|
|
190
207
|
Also, some behaviors that are still planned but not yet added:
|
191
208
|
|
192
209
|
* allow custom http_options in configuration
|
193
|
-
*
|
210
|
+
* more of BlockKit's options
|
211
|
+
* any interactive elements at all (I don't understand them yet)
|
194
212
|
|
195
213
|
Contributing
|
196
214
|
------------
|
@@ -29,17 +29,19 @@ module SlackMessage::Configuration
|
|
29
29
|
|
30
30
|
def self.add_profile(handle = :default, name:, url:)
|
31
31
|
if @@profiles.include?(handle)
|
32
|
-
warn
|
32
|
+
warn "WARNING: Overriding profile '#{handle}' in SlackMessage config"
|
33
33
|
end
|
34
34
|
|
35
35
|
@@profiles[handle] = { name: name, url: url, handle: handle }
|
36
36
|
end
|
37
37
|
|
38
|
-
def self.profile(handle)
|
38
|
+
def self.profile(handle, custom_name: nil)
|
39
39
|
unless @@profiles.include?(handle)
|
40
40
|
raise ArgumentError, "Unknown SlackMessage profile '#{handle}'."
|
41
41
|
end
|
42
42
|
|
43
|
-
@@profiles[handle]
|
43
|
+
@@profiles[handle].tap do |profile|
|
44
|
+
profile[:name] = custom_name if !custom_name.nil?
|
45
|
+
end
|
44
46
|
end
|
45
47
|
end
|
data/lib/slack_message/dsl.rb
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
class SlackMessage::Dsl
|
2
|
-
attr_reader :body, :default_section
|
2
|
+
attr_reader :body, :default_section, :custom_bot_name
|
3
3
|
|
4
4
|
def initialize
|
5
5
|
@body = []
|
6
6
|
@default_section = Section.new
|
7
|
+
@custom_bot_name = nil
|
7
8
|
end
|
8
9
|
|
9
10
|
# allowable top-level entities within a block
|
@@ -38,12 +39,26 @@ class SlackMessage::Dsl
|
|
38
39
|
|
39
40
|
def text(*args); default_section.text(*args); end
|
40
41
|
def link_button(*args); default_section.link_button(*args); end
|
42
|
+
def image(*args); default_section.image(*args); end
|
41
43
|
def blank_line(*args); default_section.blank_line(*args); end
|
42
44
|
def link(*args); default_section.link(*args); end
|
43
45
|
def list_item(*args); default_section.list_item(*args); end
|
44
46
|
|
45
47
|
# end delegation
|
46
48
|
|
49
|
+
# custom bot name
|
50
|
+
|
51
|
+
def bot_name(name)
|
52
|
+
@custom_bot_name = name
|
53
|
+
end
|
54
|
+
|
55
|
+
# end bot name
|
56
|
+
|
57
|
+
def render
|
58
|
+
finalize_default_section
|
59
|
+
@body
|
60
|
+
end
|
61
|
+
|
47
62
|
private
|
48
63
|
|
49
64
|
# when doing things that would generate new top-levels, first try
|
@@ -56,11 +71,6 @@ class SlackMessage::Dsl
|
|
56
71
|
@default_section = Section.new
|
57
72
|
end
|
58
73
|
|
59
|
-
def render
|
60
|
-
finalize_default_section
|
61
|
-
@body
|
62
|
-
end
|
63
|
-
|
64
74
|
class Section
|
65
75
|
attr_reader :body
|
66
76
|
|
@@ -80,6 +90,15 @@ class SlackMessage::Dsl
|
|
80
90
|
|
81
91
|
# styles: default, primary, danger
|
82
92
|
def link_button(label, target, style: :primary)
|
93
|
+
if !@body[:accessory].nil?
|
94
|
+
previous_type = @body[:accessory][:type]
|
95
|
+
warn "WARNING: Overriding previous #{previous_type} in section to use link_button instead: #{label}"
|
96
|
+
end
|
97
|
+
|
98
|
+
unless /(^|\s)((https?:\/\/)?[\w-]+(\.[\w-]+)+\.?(:\d+)?(\/\S*)?)/i =~ target
|
99
|
+
warn "WARNING: Passing a probably-invalid URL to link button #{label} (url: '#{target}')"
|
100
|
+
end
|
101
|
+
|
83
102
|
config = {
|
84
103
|
accessory: {
|
85
104
|
type: "button",
|
@@ -99,6 +118,24 @@ class SlackMessage::Dsl
|
|
99
118
|
@body.merge!(config)
|
100
119
|
end
|
101
120
|
|
121
|
+
def image(url, alt_text: nil)
|
122
|
+
if !@body[:accessory].nil?
|
123
|
+
previous_type = @body[:accessory][:type]
|
124
|
+
warn "WARNING: Overriding previous #{previous_type} in section to use image instead: #{url}"
|
125
|
+
end
|
126
|
+
|
127
|
+
config = {
|
128
|
+
accessory: {
|
129
|
+
type: "image",
|
130
|
+
image_url: url
|
131
|
+
}
|
132
|
+
}
|
133
|
+
|
134
|
+
config[:accessory][:alt_text] = alt_text if !alt_text.nil?
|
135
|
+
|
136
|
+
@body.merge!(config)
|
137
|
+
end
|
138
|
+
|
102
139
|
# for markdown links
|
103
140
|
def link(label, target)
|
104
141
|
"<#{target}|#{label}>"
|
data/lib/slack_message.rb
CHANGED
@@ -16,11 +16,14 @@ module SlackMessage
|
|
16
16
|
end
|
17
17
|
|
18
18
|
def self.post_to(target, as: :default, &block)
|
19
|
-
payload =
|
20
|
-
|
19
|
+
payload = Dsl.new.tap do |instance|
|
20
|
+
instance.instance_eval(&block)
|
21
|
+
end
|
22
|
+
|
23
|
+
profile = Configuration.profile(as, custom_name: payload.custom_bot_name)
|
21
24
|
target = user_id_for(target) if target =~ /^\S{1,}@\S{2,}\.\S{2,}$/
|
22
25
|
|
23
|
-
Api.post(payload, target, profile)
|
26
|
+
Api.post(payload.render, target, profile)
|
24
27
|
end
|
25
28
|
|
26
29
|
def self.build(&block)
|
data/slack_message.gemspec
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: slack_message
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Joe Mastey
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-09-
|
11
|
+
date: 2021-09-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rspec
|