slack-ruby-client 3.0.0 → 3.2.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 (294) hide show
  1. checksums.yaml +4 -4
  2. data/.coveralls.yml +0 -0
  3. data/.github/FUNDING.yml +0 -0
  4. data/.github/dependabot.yml +0 -0
  5. data/.github/workflows/danger-comment.yml +11 -0
  6. data/.github/workflows/danger.yml +13 -0
  7. data/.github/workflows/lint.yml +1 -1
  8. data/.github/workflows/test.yml +1 -1
  9. data/.github/workflows/update_api.yml +8 -10
  10. data/.gitignore +0 -0
  11. data/.gitmodules +0 -0
  12. data/.rspec +0 -0
  13. data/.rubocop.yml +0 -0
  14. data/.rubocop_todo.yml +5 -2
  15. data/.ruby-version +0 -0
  16. data/CHANGELOG.md +14 -0
  17. data/CONTRIBUTING.md +0 -0
  18. data/Dangerfile +4 -1
  19. data/Gemfile +3 -0
  20. data/LICENSE.md +0 -0
  21. data/README.md +1 -1
  22. data/RELEASING.md +0 -0
  23. data/Rakefile +0 -0
  24. data/SECURITY.md +0 -0
  25. data/UPGRADING.md +4 -0
  26. data/bin/commands/admin_analytics.rb +0 -0
  27. data/bin/commands/admin_analytics_messages.rb +36 -0
  28. data/bin/commands/admin_apps.rb +3 -0
  29. data/bin/commands/admin_apps_activities.rb +0 -0
  30. data/bin/commands/admin_apps_approved.rb +0 -0
  31. data/bin/commands/admin_apps_config.rb +0 -0
  32. data/bin/commands/admin_apps_requests.rb +0 -0
  33. data/bin/commands/admin_apps_restricted.rb +0 -0
  34. data/bin/commands/admin_audit_anomaly_allow.rb +0 -0
  35. data/bin/commands/admin_auth_policy.rb +0 -0
  36. data/bin/commands/admin_barriers.rb +0 -0
  37. data/bin/commands/admin_conversations.rb +10 -0
  38. data/bin/commands/admin_conversations_ekm.rb +0 -0
  39. data/bin/commands/admin_conversations_restrictAccess.rb +0 -0
  40. data/bin/commands/admin_emoji.rb +0 -0
  41. data/bin/commands/admin_functions.rb +3 -2
  42. data/bin/commands/admin_functions_permissions.rb +3 -2
  43. data/bin/commands/admin_inviteRequests.rb +0 -0
  44. data/bin/commands/admin_inviteRequests_approved.rb +0 -0
  45. data/bin/commands/admin_inviteRequests_denied.rb +0 -0
  46. data/bin/commands/admin_roles.rb +0 -0
  47. data/bin/commands/admin_teams.rb +0 -0
  48. data/bin/commands/admin_teams_admins.rb +0 -0
  49. data/bin/commands/admin_teams_owners.rb +0 -0
  50. data/bin/commands/admin_teams_settings.rb +0 -0
  51. data/bin/commands/admin_usergroups.rb +0 -0
  52. data/bin/commands/admin_users.rb +20 -8
  53. data/bin/commands/admin_users_session.rb +0 -0
  54. data/bin/commands/admin_users_unsupportedVersions.rb +0 -0
  55. data/bin/commands/admin_workflows.rb +0 -0
  56. data/bin/commands/admin_workflows_collaborators.rb +0 -0
  57. data/bin/commands/admin_workflows_permissions.rb +0 -0
  58. data/bin/commands/admin_workflows_triggers_types_permissions.rb +4 -3
  59. data/bin/commands/api.rb +0 -0
  60. data/bin/commands/apps.rb +0 -0
  61. data/bin/commands/apps_activities.rb +0 -0
  62. data/bin/commands/apps_auth_external.rb +0 -0
  63. data/bin/commands/apps_connections.rb +0 -0
  64. data/bin/commands/apps_datastore.rb +0 -0
  65. data/bin/commands/apps_event_authorizations.rb +0 -0
  66. data/bin/commands/apps_icon.rb +22 -0
  67. data/bin/commands/apps_manifest.rb +7 -6
  68. data/bin/commands/apps_user_connection.rb +21 -0
  69. data/bin/commands/assistant_search.rb +9 -5
  70. data/bin/commands/assistant_threads.rb +5 -1
  71. data/bin/commands/auth.rb +0 -0
  72. data/bin/commands/auth_teams.rb +0 -0
  73. data/bin/commands/blocks.rb +22 -0
  74. data/bin/commands/bookmarks.rb +6 -6
  75. data/bin/commands/bots.rb +0 -0
  76. data/bin/commands/calls.rb +0 -0
  77. data/bin/commands/calls_participants.rb +0 -0
  78. data/bin/commands/canvases.rb +0 -0
  79. data/bin/commands/canvases_access.rb +0 -0
  80. data/bin/commands/canvases_sections.rb +0 -0
  81. data/bin/commands/chat.rb +50 -4
  82. data/bin/commands/chat_scheduledMessages.rb +0 -0
  83. data/bin/commands/conversations.rb +1 -1
  84. data/bin/commands/conversations_canvases.rb +0 -0
  85. data/bin/commands/conversations_externalInvitePermissions.rb +0 -0
  86. data/bin/commands/conversations_requestSharedInvite.rb +0 -0
  87. data/bin/commands/dialog.rb +0 -0
  88. data/bin/commands/dnd.rb +0 -0
  89. data/bin/commands/emoji.rb +0 -0
  90. data/bin/commands/entity.rb +24 -0
  91. data/bin/commands/files.rb +3 -3
  92. data/bin/commands/files_comments.rb +0 -0
  93. data/bin/commands/files_remote.rb +0 -0
  94. data/bin/commands/functions.rb +0 -0
  95. data/bin/commands/functions_distributions_permissions.rb +0 -0
  96. data/bin/commands/functions_workflows_steps.rb +0 -0
  97. data/bin/commands/functions_workflows_steps_responses.rb +0 -0
  98. data/bin/commands/migration.rb +0 -0
  99. data/bin/commands/oauth.rb +0 -0
  100. data/bin/commands/oauth_v2.rb +2 -0
  101. data/bin/commands/oauth_v2_user.rb +27 -0
  102. data/bin/commands/openid_connect.rb +1 -0
  103. data/bin/commands/pins.rb +0 -0
  104. data/bin/commands/reactions.rb +0 -0
  105. data/bin/commands/reminders.rb +0 -0
  106. data/bin/commands/rtm.rb +0 -0
  107. data/bin/commands/search.rb +0 -0
  108. data/bin/commands/slackLists.rb +0 -0
  109. data/bin/commands/slackLists_access.rb +0 -0
  110. data/bin/commands/slackLists_download.rb +0 -0
  111. data/bin/commands/slackLists_items.rb +0 -0
  112. data/bin/commands/stars.rb +0 -0
  113. data/bin/commands/team.rb +0 -0
  114. data/bin/commands/team_billing.rb +0 -0
  115. data/bin/commands/team_externalTeams.rb +0 -0
  116. data/bin/commands/team_preferences.rb +0 -0
  117. data/bin/commands/team_profile.rb +0 -0
  118. data/bin/commands/tooling_tokens.rb +0 -0
  119. data/bin/commands/usergroups.rb +0 -0
  120. data/bin/commands/usergroups_users.rb +0 -0
  121. data/bin/commands/users.rb +2 -2
  122. data/bin/commands/users_admin.rb +0 -0
  123. data/bin/commands/users_discoverableContacts.rb +0 -0
  124. data/bin/commands/users_prefs.rb +0 -0
  125. data/bin/commands/users_profile.rb +0 -0
  126. data/bin/commands/views.rb +1 -0
  127. data/bin/commands/workflows_featured.rb +0 -0
  128. data/bin/commands/workflows_triggers_permissions.rb +0 -0
  129. data/examples/files_upload_v2/.env.example +0 -0
  130. data/examples/files_upload_v2/Gemfile +0 -0
  131. data/examples/files_upload_v2/README.md +0 -0
  132. data/examples/files_upload_v2/files_upload_v2.rb +0 -0
  133. data/examples/hi_web/Gemfile +0 -0
  134. data/examples/hi_web/hi.gif +0 -0
  135. data/examples/hi_web/hi.rb +0 -0
  136. data/examples/new_ticket/Gemfile +0 -0
  137. data/examples/new_ticket/new_ticket.rb +0 -0
  138. data/examples/oauth_v2/.env.example +0 -0
  139. data/examples/oauth_v2/Gemfile +0 -0
  140. data/examples/oauth_v2/README.md +3 -3
  141. data/lib/slack/config.rb +0 -0
  142. data/lib/slack/events/config.rb +0 -0
  143. data/lib/slack/events/request.rb +0 -0
  144. data/lib/slack/logger.rb +0 -0
  145. data/lib/slack/messages/formatting.rb +0 -0
  146. data/lib/slack/messages/message.rb +0 -0
  147. data/lib/slack/utils/security.rb +0 -0
  148. data/lib/slack/version.rb +1 -1
  149. data/lib/slack/web/api/endpoints/admin_analytics.rb +0 -0
  150. data/lib/slack/web/api/endpoints/admin_analytics_messages.rb +64 -0
  151. data/lib/slack/web/api/endpoints/admin_apps.rb +6 -0
  152. data/lib/slack/web/api/endpoints/admin_apps_activities.rb +0 -0
  153. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +0 -0
  154. data/lib/slack/web/api/endpoints/admin_apps_config.rb +0 -0
  155. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +0 -0
  156. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +0 -0
  157. data/lib/slack/web/api/endpoints/admin_audit_anomaly_allow.rb +0 -0
  158. data/lib/slack/web/api/endpoints/admin_auth_policy.rb +0 -0
  159. data/lib/slack/web/api/endpoints/admin_barriers.rb +0 -0
  160. data/lib/slack/web/api/endpoints/admin_conversations.rb +15 -0
  161. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +0 -0
  162. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +0 -0
  163. data/lib/slack/web/api/endpoints/admin_emoji.rb +0 -0
  164. data/lib/slack/web/api/endpoints/admin_functions.rb +3 -1
  165. data/lib/slack/web/api/endpoints/admin_functions_permissions.rb +3 -2
  166. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +0 -0
  167. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +0 -0
  168. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +0 -0
  169. data/lib/slack/web/api/endpoints/admin_roles.rb +0 -0
  170. data/lib/slack/web/api/endpoints/admin_teams.rb +0 -0
  171. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +0 -0
  172. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +0 -0
  173. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +0 -0
  174. data/lib/slack/web/api/endpoints/admin_usergroups.rb +0 -0
  175. data/lib/slack/web/api/endpoints/admin_users.rb +23 -6
  176. data/lib/slack/web/api/endpoints/admin_users_session.rb +0 -0
  177. data/lib/slack/web/api/endpoints/admin_users_unsupportedVersions.rb +0 -0
  178. data/lib/slack/web/api/endpoints/admin_workflows.rb +0 -0
  179. data/lib/slack/web/api/endpoints/admin_workflows_collaborators.rb +0 -0
  180. data/lib/slack/web/api/endpoints/admin_workflows_permissions.rb +0 -0
  181. data/lib/slack/web/api/endpoints/admin_workflows_triggers_types_permissions.rb +3 -3
  182. data/lib/slack/web/api/endpoints/api.rb +0 -0
  183. data/lib/slack/web/api/endpoints/apps.rb +0 -0
  184. data/lib/slack/web/api/endpoints/apps_activities.rb +0 -0
  185. data/lib/slack/web/api/endpoints/apps_auth_external.rb +0 -0
  186. data/lib/slack/web/api/endpoints/apps_connections.rb +0 -0
  187. data/lib/slack/web/api/endpoints/apps_datastore.rb +0 -0
  188. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +0 -0
  189. data/lib/slack/web/api/endpoints/apps_icon.rb +28 -0
  190. data/lib/slack/web/api/endpoints/apps_manifest.rb +5 -3
  191. data/lib/slack/web/api/endpoints/apps_user_connection.rb +27 -0
  192. data/lib/slack/web/api/endpoints/assistant_search.rb +12 -4
  193. data/lib/slack/web/api/endpoints/assistant_threads.rb +10 -3
  194. data/lib/slack/web/api/endpoints/auth.rb +0 -0
  195. data/lib/slack/web/api/endpoints/auth_teams.rb +0 -0
  196. data/lib/slack/web/api/endpoints/blocks.rb +28 -0
  197. data/lib/slack/web/api/endpoints/bookmarks.rb +6 -12
  198. data/lib/slack/web/api/endpoints/bots.rb +0 -0
  199. data/lib/slack/web/api/endpoints/calls.rb +0 -0
  200. data/lib/slack/web/api/endpoints/calls_participants.rb +0 -0
  201. data/lib/slack/web/api/endpoints/canvases.rb +0 -0
  202. data/lib/slack/web/api/endpoints/canvases_access.rb +0 -0
  203. data/lib/slack/web/api/endpoints/canvases_sections.rb +0 -0
  204. data/lib/slack/web/api/endpoints/chat.rb +95 -12
  205. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +0 -0
  206. data/lib/slack/web/api/endpoints/conversations.rb +1 -1
  207. data/lib/slack/web/api/endpoints/conversations_canvases.rb +0 -0
  208. data/lib/slack/web/api/endpoints/conversations_externalInvitePermissions.rb +0 -0
  209. data/lib/slack/web/api/endpoints/conversations_requestSharedInvite.rb +0 -0
  210. data/lib/slack/web/api/endpoints/dialog.rb +0 -0
  211. data/lib/slack/web/api/endpoints/dnd.rb +0 -0
  212. data/lib/slack/web/api/endpoints/emoji.rb +0 -0
  213. data/lib/slack/web/api/endpoints/entity.rb +32 -0
  214. data/lib/slack/web/api/endpoints/files.rb +2 -2
  215. data/lib/slack/web/api/endpoints/files_comments.rb +0 -0
  216. data/lib/slack/web/api/endpoints/files_remote.rb +0 -0
  217. data/lib/slack/web/api/endpoints/functions.rb +0 -0
  218. data/lib/slack/web/api/endpoints/functions_distributions_permissions.rb +0 -0
  219. data/lib/slack/web/api/endpoints/functions_workflows_steps.rb +0 -0
  220. data/lib/slack/web/api/endpoints/functions_workflows_steps_responses.rb +0 -0
  221. data/lib/slack/web/api/endpoints/migration.rb +0 -0
  222. data/lib/slack/web/api/endpoints/oauth.rb +0 -0
  223. data/lib/slack/web/api/endpoints/oauth_v2.rb +4 -0
  224. data/lib/slack/web/api/endpoints/oauth_v2_user.rb +37 -0
  225. data/lib/slack/web/api/endpoints/openid_connect.rb +2 -0
  226. data/lib/slack/web/api/endpoints/pins.rb +0 -0
  227. data/lib/slack/web/api/endpoints/reactions.rb +0 -0
  228. data/lib/slack/web/api/endpoints/reminders.rb +0 -0
  229. data/lib/slack/web/api/endpoints/rtm.rb +0 -0
  230. data/lib/slack/web/api/endpoints/search.rb +0 -0
  231. data/lib/slack/web/api/endpoints/slackLists.rb +0 -0
  232. data/lib/slack/web/api/endpoints/slackLists_access.rb +0 -0
  233. data/lib/slack/web/api/endpoints/slackLists_download.rb +0 -0
  234. data/lib/slack/web/api/endpoints/slackLists_items.rb +0 -0
  235. data/lib/slack/web/api/endpoints/stars.rb +0 -0
  236. data/lib/slack/web/api/endpoints/team.rb +0 -0
  237. data/lib/slack/web/api/endpoints/team_billing.rb +0 -0
  238. data/lib/slack/web/api/endpoints/team_externalTeams.rb +0 -0
  239. data/lib/slack/web/api/endpoints/team_preferences.rb +0 -0
  240. data/lib/slack/web/api/endpoints/team_profile.rb +0 -0
  241. data/lib/slack/web/api/endpoints/tooling_tokens.rb +0 -0
  242. data/lib/slack/web/api/endpoints/usergroups.rb +0 -0
  243. data/lib/slack/web/api/endpoints/usergroups_users.rb +0 -0
  244. data/lib/slack/web/api/endpoints/users.rb +1 -1
  245. data/lib/slack/web/api/endpoints/users_admin.rb +0 -0
  246. data/lib/slack/web/api/endpoints/users_discoverableContacts.rb +0 -0
  247. data/lib/slack/web/api/endpoints/users_prefs.rb +0 -0
  248. data/lib/slack/web/api/endpoints/users_profile.rb +0 -0
  249. data/lib/slack/web/api/endpoints/views.rb +1 -0
  250. data/lib/slack/web/api/endpoints/workflows_featured.rb +0 -0
  251. data/lib/slack/web/api/endpoints/workflows_triggers_permissions.rb +0 -0
  252. data/lib/slack/web/api/endpoints.rb +12 -0
  253. data/lib/slack/web/api/error.rb +0 -0
  254. data/lib/slack/web/api/errors/server_error.rb +0 -0
  255. data/lib/slack/web/api/errors/slack_error.rb +0 -0
  256. data/lib/slack/web/api/errors/too_many_requests_error.rb +0 -0
  257. data/lib/slack/web/api/errors.rb +178 -4
  258. data/lib/slack/web/api/helpers/files.rb +4 -1
  259. data/lib/slack/web/api/helpers.rb +0 -0
  260. data/lib/slack/web/api/mixins/conversations.id.rb +0 -0
  261. data/lib/slack/web/api/mixins/ids.id.rb +3 -1
  262. data/lib/slack/web/api/mixins/users.id.json +0 -0
  263. data/lib/slack/web/api/mixins/users.id.rb +0 -0
  264. data/lib/slack/web/api/mixins/users.search.json +0 -0
  265. data/lib/slack/web/api/mixins/users.search.rb +0 -0
  266. data/lib/slack/web/api/mixins.rb +0 -0
  267. data/lib/slack/web/api/options.rb +0 -0
  268. data/lib/slack/web/api/patches/.gitkeep +0 -0
  269. data/lib/slack/web/api/schema/group.json +0 -0
  270. data/lib/slack/web/api/schema/method.json +0 -0
  271. data/lib/slack/web/api/templates/command.erb +0 -0
  272. data/lib/slack/web/api/templates/endpoints.erb +0 -0
  273. data/lib/slack/web/api/templates/errors.erb +0 -0
  274. data/lib/slack/web/api/templates/method.erb +3 -1
  275. data/lib/slack/web/api/templates/method_spec.erb +32 -3
  276. data/lib/slack/web/client.rb +0 -0
  277. data/lib/slack/web/config.rb +0 -0
  278. data/lib/slack/web/faraday/connection.rb +0 -0
  279. data/lib/slack/web/faraday/options.rb +0 -0
  280. data/lib/slack/web/faraday/request.rb +0 -0
  281. data/lib/slack/web/faraday/response/raise_error.rb +0 -0
  282. data/lib/slack/web/faraday/response/wrap_error.rb +0 -0
  283. data/lib/slack/web/pagination/cursor.rb +0 -0
  284. data/lib/slack-ruby-client.rb +0 -0
  285. data/lib/slack.rb +0 -0
  286. data/lib/slack_ruby_client.rb +0 -0
  287. data/lib/tasks/git.rake +0 -0
  288. data/lib/tasks/update.rake +0 -0
  289. data/lib/tasks/web.rake +7 -2
  290. data/slack-ruby-client.gemspec +0 -0
  291. data/slack.png +0 -0
  292. metadata +17 -9
  293. data/.github/workflows/pr_lint.yml +0 -21
  294. data/Gemfile.danger +0 -6
@@ -29,6 +29,9 @@ module Slack
29
29
  # Comma-separated string of channel IDs where the file will be shared. If not specified the file will be private.
30
30
  # @option params [string] :initial_comment
31
31
  # The message text introducing the file in specified channels.
32
+ # @option params [string] :blocks
33
+ # A JSON-based array of structured rich text blocks, presented as a URL-encoded string.
34
+ # If the initial_comment field is provided, the blocks field is ignored.
32
35
  # @option params [string] :thread_ts
33
36
  # Provide another message's ts value to upload this file as a reply.
34
37
  # Never use a reply's ts value; use its parent instead.
@@ -49,7 +52,7 @@ module Slack
49
52
  channel_params = %i[channel channels channel_id].map { |param| params[param] }.compact
50
53
  raise ArgumentError, 'Only one of :channel, :channels, or :channel_id is required' if channel_params.size > 1
51
54
 
52
- complete_upload_request_params = params.slice(:initial_comment, :thread_ts)
55
+ complete_upload_request_params = params.slice(:initial_comment, :blocks, :thread_ts)
53
56
 
54
57
  if params[:channels]
55
58
  complete_upload_request_params[:channels] = Array(params[:channels]).map do |channel|
File without changes
File without changes
@@ -15,7 +15,9 @@ module Slack
15
15
  end
16
16
  end
17
17
 
18
- raise Slack::Web::Api::Errors::SlackError, "#{key}_not_found"
18
+ error_message = "#{key}_not_found"
19
+ error_class = Slack::Web::Api::Errors::ERROR_CLASSES[error_message] || Slack::Web::Api::Errors::SlackError
20
+ raise error_class, error_message
19
21
  end
20
22
  end
21
23
  end
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
@@ -40,8 +40,10 @@ module Slack
40
40
  <% data['arg_groups']&.each do |arg_group| %>
41
41
  <% next if arg_group['args'].size <= 1 %>
42
42
  <% arg_string = arg_group['args'].map { |arg_name| ":#{arg_name}" }.join(', ') %>
43
- <% if arg_group['mutually_exclusive'] %>
43
+ <% if arg_group['mutually_exclusive'] && arg_group['required'] != false %>
44
44
  raise ArgumentError, 'Exactly one of <%= arg_string %> is required' unless <%= arg_group['args'].map { |arg_name| "options[:#{arg_name}].nil?" }.join(' ^ ') %>
45
+ <% elsif arg_group['mutually_exclusive'] %>
46
+ raise ArgumentError, '<%= arg_string %> are mutually exclusive' if <%= arg_group['args'].map { |arg_name| "!options[:#{arg_name}].nil?" }.join(' && ') %>
45
47
  <% else %>
46
48
  raise ArgumentError, 'At least one of <%= arg_string %> is required' if <%= arg_group['args'].map { |arg_name| "options[:#{arg_name}].nil?"}.join(' && ') %>
47
49
  <% end %>
@@ -5,6 +5,21 @@ require 'spec_helper'
5
5
 
6
6
  RSpec.describe Slack::Web::Api::Endpoints::<%= group.gsub(".", "_").camelize %> do
7
7
  let(:client) { Slack::Web::Client.new }
8
+ <%
9
+ # Renders a Ruby literal as source code deterministically, regardless of the
10
+ # Ruby version used to run the generator (Hash#inspect's format for symbol
11
+ # keys changed in Ruby 3.4, which would otherwise cause spurious diffs).
12
+ ruby_literal = lambda do |val|
13
+ case val
14
+ when Hash
15
+ "{#{val.map { |k, v| "#{k}: #{ruby_literal.call(v)}" }.join(', ')}}"
16
+ when Array
17
+ "[#{val.map { |v| ruby_literal.call(v) }.join(', ')}]"
18
+ else
19
+ val.inspect
20
+ end
21
+ end
22
+ %>
8
23
  <% names.sort.each_with_index do |(name, data), index| %>
9
24
  <% next if data['mixin'] %>
10
25
  <% group_required_params = data['arg_groups']&.map { |grp| grp['args'].first if grp['args'].size > 1 } || [] %>
@@ -21,23 +36,37 @@ RSpec.describe Slack::Web::Api::Endpoints::<%= group.gsub(".", "_").camelize %>
21
36
  expect { client.<%= method_name %><%= params_except_required.empty? ? '' : "(#{params_except_required})" %> }.to raise_error ArgumentError, /Required arguments :<%= arg_name %> missing/
22
37
  end
23
38
  <% end %>
39
+ <% at_most_one_groups = data['arg_groups']&.select { |g| g['mutually_exclusive'] && g['required'] == false } || [] %>
24
40
  <% data['arg_groups']&.each do |arg_group| %>
25
41
  <% next if arg_group['args'].size <= 1 %>
42
+ <% at_most_one = arg_group['mutually_exclusive'] && arg_group['required'] == false %>
43
+ <% if at_most_one %>
44
+ it 'does not allow both <%= arg_group['args'].join(' and ') %>' do
45
+ <% else %>
26
46
  it 'requires one of <%= arg_group['args'].join(', ') %>' do
47
+ <% end %>
27
48
  <% params_except_required = example_params.reject { |name, _| arg_group['args'].include?(name) }.map { |name, val| "#{name}: %q[#{val}]" }.join(', ') %>
49
+ <% if at_most_one %>
50
+ <% error_message = 'mutually exclusive' %>
51
+ <% else %>
28
52
  <% error_message = arg_group['mutually_exclusive'] ? 'Exactly' : 'At least' %>
29
53
  expect { client.<%= method_name %><%= params_except_required.empty? ? '' : "(#{params_except_required})" %> }.to raise_error ArgumentError, /<%= error_message %> one of/
54
+ <% end %>
30
55
  <% (1..arg_group['args'].length).each do |n| %>
31
56
  <% arg_group['args'].combination(n) do |names| %>
32
57
  <% params = names.map { |name| "#{name}: %q[#{data['args'][name]['example']}]" }.join(', ') %>
33
58
  <% params = "#{params}, #{params_except_required}" unless params_except_required.empty? %>
34
- <% if n == 1 || !arg_group['mutually_exclusive'] %>
59
+ <% violates_at_most_one = at_most_one_groups.any? { |g| (names & g['args']).length > 1 } %>
60
+ <% if violates_at_most_one %>
61
+
62
+ expect { client.<%= method_name %><%= "(#{params})" %> }.to raise_error ArgumentError, /mutually exclusive/
63
+ <% elsif n == 1 || !arg_group['mutually_exclusive'] %>
35
64
 
36
65
  expect(client).to receive(:post).with('<%= group %>.<%= name %>', {<%= params %>})
37
66
  client.<%= method_name %><%= "(#{params})" %>
38
67
  <% else %>
39
68
 
40
- expect { client.<%= method_name %><%= "(#{params})" %> }.to raise_error ArgumentError, /<%= error_message %> one of/
69
+ expect { client.<%= method_name %><%= "(#{params})" %> }.to raise_error ArgumentError, /<%= at_most_one ? error_message : "#{error_message} one of" %>/
41
70
  <% end %>
42
71
  <% end %>
43
72
  <% end %>
@@ -45,7 +74,7 @@ RSpec.describe Slack::Web::Api::Endpoints::<%= group.gsub(".", "_").camelize %>
45
74
  <% end %>
46
75
  <% if json_params.any? %>
47
76
  <% example_json_params = json_params.to_h { |name| [name, {data: ['data']}] } %>
48
- <% params = example_params.merge(example_json_params).map { |name, val| val = val.is_a?(String) ? "%q[#{val}]" : val; "#{name}: #{val}" }.join(', ') %>
77
+ <% params = example_params.merge(example_json_params).map { |name, val| val = val.is_a?(String) ? "%q[#{val}]" : ruby_literal.call(val); "#{name}: #{val}" }.join(', ') %>
49
78
  <% expected_params = example_params.merge(example_json_params.transform_values { |v| JSON.dump(v) }).map { |name, val| val = "%q[#{val}]"; "#{name}: #{val}" }.join(', ') %>
50
79
  it 'encodes <%= json_params.join(', ') %> as json' do
51
80
  expect(client).to receive(:post).with('<%= group %>.<%= name %>', {<%= expected_params %>})
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
data/lib/slack.rb CHANGED
File without changes
File without changes
data/lib/tasks/git.rake CHANGED
File without changes
File without changes
data/lib/tasks/web.rake CHANGED
@@ -27,6 +27,8 @@ namespace :slack do
27
27
  Dir.glob('lib/slack/web/api/mixins/**/*.json')
28
28
  ].flatten.each_with_object({}) do |path, result|
29
29
  file_name = File.basename(path, '.json')
30
+ next if File.dirname(path).split('/').last.start_with?('_') # skip _common, _errors, etc.
31
+
30
32
  prefix = file_name.split('.')[0..-2].join('.')
31
33
  name = file_name.split('.')[-1]
32
34
  result[prefix] ||= {}
@@ -57,13 +59,16 @@ namespace :slack do
57
59
 
58
60
  unless ENV.key?('SKIP_PATCH')
59
61
  Dir.glob("lib/slack/web/api/patches/#{group}*.patch").sort.each do |patch|
60
- puts "- patching #{patch}"
62
+ puts "#{' ' * 7}patching #{patch}"
61
63
  system("git apply #{patch}") || raise('failed to apply patch')
62
64
  end
63
65
  end
64
66
 
65
67
  # command
66
- raise "Missing group #{group}" unless groups.key?(group)
68
+ unless groups.key?(group)
69
+ puts "#{' ' * 7}undocumented group #{group}"
70
+ groups[group] = { 'name' => group }
71
+ end
67
72
 
68
73
  rendered_command = command_template.result(group: groups[group], names: names)
69
74
  File.write "bin/commands/#{snaked_group}.rb", rendered_command
File without changes
data/slack.png CHANGED
File without changes
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2025-09-22 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: faraday
@@ -94,7 +93,6 @@ dependencies:
94
93
  - - ">="
95
94
  - !ruby/object:Gem::Version
96
95
  version: '0'
97
- description:
98
96
  email: dblock@dblock.org
99
97
  executables:
100
98
  - slack
@@ -104,8 +102,9 @@ files:
104
102
  - ".coveralls.yml"
105
103
  - ".github/FUNDING.yml"
106
104
  - ".github/dependabot.yml"
105
+ - ".github/workflows/danger-comment.yml"
106
+ - ".github/workflows/danger.yml"
107
107
  - ".github/workflows/lint.yml"
108
- - ".github/workflows/pr_lint.yml"
109
108
  - ".github/workflows/test.yml"
110
109
  - ".github/workflows/update_api.yml"
111
110
  - ".gitignore"
@@ -118,7 +117,6 @@ files:
118
117
  - CONTRIBUTING.md
119
118
  - Dangerfile
120
119
  - Gemfile
121
- - Gemfile.danger
122
120
  - LICENSE.md
123
121
  - README.md
124
122
  - RELEASING.md
@@ -126,6 +124,7 @@ files:
126
124
  - SECURITY.md
127
125
  - UPGRADING.md
128
126
  - bin/commands/admin_analytics.rb
127
+ - bin/commands/admin_analytics_messages.rb
129
128
  - bin/commands/admin_apps.rb
130
129
  - bin/commands/admin_apps_activities.rb
131
130
  - bin/commands/admin_apps_approved.rb
@@ -164,11 +163,14 @@ files:
164
163
  - bin/commands/apps_connections.rb
165
164
  - bin/commands/apps_datastore.rb
166
165
  - bin/commands/apps_event_authorizations.rb
166
+ - bin/commands/apps_icon.rb
167
167
  - bin/commands/apps_manifest.rb
168
+ - bin/commands/apps_user_connection.rb
168
169
  - bin/commands/assistant_search.rb
169
170
  - bin/commands/assistant_threads.rb
170
171
  - bin/commands/auth.rb
171
172
  - bin/commands/auth_teams.rb
173
+ - bin/commands/blocks.rb
172
174
  - bin/commands/bookmarks.rb
173
175
  - bin/commands/bots.rb
174
176
  - bin/commands/calls.rb
@@ -185,6 +187,7 @@ files:
185
187
  - bin/commands/dialog.rb
186
188
  - bin/commands/dnd.rb
187
189
  - bin/commands/emoji.rb
190
+ - bin/commands/entity.rb
188
191
  - bin/commands/files.rb
189
192
  - bin/commands/files_comments.rb
190
193
  - bin/commands/files_remote.rb
@@ -195,6 +198,7 @@ files:
195
198
  - bin/commands/migration.rb
196
199
  - bin/commands/oauth.rb
197
200
  - bin/commands/oauth_v2.rb
201
+ - bin/commands/oauth_v2_user.rb
198
202
  - bin/commands/openid_connect.rb
199
203
  - bin/commands/pins.rb
200
204
  - bin/commands/reactions.rb
@@ -248,6 +252,7 @@ files:
248
252
  - lib/slack/version.rb
249
253
  - lib/slack/web/api/endpoints.rb
250
254
  - lib/slack/web/api/endpoints/admin_analytics.rb
255
+ - lib/slack/web/api/endpoints/admin_analytics_messages.rb
251
256
  - lib/slack/web/api/endpoints/admin_apps.rb
252
257
  - lib/slack/web/api/endpoints/admin_apps_activities.rb
253
258
  - lib/slack/web/api/endpoints/admin_apps_approved.rb
@@ -286,11 +291,14 @@ files:
286
291
  - lib/slack/web/api/endpoints/apps_connections.rb
287
292
  - lib/slack/web/api/endpoints/apps_datastore.rb
288
293
  - lib/slack/web/api/endpoints/apps_event_authorizations.rb
294
+ - lib/slack/web/api/endpoints/apps_icon.rb
289
295
  - lib/slack/web/api/endpoints/apps_manifest.rb
296
+ - lib/slack/web/api/endpoints/apps_user_connection.rb
290
297
  - lib/slack/web/api/endpoints/assistant_search.rb
291
298
  - lib/slack/web/api/endpoints/assistant_threads.rb
292
299
  - lib/slack/web/api/endpoints/auth.rb
293
300
  - lib/slack/web/api/endpoints/auth_teams.rb
301
+ - lib/slack/web/api/endpoints/blocks.rb
294
302
  - lib/slack/web/api/endpoints/bookmarks.rb
295
303
  - lib/slack/web/api/endpoints/bots.rb
296
304
  - lib/slack/web/api/endpoints/calls.rb
@@ -307,6 +315,7 @@ files:
307
315
  - lib/slack/web/api/endpoints/dialog.rb
308
316
  - lib/slack/web/api/endpoints/dnd.rb
309
317
  - lib/slack/web/api/endpoints/emoji.rb
318
+ - lib/slack/web/api/endpoints/entity.rb
310
319
  - lib/slack/web/api/endpoints/files.rb
311
320
  - lib/slack/web/api/endpoints/files_comments.rb
312
321
  - lib/slack/web/api/endpoints/files_remote.rb
@@ -317,6 +326,7 @@ files:
317
326
  - lib/slack/web/api/endpoints/migration.rb
318
327
  - lib/slack/web/api/endpoints/oauth.rb
319
328
  - lib/slack/web/api/endpoints/oauth_v2.rb
329
+ - lib/slack/web/api/endpoints/oauth_v2_user.rb
320
330
  - lib/slack/web/api/endpoints/openid_connect.rb
321
331
  - lib/slack/web/api/endpoints/pins.rb
322
332
  - lib/slack/web/api/endpoints/reactions.rb
@@ -387,7 +397,6 @@ licenses:
387
397
  metadata:
388
398
  rubygems_mfa_required: 'true'
389
399
  changelog_uri: https://github.com/slack-ruby/slack-ruby-client/blob/master/CHANGELOG.md
390
- post_install_message:
391
400
  rdoc_options: []
392
401
  require_paths:
393
402
  - lib
@@ -402,8 +411,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
402
411
  - !ruby/object:Gem::Version
403
412
  version: 1.3.6
404
413
  requirements: []
405
- rubygems_version: 3.5.16
406
- signing_key:
414
+ rubygems_version: 3.6.9
407
415
  specification_version: 4
408
416
  summary: Slack Web and RealTime API client.
409
417
  test_files: []
@@ -1,21 +0,0 @@
1
- name: PR Lint
2
- on: pull_request
3
- jobs:
4
- danger:
5
- name: Dangerfile
6
- runs-on: ubuntu-latest
7
- env:
8
- BUNDLE_GEMFILE: ${{ github.workspace }}/Gemfile.danger
9
- steps:
10
- - name: Checkout
11
- uses: actions/checkout@v4
12
- with:
13
- fetch-depth: 0
14
- - name: Set up Ruby
15
- uses: ruby/setup-ruby@v1
16
- with:
17
- bundler-cache: true
18
- - run: |
19
- # Personal access token for dangerpr-bot - public, but base64 encoded to avoid tripping up GitHub
20
- TOKEN=$(echo -n Z2hwX0xNQ3VmanBFeTBvYkZVTWh6NVNqVFFBOEUxU25abzBqRUVuaAo= | base64 --decode)
21
- DANGER_GITHUB_API_TOKEN=$TOKEN bundle exec danger --verbose
data/Gemfile.danger DELETED
@@ -1,6 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- group :test do
4
- gem 'danger-toc', '~> 0.2.0', require: false
5
- gem 'slack-ruby-danger', '~> 0.2.0', require: false
6
- end