slack_message 1.6.0 → 1.7.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: e66bdedefd2ac86c6c49d974e5f5d0474cc9b3756ce3a64e52df66ccc6e39cf4
4
- data.tar.gz: b085edf556d957516d1cbbc9b260b7aff0e5d34b4561d27ae0d5f6b2dda9c93b
3
+ metadata.gz: a2cd232d81a66a48c9543a5b910c335bca7a82474a60472d03f7cffab3fce0d0
4
+ data.tar.gz: c27312311ff02ee414f2882461fe5ea9b5c07d9d8e99847ae7af33faf4a31283
5
5
  SHA512:
6
- metadata.gz: ea935db68ca4771e11b40828d5cbd2fef02cf10c248fab3ede05ea82aef6a3a6d7ad96953debdc9214833ee0f281222e5e09adefd923c70d21090c996dba31a0
7
- data.tar.gz: 46d2163aa9ec0e9df582700575d0c8b47b389b808f93275129025bc277086eb02fbeb4caa0754408dbc6d6fba9f06b6d8720493280550e0d3664bc735059f7c1
6
+ metadata.gz: 69352d5eb8d4f6837f66ba042817bfe0a51c3483356bbc64ded0cbc60fc7e72c084ea39df542a93bf79a6c0a8c4ad860cdb9791f28d807edb5b1c859b13f129f
7
+ data.tar.gz: 740af84829c6b258b4788b5f83901f242a5732e98737781efb288ee426ed232726823d9fdde453da6c7d83eb55607733e1d4b55757580676921b37abba1c70ad
data/CHANGELOG.md CHANGED
@@ -2,6 +2,11 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [1.7.0] - 2021-10-06
6
+ - Added new error messages when API configuration is wrong / missing.
7
+ - Fixed issue with `instance_eval` and using methods within block.
8
+ - Fixed issue with sectionless `list_item`.
9
+
5
10
  ## [1.6.0] - 2021-10-04
6
11
  - Added `:default_channel` and `post_as` to deal with repetitive channel usage.
7
12
 
@@ -9,7 +14,7 @@
9
14
  - Added `ol` and `ul` to sections w/ some formatting.
10
15
 
11
16
  ## [1.4.0] - 2021-09-27
12
- - Moved image to accessory_image to differentiate between the image block
17
+ - Changed `image` to `accessory_image` to differentiate between the image block
13
18
  and the accessory image within a block.
14
19
 
15
20
  ## [1.3.0] - 2021-09-27
@@ -18,13 +23,12 @@
18
23
  - Added warnings for potentially invalid URLs.
19
24
 
20
25
  ## [1.2.0] - 2021-09-26
21
- - Turns out gemspec was broken. Fixed that.
26
+ - Fixed gemspec, which was entirely broken.
22
27
 
23
28
  ## [1.1.0] - 2021-09-26
24
29
  - Expanded the README significantly w/ usage instructions.
25
30
  - Added lots of error handling to requests.
26
31
 
27
32
  ## [1.0.0] - 2021-09-25
28
-
29
33
  - Added the base gem w/ a DSL for constructing blocks using sections.
30
34
  - Added a changelog, apparently.
data/README.md CHANGED
@@ -240,11 +240,11 @@ DSL to include more of the block API itself.
240
240
 
241
241
  Also, some behaviors that are still planned but not yet added:
242
242
 
243
+ * some API documentation amirite?
243
244
  * allow custom http_options in configuration
244
245
  * more of BlockKit's options
