slack-ruby-client 1.1.0 → 2.0.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.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/{integtest.yml → integration_test.yml} +6 -5
  3. data/.github/workflows/{rubocop.yml → lint.yml} +5 -4
  4. data/.github/workflows/{danger.yml → pr_lint.yml} +8 -6
  5. data/.github/workflows/test.yml +4 -2
  6. data/.gitignore +0 -1
  7. data/.rubocop.yml +4 -0
  8. data/.rubocop_todo.yml +8 -14
  9. data/.ruby-version +1 -0
  10. data/CHANGELOG.md +14 -0
  11. data/CONTRIBUTING.md +5 -4
  12. data/Gemfile +1 -6
  13. data/README.md +60 -63
  14. data/RELEASING.md +1 -1
  15. data/UPGRADING.md +28 -0
  16. data/bin/commands/admin_audit_anomaly_allow.rb +23 -0
  17. data/bin/commands/admin_conversations.rb +12 -11
  18. data/bin/commands/admin_users.rb +1 -1
  19. data/bin/commands/admin_users_session.rb +1 -1
  20. data/bin/commands/apps_connections.rb +2 -2
  21. data/bin/commands/bookmarks.rb +1 -0
  22. data/bin/commands/chat.rb +9 -6
  23. data/bin/commands/conversations.rb +8 -6
  24. data/bin/commands/files.rb +24 -0
  25. data/bin/commands/rtm.rb +0 -15
  26. data/bin/commands/views.rb +4 -2
  27. data/bin/commands.rb +1 -0
  28. data/bin/slack +1 -1
  29. data/lib/slack/real_time/api/message.rb +3 -2
  30. data/lib/slack/real_time/api/templates/event_handler.erb +5 -1
  31. data/lib/slack/real_time/api/typing.rb +2 -1
  32. data/lib/slack/real_time/client.rb +8 -26
  33. data/lib/slack/real_time/config.rb +3 -3
  34. data/lib/slack/real_time/models/channel.rb +4 -0
  35. data/lib/slack/real_time/models/{group.rb → mpim.rb} +1 -1
  36. data/lib/slack/real_time/models.rb +2 -1
  37. data/lib/slack/real_time/stores/base.rb +25 -9
  38. data/lib/slack/real_time/stores/starter.rb +323 -309
  39. data/lib/slack/real_time/stores/store.rb +265 -198
  40. data/lib/slack/real_time/stores.rb +1 -7
  41. data/lib/slack/version.rb +1 -1
  42. data/lib/slack/web/api/endpoints/admin_analytics.rb +1 -1
  43. data/lib/slack/web/api/endpoints/admin_apps.rb +2 -2
  44. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +1 -1
  45. data/lib/slack/web/api/endpoints/admin_audit_anomaly_allow.rb +34 -0
  46. data/lib/slack/web/api/endpoints/admin_auth_policy.rb +7 -7
  47. data/lib/slack/web/api/endpoints/admin_barriers.rb +8 -8
  48. data/lib/slack/web/api/endpoints/admin_conversations.rb +30 -28
  49. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +6 -6
  50. data/lib/slack/web/api/endpoints/admin_emoji.rb +7 -7
  51. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +2 -2
  52. data/lib/slack/web/api/endpoints/admin_teams.rb +2 -2
  53. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +1 -1
  54. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +1 -1
  55. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +11 -11
  56. data/lib/slack/web/api/endpoints/admin_usergroups.rb +7 -7
  57. data/lib/slack/web/api/endpoints/admin_users.rb +16 -16
  58. data/lib/slack/web/api/endpoints/admin_users_session.rb +8 -8
  59. data/lib/slack/web/api/endpoints/apps.rb +2 -2
  60. data/lib/slack/web/api/endpoints/apps_connections.rb +1 -1
  61. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +1 -1
  62. data/lib/slack/web/api/endpoints/apps_manifest.rb +6 -6
  63. data/lib/slack/web/api/endpoints/bookmarks.rb +10 -8
  64. data/lib/slack/web/api/endpoints/bots.rb +1 -1
  65. data/lib/slack/web/api/endpoints/calls.rb +5 -5
  66. data/lib/slack/web/api/endpoints/calls_participants.rb +4 -4
  67. data/lib/slack/web/api/endpoints/chat.rb +36 -30
  68. data/lib/slack/web/api/endpoints/conversations.rb +37 -33
  69. data/lib/slack/web/api/endpoints/dialog.rb +2 -2
  70. data/lib/slack/web/api/endpoints/dnd.rb +1 -1
  71. data/lib/slack/web/api/endpoints/files.rb +45 -8
  72. data/lib/slack/web/api/endpoints/files_comments.rb +2 -2
  73. data/lib/slack/web/api/endpoints/files_remote.rb +8 -8
  74. data/lib/slack/web/api/endpoints/migration.rb +1 -1
  75. data/lib/slack/web/api/endpoints/oauth_v2.rb +2 -2
  76. data/lib/slack/web/api/endpoints/pins.rb +3 -3
  77. data/lib/slack/web/api/endpoints/reactions.rb +4 -4
  78. data/lib/slack/web/api/endpoints/reminders.rb +5 -5
  79. data/lib/slack/web/api/endpoints/rtm.rb +0 -23
  80. data/lib/slack/web/api/endpoints/search.rb +3 -3
  81. data/lib/slack/web/api/endpoints/tooling_tokens.rb +1 -1
  82. data/lib/slack/web/api/endpoints/usergroups.rb +4 -4
  83. data/lib/slack/web/api/endpoints/usergroups_users.rb +3 -3
  84. data/lib/slack/web/api/endpoints/users.rb +4 -4
  85. data/lib/slack/web/api/endpoints/users_admin.rb +2 -2
  86. data/lib/slack/web/api/endpoints/views.rb +16 -11
  87. data/lib/slack/web/api/endpoints/workflows.rb +4 -4
  88. data/lib/slack/web/api/endpoints.rb +2 -0
  89. data/lib/slack/web/api/errors.rb +56 -6
  90. data/lib/slack/web/api/mixins/conversations.id.rb +1 -1
  91. data/lib/slack/web/api/mixins/users.id.rb +1 -1
  92. data/lib/slack/web/api/mixins/users.search.rb +2 -1
  93. data/lib/slack/web/api/patches/{chat.1.patch → chat.attachments-blocks.patch} +13 -14
  94. data/lib/slack/web/api/patches/{dialog.1.open-json-support.patch → dialog.encoded-json.patch} +4 -4
  95. data/lib/slack/web/api/patches/views.view-json.patch +55 -0
  96. data/lib/slack/web/api/templates/method.erb +1 -1
  97. data/lib/slack/web/config.rb +2 -2
  98. data/lib/tasks/real_time.rake +44 -22
  99. data/lib/tasks/web.rake +9 -2
  100. data/spec/fixtures/slack/web/rtm_connect.yml +85 -1
  101. data/spec/slack/events/config_spec.rb +2 -0
  102. data/spec/slack/events/request_spec.rb +4 -0
  103. data/spec/slack/messages/formatting_spec.rb +10 -0
  104. data/spec/slack/real_time/api/message_spec.rb +1 -1
  105. data/spec/slack/real_time/api/ping_spec.rb +1 -1
  106. data/spec/slack/real_time/api/typing_spec.rb +1 -1
  107. data/spec/slack/real_time/client_spec.rb +73 -111
  108. data/spec/slack/real_time/event_handlers/bot_spec.rb +19 -17
  109. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +1 -1
  110. data/spec/slack/real_time/event_handlers/im_spec.rb +28 -25
  111. data/spec/slack/real_time/event_handlers/{group_spec.rb → private_channel_spec.rb} +35 -27
  112. data/spec/slack/real_time/event_handlers/{channel_spec.rb → public_channel_spec.rb} +24 -20
  113. data/spec/slack/real_time/event_handlers/team_spec.rb +7 -8
  114. data/spec/slack/real_time/event_handlers/user_spec.rb +6 -5
  115. data/spec/slack/real_time/stores/store_spec.rb +50 -0
  116. data/spec/slack/slack_spec.rb +1 -0
  117. data/spec/slack/web/api/endpoints/admin_audit_anomaly_allow_spec.rb +8 -0
  118. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +17 -1
  119. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +2 -0
  120. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +13 -4
  121. data/spec/slack/web/api/endpoints/files_spec.rb +13 -0
  122. data/spec/slack/web/api/mixins/conversations_spec.rb +2 -0
  123. data/spec/slack/web/api/mixins/users_spec.rb +2 -0
  124. data/spec/slack/web/api/pagination/cursor_spec.rb +4 -0
  125. data/spec/slack/web/client_spec.rb +14 -4
  126. data/spec/support/real_time/loaded_client.rb +120 -0
  127. metadata +18 -35
  128. data/bin/commands/admin_conversations_whitelist.rb +0 -37
  129. data/bin/commands/apps_permissions.rb +0 -23
  130. data/bin/commands/apps_permissions_resources.rb +0 -15
  131. data/bin/commands/apps_permissions_scopes.rb +0 -13
  132. data/bin/commands/apps_permissions_users.rb +0 -26
  133. data/bin/commands/channels.rb +0 -23
  134. data/bin/commands/groups.rb +0 -14
  135. data/bin/commands/im.rb +0 -6
  136. data/bin/commands/mpim.rb +0 -6
  137. data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +0 -64
  138. data/lib/slack/web/api/endpoints/apps_permissions.rb +0 -36
  139. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +0 -31
  140. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +0 -21
  141. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +0 -50
  142. data/lib/slack/web/api/endpoints/channels.rb +0 -25
  143. data/lib/slack/web/api/endpoints/groups.rb +0 -13
  144. data/lib/slack/web/api/endpoints/im.rb +0 -13
  145. data/lib/slack/web/api/endpoints/mpim.rb +0 -13
  146. data/lib/slack/web/api/endpoints/presence.rb +0 -23
  147. data/lib/slack/web/api/patches/views.1.view-json.patch +0 -40
  148. data/lib/slack/web/api/patches/views.1.views-published.patch +0 -16
  149. data/spec/fixtures/slack/web/rtm_start.yml +0 -815
  150. data/spec/slack/real_time/rtm_start_spec.rb +0 -14
  151. data/spec/slack/real_time/store_spec.rb +0 -12
@@ -24,7 +24,7 @@ module Slack
24
24
  # @see https://api.slack.com/methods/usergroups.create
25
25
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/usergroups/usergroups.create.json
26
26
  def usergroups_create(options = {})
27
- throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
27
+ raise ArgumentError, 'Required arguments :name missing' if options[:name].nil?
28
28
  post('usergroups.create', options)
29
29
  end
30
30
 
@@ -40,7 +40,7 @@ module Slack
40
40
  # @see https://api.slack.com/methods/usergroups.disable
41
41
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/usergroups/usergroups.disable.json
42
42
  def usergroups_disable(options = {})
43
- throw ArgumentError.new('Required arguments :usergroup missing') if options[:usergroup].nil?
43
+ raise ArgumentError, 'Required arguments :usergroup missing' if options[:usergroup].nil?
44
44
  post('usergroups.disable', options)
45
45
  end
46
46
 
@@ -56,7 +56,7 @@ module Slack
56
56
  # @see https://api.slack.com/methods/usergroups.enable
57
57
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/usergroups/usergroups.enable.json
58
58
  def usergroups_enable(options = {})
59
- throw ArgumentError.new('Required arguments :usergroup missing') if options[:usergroup].nil?
59
+ raise ArgumentError, 'Required arguments :usergroup missing' if options[:usergroup].nil?
60
60
  post('usergroups.enable', options)
61
61
  end
62
62
 
@@ -97,7 +97,7 @@ module Slack
97
97
  # @see https://api.slack.com/methods/usergroups.update
98
98
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/usergroups/usergroups.update.json
99
99
  def usergroups_update(options = {})
100
- throw ArgumentError.new('Required arguments :usergroup missing') if options[:usergroup].nil?
100
+ raise ArgumentError, 'Required arguments :usergroup missing' if options[:usergroup].nil?
101
101
  post('usergroups.update', options)
102
102
  end
103
103
  end
@@ -18,7 +18,7 @@ module Slack
18
18
  # @see https://api.slack.com/methods/usergroups.users.list
19
19
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/usergroups.users/usergroups.users.list.json
20
20
  def usergroups_users_list(options = {})
21
- throw ArgumentError.new('Required arguments :usergroup missing') if options[:usergroup].nil?
21
+ raise ArgumentError, 'Required arguments :usergroup missing' if options[:usergroup].nil?
22
22
  post('usergroups.users.list', options)
23
23
  end
24
24
 
@@ -36,8 +36,8 @@ module Slack
36
36
  # @see https://api.slack.com/methods/usergroups.users.update
37
37
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/usergroups.users/usergroups.users.update.json
38
38
  def usergroups_users_update(options = {})
39
- throw ArgumentError.new('Required arguments :usergroup missing') if options[:usergroup].nil?
40
- throw ArgumentError.new('Required arguments :users missing') if options[:users].nil?
39
+ raise ArgumentError, 'Required arguments :usergroup missing' if options[:usergroup].nil?
40
+ raise ArgumentError, 'Required arguments :users missing' if options[:users].nil?
41
41
  post('usergroups.users.update', options)
42
42
  end
43
43
  end
@@ -74,7 +74,7 @@ module Slack
74
74
  # @see https://api.slack.com/methods/users.info
75
75
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/users/users.info.json
76
76
  def users_info(options = {})
77
- throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
77
+ raise ArgumentError, 'Required arguments :user missing' if options[:user].nil?
78
78
  options = options.merge(user: users_id(options)['user']['id']) if options[:user]
79
79
  post('users.info', options)
80
80
  end
@@ -110,7 +110,7 @@ module Slack
110
110
  # @see https://api.slack.com/methods/users.lookupByEmail
111
111
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/users/users.lookupByEmail.json
112
112
  def users_lookupByEmail(options = {})
113
- throw ArgumentError.new('Required arguments :email missing') if options[:email].nil?
113
+ raise ArgumentError, 'Required arguments :email missing' if options[:email].nil?
114
114
  post('users.lookupByEmail', options)
115
115
  end
116
116
 
@@ -132,7 +132,7 @@ module Slack
132
132
  # X coordinate of top-left corner of crop box.
133
133
  # @option options [string] :crop_y
134
134
  # Y coordinate of top-left corner of crop box.
135
- # @option options [string] :image
135
+ # @option options [Object] :image
136
136
  # File contents via multipart/form-data.
137
137
  # @see https://api.slack.com/methods/users.setPhoto
138
138
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/users/users.setPhoto.json
@@ -148,7 +148,7 @@ module Slack
148
148
  # @see https://api.slack.com/methods/users.setPresence
149
149
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/users/users.setPresence.json
150
150
  def users_setPresence(options = {})
151
- throw ArgumentError.new('Required arguments :presence missing') if options[:presence].nil?
151
+ raise ArgumentError, 'Required arguments :presence missing' if options[:presence].nil?
152
152
  post('users.setPresence', options)
153
153
  end
154
154
  end
@@ -25,7 +25,7 @@ module Slack
25
25
  # Invite a guest that can use one channel only
26
26
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/users.admin/users.admin.invite.json
27
27
  def users_admin_invite(options = {})
28
- throw ArgumentError.new('Required arguments :email missing') if options[:email].nil?
28
+ raise ArgumentError, 'Required arguments :email missing' if options[:email].nil?
29
29
  logger.warn('The users.admin.invite method is undocumented.')
30
30
  post('users.admin.invite', options)
31
31
  end
@@ -37,7 +37,7 @@ module Slack
37
37
  # User to disable
38
38
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/users.admin/users.admin.setInactive.json
39
39
  def users_admin_setInactive(options = {})
40
- throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
40
+ raise ArgumentError, 'Required arguments :user missing' if options[:user].nil?
41
41
  options = options.merge(user: users_id(options)['user']['id']) if options[:user]
42
42
  logger.warn('The users.admin.setInactive method is undocumented.')
43
43
  post('users.admin.setInactive', options)
@@ -9,15 +9,17 @@ module Slack
9
9
  #
10
10
  # Open a view for a user.
11
11
  #
12
- # @option options [string] :trigger_id
13
- # Exchange a trigger to post to the user.
14
12
  # @option options [view as string] :view
15
13
  # A view payload. This must be a JSON-encoded string.
14
+ # @option options [string] :trigger_id
15
+ # Exchange a trigger to post to the user.
16
+ # @option options [string] :interactivity_pointer
17
+ # Exchange an interactivity pointer to post to the user.
16
18
  # @see https://api.slack.com/methods/views.open
17
19
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/views/views.open.json
18
20
  def views_open(options = {})
19
- throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
20
- throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
21
+ raise ArgumentError, 'Required arguments :view missing' if options[:view].nil?
22
+ raise ArgumentError, 'One of :trigger_id, :interactivity_pointer is required' unless options[:trigger_id].nil? ^ options[:interactivity_pointer].nil?
21
23
  if options.key?(:view)
22
24
  view = options[:view]
23
25
  view = JSON.dump(view) unless view.is_a?(String)
@@ -38,8 +40,8 @@ module Slack
38
40
  # @see https://api.slack.com/methods/views.publish
39
41
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/views/views.publish.json
40
42
  def views_publish(options = {})
41
- throw ArgumentError.new('Required arguments :user_id missing') if options[:user_id].nil?
42
- throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
43
+ raise ArgumentError, 'Required arguments :user_id missing' if options[:user_id].nil?
44
+ raise ArgumentError, 'Required arguments :view missing' if options[:view].nil?
43
45
  if options.key?(:view)
44
46
  view = options[:view]
45
47
  view = JSON.dump(view) unless view.is_a?(String)
@@ -51,15 +53,17 @@ module Slack
51
53
  #
52
54
  # Push a view onto the stack of a root view.
53
55
  #
54
- # @option options [string] :trigger_id
55
- # Exchange a trigger to post to the user.
56
56
  # @option options [view as string] :view
57
57
  # A view payload. This must be a JSON-encoded string.
58
+ # @option options [string] :trigger_id
59
+ # Exchange a trigger to post to the user.
60
+ # @option options [string] :interactivity_pointer
61
+ # Exchange an interactivity pointer to post to the user.
58
62
  # @see https://api.slack.com/methods/views.push
59
63
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/views/views.push.json
60
64
  def views_push(options = {})
61
- throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
62
- throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
65
+ raise ArgumentError, 'Required arguments :view missing' if options[:view].nil?
66
+ raise ArgumentError, 'One of :trigger_id, :interactivity_pointer is required' unless options[:trigger_id].nil? ^ options[:interactivity_pointer].nil?
63
67
  if options.key?(:view)
64
68
  view = options[:view]
65
69
  view = JSON.dump(view) unless view.is_a?(String)
@@ -82,7 +86,8 @@ module Slack
82
86
  # @see https://api.slack.com/methods/views.update
83
87
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/views/views.update.json
84
88
  def views_update(options = {})
85
- throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
89
+ raise ArgumentError, 'Required arguments :view missing' if options[:view].nil?
90
+ raise ArgumentError, 'One of :external_id, :view_id is required' unless options[:external_id].nil? ^ options[:view_id].nil?
86
91
  if options.key?(:view)
87
92
  view = options[:view]
88
93
  view = JSON.dump(view) unless view.is_a?(String)
@@ -16,7 +16,7 @@ module Slack
16
16
  # @see https://api.slack.com/methods/workflows.stepCompleted
17
17
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/workflows/workflows.stepCompleted.json
18
18
  def workflows_stepCompleted(options = {})
19
- throw ArgumentError.new('Required arguments :workflow_step_execute_id missing') if options[:workflow_step_execute_id].nil?
19
+ raise ArgumentError, 'Required arguments :workflow_step_execute_id missing' if options[:workflow_step_execute_id].nil?
20
20
  post('workflows.stepCompleted', options)
21
21
  end
22
22
 
@@ -30,8 +30,8 @@ module Slack
30
30
  # @see https://api.slack.com/methods/workflows.stepFailed
31
31
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/workflows/workflows.stepFailed.json
32
32
  def workflows_stepFailed(options = {})
33
- throw ArgumentError.new('Required arguments :error missing') if options[:error].nil?
34
- throw ArgumentError.new('Required arguments :workflow_step_execute_id missing') if options[:workflow_step_execute_id].nil?
33
+ raise ArgumentError, 'Required arguments :error missing' if options[:error].nil?
34
+ raise ArgumentError, 'Required arguments :workflow_step_execute_id missing' if options[:workflow_step_execute_id].nil?
35
35
  post('workflows.stepFailed', options)
36
36
  end
37
37
 
@@ -51,7 +51,7 @@ module Slack
51
51
  # @see https://api.slack.com/methods/workflows.updateStep
52
52
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/workflows/workflows.updateStep.json
53
53
  def workflows_updateStep(options = {})
54
- throw ArgumentError.new('Required arguments :workflow_step_edit_id missing') if options[:workflow_step_edit_id].nil?
54
+ raise ArgumentError, 'Required arguments :workflow_step_edit_id missing' if options[:workflow_step_edit_id].nil?
55
55
  post('workflows.updateStep', options)
56
56
  end
57
57
  end
@@ -6,6 +6,7 @@ require_relative 'endpoints/admin_apps'
6
6
  require_relative 'endpoints/admin_apps_approved'
7
7
  require_relative 'endpoints/admin_apps_requests'
8
8
  require_relative 'endpoints/admin_apps_restricted'
9
+ require_relative 'endpoints/admin_audit_anomaly_allow'
9
10
  require_relative 'endpoints/admin_auth_policy'
10
11
  require_relative 'endpoints/admin_barriers'
11
12
  require_relative 'endpoints/admin_conversations'
@@ -79,6 +80,7 @@ module Slack
79
80
  include AdminAppsApproved
80
81
  include AdminAppsRequests
81
82
  include AdminAppsRestricted
83
+ include AdminAuditAnomalyAllow
82
84
  include AdminAuthPolicy
83
85
  include AdminBarriers
84
86
  include AdminConversations
@@ -19,8 +19,10 @@ module Slack
19
19
  class AlreadyProcessed < SlackError; end
20
20
  class AlreadyReacted < SlackError; end
21
21
  class AlreadyStarred < SlackError; end
22
+ class AltTxtTooLarge < SlackError; end
22
23
  class AppManagementAppNotInstalledOnOrg < SlackError; end
23
24
  class AppMissingActionUrl < SlackError; end
25
+ class AppNotEligible < SlackError; end
24
26
  class AppNotFound < SlackError; end
25
27
  class AppRestrictedOrgWide < SlackError; end
26
28
  class ApprovalInactive < SlackError; end
@@ -41,6 +43,7 @@ module Slack
41
43
  class BarrierAlreadyExists < SlackError; end
42
44
  class BarrierNotFound < SlackError; end
43
45
  class BarrieredFromUsergroupsNotFound < SlackError; end
46
+ class BlockMismatch < SlackError; end
44
47
  class BotNotFound < SlackError; end
45
48
  class BotUserRequired < SlackError; end
46
49
  class BotsNotAllowed < SlackError; end
@@ -102,6 +105,7 @@ module Slack
102
105
  class ChannelTypeNotSupported < SlackError; end
103
106
  class ClientIdTokenMismatch < SlackError; end
104
107
  class CodeAlreadyUsed < SlackError; end
108
+ class ConnectedTeamPassedInIsNotTopLevelTeam < SlackError; end
105
109
  class ConnectionLimitExceeded < SlackError; end
106
110
  class ConnectionLimitExceededPending < SlackError; end
107
111
  class CouldNotArchiveChannel < SlackError; end
@@ -136,6 +140,7 @@ module Slack
136
140
  class EmailTaken < SlackError; end
137
141
  class EmojiLimitReached < SlackError; end
138
142
  class EmojiNotFound < SlackError; end
143
+ class EndpointUnavailable < SlackError; end
139
144
  class EnterpriseIsRestricted < SlackError; end
140
145
  class EnterpriseNotFound < SlackError; end
141
146
  class EntityNotFound < SlackError; end
@@ -153,6 +158,7 @@ module Slack
153
158
  class ExchangedTriggerId < SlackError; end
154
159
  class ExpiredTriggerId < SlackError; end
155
160
  class ExternalChannelMigrating < SlackError; end
161
+ class ExternalTeamNotConnectedToThisOrg < SlackError; end
156
162
  class ExternallySharedOrDisconnectedChannel < SlackError; end
157
163
  class FailToGetTeamsForRestrictedUser < SlackError; end
158
164
  class FailedAddingCollaborator < SlackError; end
@@ -178,6 +184,7 @@ module Slack
178
184
  class FailedToSetUserToAdmin < SlackError; end
179
185
  class FailedToSetUserToOwner < SlackError; end
180
186
  class FailedToSetUserToRegular < SlackError; end
187
+ class FailedToStartTrial < SlackError; end
181
188
  class FailedToUnlinkChannel < SlackError; end
182
189
  class FailedToUnshare < SlackError; end
183
190
  class FailedToValidateCaller < SlackError; end
@@ -196,6 +203,9 @@ module Slack
196
203
  class FileNotShared < SlackError; end
197
204
  class FileNotYetAvailable < SlackError; end
198
205
  class FileUnderReview < SlackError; end
206
+ class FileUpdateFailed < SlackError; end
207
+ class FileUploadSizeRestricted < SlackError; end
208
+ class FileUploadsDisabled < SlackError; end
199
209
  class ForbiddenHandle < SlackError; end
200
210
  class ForbiddenTeam < SlackError; end
201
211
  class GroupAlreadyLinkedToChannel < SlackError; end
@@ -241,6 +251,7 @@ module Slack
241
251
  class InvalidEntityId < SlackError; end
242
252
  class InvalidEventContext < SlackError; end
243
253
  class InvalidExternalId < SlackError; end
254
+ class InvalidFieldOrData < SlackError; end
244
255
  class InvalidFormData < SlackError; end
245
256
  class InvalidGrantType < SlackError; end
246
257
  class InvalidGroupProvided < SlackError; end
@@ -250,6 +261,8 @@ module Slack
250
261
  class InvalidLink < SlackError; end
251
262
  class InvalidManifest < SlackError; end
252
263
  class InvalidMetadataFilterKeys < SlackError; end
264
+ class InvalidMetadataFormat < SlackError; end
265
+ class InvalidMetadataSchema < SlackError; end
253
266
  class InvalidName < SlackError; end
254
267
  class InvalidNameMaxlength < SlackError; end
255
268
  class InvalidNamePunctuation < SlackError; end
@@ -319,13 +332,16 @@ module Slack
319
332
  class LimitRequired < SlackError; end
320
333
  class LinkNotFound < SlackError; end
321
334
  class MalwareDetected < SlackError; end
335
+ class ManagedChannelNotSupported < SlackError; end
322
336
  class MemberAnalyticsDisabled < SlackError; end
323
337
  class MemberLimitExceeded < SlackError; end
324
338
  class MessageNotFound < SlackError; end
325
339
  class MessageTooLong < SlackError; end
326
340
  class MessagesTabDisabled < SlackError; end
341
+ class MetadataMustBeSentFromApp < SlackError; end
327
342
  class MetadataNotAvailable < SlackError; end
328
343
  class MetadataOnlyDoesNotSupportDate < SlackError; end
344
+ class MetadataTooLarge < SlackError; end
329
345
  class MethodDeprecated < SlackError; end
330
346
  class MethodNotSupportedForChannelType < SlackError; end
331
347
  class MigrationInProgress < SlackError; end
@@ -360,6 +376,7 @@ module Slack
360
376
  class NoAliasSelected < SlackError; end
361
377
  class NoBotUserForApp < SlackError; end
362
378
  class NoChannel < SlackError; end
379
+ class NoChannelMemberships < SlackError; end
363
380
  class NoDualBroadcastContentUpdate < SlackError; end
364
381
  class NoImageUploaded < SlackError; end
365
382
  class NoItemSpecified < SlackError; end
@@ -374,7 +391,6 @@ module Slack
374
391
  class NoTeamsToDisconnect < SlackError; end
375
392
  class NoText < SlackError; end
376
393
  class NoUser < SlackError; end
377
- class NoUserProvided < SlackError; end
378
394
  class NoUsersProvided < SlackError; end
379
395
  class NotAdmin < SlackError; end
380
396
  class NotAllowed < SlackError; end
@@ -401,6 +417,7 @@ module Slack
401
417
  class NotReactable < SlackError; end
402
418
  class NotStarred < SlackError; end
403
419
  class NotSupported < SlackError; end
420
+ class NotVisible < SlackError; end
404
421
  class OauthAuthorizationUrlMismatch < SlackError; end
405
422
  class OneOrMoreInvalidChannels < SlackError; end
406
423
  class OrgLevelEmailDisplayDisabled < SlackError; end
@@ -418,6 +435,7 @@ module Slack
418
435
  class PermissionDenied < SlackError; end
419
436
  class PlanUpgradeRequired < SlackError; end
420
437
  class PolicyNotFound < SlackError; end
438
+ class PostingToChannelDenied < SlackError; end
421
439
  class PostingToGeneralChannelDenied < SlackError; end
422
440
  class PreviewFeatureNotAvailable < SlackError; end
423
441
  class PrimaryUsergroupNotFound < SlackError; end
@@ -440,8 +458,8 @@ module Slack
440
458
  class RestrictedActionReadOnlyChannel < SlackError; end
441
459
  class RestrictedActionThreadLocked < SlackError; end
442
460
  class RestrictedActionThreadOnlyChannel < SlackError; end
461
+ class RestrictedTooMany < SlackError; end
443
462
  class RetentionOverrideNotAllowed < SlackError; end
444
- class RtmConnectRequired < SlackError; end
445
463
  class SentRecently < SlackError; end
446
464
  class ServiceUnavailable < SlackError; end
447
465
  class SessionExpired < SlackError; end
@@ -452,11 +470,13 @@ module Slack
452
470
  class SlackConnectClipSharingBlocked < SlackError; end
453
471
  class SlackConnectFileLinkSharingBlocked < SlackError; end
454
472
  class SlackConnectFileUploadSharingBlocked < SlackError; end
473
+ class SnippetTooLarge < SlackError; end
455
474
  class SnoozeEndFailed < SlackError; end
456
475
  class SnoozeFailed < SlackError; end
457
- class SnoozeNotActive < SlackError; end
458
476
  class SpecifyEnterpriseOrTeams < SlackError; end
477
+ class StorageLimitReached < SlackError; end
459
478
  class SubteamMaxUsersExceeded < SlackError; end
479
+ class SudoRequired < SlackError; end
460
480
  class TeamAccessNotGranted < SlackError; end
461
481
  class TeamAddedToOrg < SlackError; end
462
482
  class TeamIdOrOrgRequired < SlackError; end
@@ -496,11 +516,16 @@ module Slack
496
516
  class TriggerExpired < SlackError; end
497
517
  class TwoFactorSetupRequired < SlackError; end
498
518
  class UnableToLinkIdpGroupAndChannel < SlackError; end
519
+ class UnableToProcessPostRequest < SlackError; end
499
520
  class UnableToUnlinkIdpGroupAndChannel < SlackError; end
500
521
  class UnableToUpdateExistingSessions < SlackError; end
501
522
  class UnknownError < SlackError; end
502
523
  class UnknownMethod < SlackError; end
524
+ class UnknownSnippetType < SlackError; end
525
+ class UnknownSubtype < SlackError; end
503
526
  class UnknownType < SlackError; end
527
+ class UnsupportedActionDescribe < SlackError; end
528
+ class UnsupportedActionPut < SlackError; end
504
529
  class UnsupportedArguments < SlackError; end
505
530
  class UnsupportedContextType < SlackError; end
506
531
  class UnsupportedTeamType < SlackError; end
@@ -547,8 +572,10 @@ module Slack
547
572
  'already_processed' => AlreadyProcessed,
548
573
  'already_reacted' => AlreadyReacted,
549
574
  'already_starred' => AlreadyStarred,
575
+ 'alt_txt_too_large' => AltTxtTooLarge,
550
576
  'app_management_app_not_installed_on_org' => AppManagementAppNotInstalledOnOrg,
551
577
  'app_missing_action_url' => AppMissingActionUrl,
578
+ 'app_not_eligible' => AppNotEligible,
552
579
  'app_not_found' => AppNotFound,
553
580
  'app_restricted_org_wide' => AppRestrictedOrgWide,
554
581
  'approval_inactive' => ApprovalInactive,
@@ -569,6 +596,7 @@ module Slack
569
596
  'barrier_already_exists' => BarrierAlreadyExists,
570
597
  'barrier_not_found' => BarrierNotFound,
571
598
  'barriered_from_usergroups_not_found' => BarrieredFromUsergroupsNotFound,
599
+ 'block_mismatch' => BlockMismatch,
572
600
  'bot_not_found' => BotNotFound,
573
601
  'bot_user_required' => BotUserRequired,
574
602
  'bots_not_allowed' => BotsNotAllowed,
@@ -630,6 +658,7 @@ module Slack
630
658
  'channel_type_not_supported' => ChannelTypeNotSupported,
631
659
  'client_id_token_mismatch' => ClientIdTokenMismatch,
632
660
  'code_already_used' => CodeAlreadyUsed,
661
+ 'connected_team_passed_in_is_not_top_level_team' => ConnectedTeamPassedInIsNotTopLevelTeam,
633
662
  'connection_limit_exceeded' => ConnectionLimitExceeded,
634
663
  'connection_limit_exceeded_pending' => ConnectionLimitExceededPending,
635
664
  'could_not_archive_channel' => CouldNotArchiveChannel,
@@ -664,6 +693,7 @@ module Slack
664
693
  'email_taken' => EmailTaken,
665
694
  'emoji_limit_reached' => EmojiLimitReached,
666
695
  'emoji_not_found' => EmojiNotFound,
696
+ 'endpoint_unavailable' => EndpointUnavailable,
667
697
  'enterprise_is_restricted' => EnterpriseIsRestricted,
668
698
  'enterprise_not_found' => EnterpriseNotFound,
669
699
  'entity_not_found' => EntityNotFound,
@@ -681,6 +711,7 @@ module Slack
681
711
  'exchanged_trigger_id' => ExchangedTriggerId,
682
712
  'expired_trigger_id' => ExpiredTriggerId,
683
713
  'external_channel_migrating' => ExternalChannelMigrating,
714
+ 'external_team_not_connected_to_this_org' => ExternalTeamNotConnectedToThisOrg,
684
715
  'externally_shared_or_disconnected_channel' => ExternallySharedOrDisconnectedChannel,
685
716
  'fail_to_get_teams_for_restricted_user' => FailToGetTeamsForRestrictedUser,
686
717
  'failed_adding_collaborator' => FailedAddingCollaborator,
@@ -706,6 +737,7 @@ module Slack
706
737
  'failed_to_set_user_to_admin' => FailedToSetUserToAdmin,
707
738
  'failed_to_set_user_to_owner' => FailedToSetUserToOwner,
708
739
  'failed_to_set_user_to_regular' => FailedToSetUserToRegular,
740
+ 'failed_to_start_trial' => FailedToStartTrial,
709
741
  'failed_to_unlink_channel' => FailedToUnlinkChannel,
710
742
  'failed_to_unshare' => FailedToUnshare,
711
743
  'failed_to_validate_caller' => FailedToValidateCaller,
@@ -724,6 +756,9 @@ module Slack
724
756
  'file_not_shared' => FileNotShared,
725
757
  'file_not_yet_available' => FileNotYetAvailable,
726
758
  'file_under_review' => FileUnderReview,
759
+ 'file_update_failed' => FileUpdateFailed,
760
+ 'file_upload_size_restricted' => FileUploadSizeRestricted,
761
+ 'file_uploads_disabled' => FileUploadsDisabled,
727
762
  'forbidden_handle' => ForbiddenHandle,
728
763
  'forbidden_team' => ForbiddenTeam,
729
764
  'group_already_linked_to_channel' => GroupAlreadyLinkedToChannel,
@@ -769,6 +804,7 @@ module Slack
769
804
  'invalid_entity_id' => InvalidEntityId,
770
805
  'invalid_event_context' => InvalidEventContext,
771
806
  'invalid_external_id' => InvalidExternalId,
807
+ 'invalid_field_or_data' => InvalidFieldOrData,
772
808
  'invalid_form_data' => InvalidFormData,
773
809
  'invalid_grant_type' => InvalidGrantType,
774
810
  'invalid_group_provided' => InvalidGroupProvided,
@@ -778,6 +814,8 @@ module Slack
778
814
  'invalid_link' => InvalidLink,
779
815
  'invalid_manifest' => InvalidManifest,
780
816
  'invalid_metadata_filter_keys' => InvalidMetadataFilterKeys,
817
+ 'invalid_metadata_format' => InvalidMetadataFormat,
818
+ 'invalid_metadata_schema' => InvalidMetadataSchema,
781
819
  'invalid_name' => InvalidName,
782
820
  'invalid_name_maxlength' => InvalidNameMaxlength,
783
821
  'invalid_name_punctuation' => InvalidNamePunctuation,
@@ -847,13 +885,16 @@ module Slack
847
885
  'limit_required' => LimitRequired,
848
886
  'link_not_found' => LinkNotFound,
849
887
  'malware_detected' => MalwareDetected,
888
+ 'managed_channel_not_supported' => ManagedChannelNotSupported,
850
889
  'member_analytics_disabled' => MemberAnalyticsDisabled,
851
890
  'member_limit_exceeded' => MemberLimitExceeded,
852
891
  'message_not_found' => MessageNotFound,
853
892
  'message_too_long' => MessageTooLong,
854
893
  'messages_tab_disabled' => MessagesTabDisabled,
894
+ 'metadata_must_be_sent_from_app' => MetadataMustBeSentFromApp,
855
895
  'metadata_not_available' => MetadataNotAvailable,
856
896
  'metadata_only_does_not_support_date' => MetadataOnlyDoesNotSupportDate,
897
+ 'metadata_too_large' => MetadataTooLarge,
857
898
  'method_deprecated' => MethodDeprecated,
858
899
  'method_not_supported_for_channel_type' => MethodNotSupportedForChannelType,
859
900
  'migration_in_progress' => MigrationInProgress,
@@ -888,6 +929,7 @@ module Slack
888
929
  'no_alias_selected' => NoAliasSelected,
889
930
  'no_bot_user_for_app' => NoBotUserForApp,
890
931
  'no_channel' => NoChannel,
932
+ 'no_channel_memberships' => NoChannelMemberships,
891
933
  'no_dual_broadcast_content_update' => NoDualBroadcastContentUpdate,
892
934
  'no_image_uploaded' => NoImageUploaded,
893
935
  'no_item_specified' => NoItemSpecified,
@@ -902,7 +944,6 @@ module Slack
902
944
  'no_teams_to_disconnect' => NoTeamsToDisconnect,
903
945
  'no_text' => NoText,
904
946
  'no_user' => NoUser,
905
- 'no_user_provided' => NoUserProvided,
906
947
  'no_users_provided' => NoUsersProvided,
907
948
  'not_admin' => NotAdmin,
908
949
  'not_allowed' => NotAllowed,
@@ -929,6 +970,7 @@ module Slack
929
970
  'not_reactable' => NotReactable,
930
971
  'not_starred' => NotStarred,
931
972
  'not_supported' => NotSupported,
973
+ 'not_visible' => NotVisible,
932
974
  'oauth_authorization_url_mismatch' => OauthAuthorizationUrlMismatch,
933
975
  'one_or_more_invalid_channels' => OneOrMoreInvalidChannels,
934
976
  'org_level_email_display_disabled' => OrgLevelEmailDisplayDisabled,
@@ -946,6 +988,7 @@ module Slack
946
988
  'permission_denied' => PermissionDenied,
947
989
  'plan_upgrade_required' => PlanUpgradeRequired,
948
990
  'policy_not_found' => PolicyNotFound,
991
+ 'posting_to_channel_denied' => PostingToChannelDenied,
949
992
  'posting_to_general_channel_denied' => PostingToGeneralChannelDenied,
950
993
  'preview_feature_not_available' => PreviewFeatureNotAvailable,
951
994
  'primary_usergroup_not_found' => PrimaryUsergroupNotFound,
@@ -968,8 +1011,8 @@ module Slack
968
1011
  'restricted_action_read_only_channel' => RestrictedActionReadOnlyChannel,
969
1012
  'restricted_action_thread_locked' => RestrictedActionThreadLocked,
970
1013
  'restricted_action_thread_only_channel' => RestrictedActionThreadOnlyChannel,
1014
+ 'restricted_too_many' => RestrictedTooMany,
971
1015
  'retention_override_not_allowed' => RetentionOverrideNotAllowed,
972
- 'rtm_connect_required' => RtmConnectRequired,
973
1016
  'sent_recently' => SentRecently,
974
1017
  'service_unavailable' => ServiceUnavailable,
975
1018
  'session_expired' => SessionExpired,
@@ -980,11 +1023,13 @@ module Slack
980
1023
  'slack_connect_clip_sharing_blocked' => SlackConnectClipSharingBlocked,
981
1024
  'slack_connect_file_link_sharing_blocked' => SlackConnectFileLinkSharingBlocked,
982
1025
  'slack_connect_file_upload_sharing_blocked' => SlackConnectFileUploadSharingBlocked,
1026
+ 'snippet_too_large' => SnippetTooLarge,
983
1027
  'snooze_end_failed' => SnoozeEndFailed,
984
1028
  'snooze_failed' => SnoozeFailed,
985
- 'snooze_not_active' => SnoozeNotActive,
986
1029
  'specify_enterprise_or_teams' => SpecifyEnterpriseOrTeams,
1030
+ 'storage_limit_reached' => StorageLimitReached,
987
1031
  'subteam_max_users_exceeded' => SubteamMaxUsersExceeded,
1032
+ 'sudo_required' => SudoRequired,
988
1033
  'team_access_not_granted' => TeamAccessNotGranted,
989
1034
  'team_added_to_org' => TeamAddedToOrg,
990
1035
  'team_id_or_org_required' => TeamIdOrOrgRequired,
@@ -1024,11 +1069,16 @@ module Slack
1024
1069
  'trigger_expired' => TriggerExpired,
1025
1070
  'two_factor_setup_required' => TwoFactorSetupRequired,
1026
1071
  'unable_to_link_idp_group_and_channel' => UnableToLinkIdpGroupAndChannel,
1072
+ 'unable_to_process_post_request' => UnableToProcessPostRequest,
1027
1073
  'unable_to_unlink_idp_group_and_channel' => UnableToUnlinkIdpGroupAndChannel,
1028
1074
  'unable_to_update_existing_sessions' => UnableToUpdateExistingSessions,
1029
1075
  'unknown_error' => UnknownError,
1030
1076
  'unknown_method' => UnknownMethod,
1077
+ 'unknown_snippet_type' => UnknownSnippetType,
1078
+ 'unknown_subtype' => UnknownSubtype,
1031
1079
  'unknown_type' => UnknownType,
1080
+ 'unsupported_action_describe' => UnsupportedActionDescribe,
1081
+ 'unsupported_action_put' => UnsupportedActionPut,
1032
1082
  'unsupported_arguments' => UnsupportedArguments,
1033
1083
  'unsupported_context_type' => UnsupportedContextType,
1034
1084
  'unsupported_team_type' => UnsupportedTeamType,
@@ -14,7 +14,7 @@ module Slack
14
14
  # Channel to get ID for, prefixed with #.
15
15
  def conversations_id(options = {})
16
16
  name = options[:channel]
17
- throw ArgumentError.new('Required arguments :channel missing') if name.nil?
17
+ raise ArgumentError, 'Required arguments :channel missing' if name.nil?
18
18
 
19
19
  id_for :channel, name, '#', :conversations_list, :channels, 'channel_not_found'
20
20
  end
@@ -14,7 +14,7 @@ module Slack
14
14
  # User to get ID for, prefixed with '@'.
15
15
  def users_id(options = {})
16
16
  name = options[:user]
17
- throw ArgumentError.new('Required arguments :user missing') if name.nil?
17
+ raise ArgumentError, 'Required arguments :user missing' if name.nil?
18
18
 
19
19
  id_for :user, name, '@', :users_list, :members, 'user_not_found'
20
20
  end
@@ -14,7 +14,8 @@ if defined?(Picky)
14
14
  # Free-formed text to search for.
15
15
  def users_search(options = {})
16
16
  query = options[:user]
17
- throw ArgumentError.new('Required arguments :user missing') if query.nil?
17
+ raise ArgumentError, 'Required arguments :user missing' if query.nil?
18
+
18
19
  index = Picky::Index.new(:users) do
19
20
  category :name
20
21
  category :first_name
@@ -1,15 +1,14 @@
1
1
  diff --git a/lib/slack/web/api/endpoints/chat.rb b/lib/slack/web/api/endpoints/chat.rb
2
- index d090ae2..50186d5 100644
2
+ index 701cd1e..07acc40 100644
3
3
  --- a/lib/slack/web/api/endpoints/chat.rb
4
4
  +++ b/lib/slack/web/api/endpoints/chat.rb
5
- @@ -121,10 +121,22 @@ module Slack
6
- # @see https://api.slack.com/methods/chat.postEphemeral
5
+ @@ -122,9 +122,21 @@ module Slack
7
6
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postEphemeral.json
8
7
  def chat_postEphemeral(options = {})
9
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
10
- - throw ArgumentError.new('Required arguments :text missing') if options[:text].nil?
11
- + throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
12
- throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
8
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
9
+ - raise ArgumentError, 'Required arguments :text missing' if options[:text].nil?
10
+ + raise ArgumentError, 'Required arguments :text, :attachments or :blocks missing' if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
11
+ raise ArgumentError, 'Required arguments :user missing' if options[:user].nil?
13
12
  options = options.merge(user: users_id(options)['user']['id']) if options[:user]
14
13
  + # attachments must be passed as an encoded JSON string
15
14
  + if options.key?(:attachments)
@@ -26,11 +25,11 @@ index d090ae2..50186d5 100644
26
25
  post('chat.postEphemeral', options)
27
26
  end
28
27
 
29
- @@ -168,6 +179,19 @@ module Slack
28
+ @@ -167,6 +179,19 @@ module Slack
30
29
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postMessage.json
31
30
  def chat_postMessage(options = {})
32
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
33
- + throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
31
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
32
+ + raise ArgumentError, 'Required arguments :text, :attachments or :blocks missing' if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
34
33
  + # attachments must be passed as an encoded JSON string
35
34
  + if options.key?(:attachments)
36
35
  + attachments = options[:attachments]
@@ -46,12 +45,12 @@ index d090ae2..50186d5 100644
46
45
  post('chat.postMessage', options)
47
46
  end
48
47
 
49
- @@ -257,8 +281,21 @@ module Slack
48
+ @@ -268,8 +293,21 @@ module Slack
50
49
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.update.json
51
50
  def chat_update(options = {})
52
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
53
- + throw ArgumentError.new('Required arguments :text, :attachments, :blocks or :reply_broadcast missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil? && options[:reply_broadcast].nil?
54
- throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
51
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
52
+ + raise ArgumentError, 'Required arguments :text, :attachments, :blocks or :reply_broadcast missing' if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil? && options[:reply_broadcast].nil?
53
+ raise ArgumentError, 'Required arguments :ts missing' if options[:ts].nil?
55
54
  options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
56
55
  + # attachments must be passed as an encoded JSON string
57
56
  + if options.key?(:attachments)