245
246
  * any interactive elements at all (I don't understand them yet)
246
247
  * more interesting return types for your message
247
- * some way to specify default channel for a given profile (and omit param to post_to)
248
248
  * richer text formatting (ul is currently a hack)
249
249
 
250
250
  Contributing
@@ -17,9 +17,16 @@ class SlackMessage::Api
17
17
 
18
18
  if response.code != "200"
19
19
  raise "Got an error back from the Slack API (HTTP #{response.code}):\n#{response.body}"
20
+ elsif response.body == ""
21
+ raise "Received empty 200 response from Slack when looking up user info. Check your API key."
22
+ end
23
+
24
+ begin
25
+ payload = JSON.parse(response.body)
26
+ rescue
27
+ raise "Unable to parse JSON response from Slack API\n#{response.body}"
20
28
  end
21
29
 
22
- payload = JSON.parse(response.body)
23
30
  if payload.include?("error") && payload["error"] == "invalid_auth"
24
31
  raise "Received an error because your authentication token isn't properly configured:\n#{response.body}"
25
32
  elsif payload.include?("error")
@@ -48,6 +55,8 @@ class SlackMessage::Api
48
55
  raise "Tried to send Slack message to non-existent channel or user '#{target}'"
49
56
  elsif response.body == "missing_text_or_fallback_or_attachments"
50
57
  raise "Tried to send Slack message with invalid payload."
58
+ elsif response.code == "302"
59
+ raise "Got 302 response while posting to Slack. Check your webhook URL for '#{profile[:handle]}'."
51
60
  elsif response.code != "200"
52
61
  raise "Got an error back from the Slack API (HTTP #{response.code}):\n#{response.body}"
53
62
  end
@@ -3,7 +3,11 @@ class SlackMessage::Dsl
3
3
 
4
4
  EMSPACE = " " # unicode emspace
5
5
 
6
- def initialize
6
+ def initialize(block)
7
+ # Delegate missing methods to caller scope. Thanks 2008:
8
+ # https://www.dan-manges.com/blog/ruby-dsls-instance-eval-with-delegation
9
+ @caller_self = eval("self", block.binding
10
+
7
11
  @body = []
8
12
  @default_section = Section.new
9
13
  @custom_bot_name = nil
@@ -81,13 +85,17 @@ class SlackMessage::Dsl
81
85
  @body
82
86
  end
83
87
 
88
+ def method_missing(meth, *args, &blk)
89
+ @caller_self.send meth, *args, &blk
90
+ end
91
+
84
92
  private
85
93
 
86
94
  # when doing things that would generate new top-levels, first try
87
95
  # to finish the implicit section.
88
96
  def finalize_default_section
89
97
  if default_section.has_content?
90
- @body.push(default_section.body)
98
+ @body.push(default_section.render)
91
99
  end
92
100
 
93
101
  @default_section = Section.new
data/lib/slack_message.rb CHANGED
@@ -16,7 +16,7 @@ module SlackMessage
16
16
  end
17
17
 
18
18
  def self.post_to(target, as: :default, &block)
19
- payload = Dsl.new.tap do |instance|
19
+ payload = Dsl.new(block).tap do |instance|
20
20
  instance.instance_eval(&block)
21
21
  end
22
22
 
@@ -27,7 +27,7 @@ module SlackMessage
27
27
  end
28
28
 
29
29
  def self.post_as(profile_name, &block)
30
- payload = Dsl.new.tap do |instance|
30
+ payload = Dsl.new(block).tap do |instance|
31
31
  instance.instance_eval(&block)
32
32
  end
33
33
 
@@ -43,7 +43,7 @@ module SlackMessage
43
43
  end
44
44
 
45
45
  def self.build(&block)
46
- Dsl.new.tap do |instance|
46
+ Dsl.new(block).tap do |instance|
47
47
  instance.instance_eval(&block)
48
48
  end.send(:render)
49
49
  end
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = 'slack_message'
3
- gem.version = "1.6.0"
3
+ gem.version = "1.7.0"
4
4
  gem.summary = "A nice DSL for composing rich messages in Slack"
5
5
  gem.authors = ["Joe Mastey"]
6
6
  gem.email = 'hello@joemastey.com'
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.6.0
4
+ version: 1.7.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-10-04 00:00:00.000000000 Z
11
+ date: 2021-10-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec