slack-ruby-client 0.11.0 → 2.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.
Files changed (403) hide show
  1. checksums.yaml +5 -5
  2. data/.coveralls.yml +2 -0
  3. data/.github/FUNDING.yml +2 -0
  4. data/.github/dependabot.yml +6 -0
  5. data/.github/workflows/integration_test.yml +45 -0
  6. data/.github/workflows/lint.yml +14 -0
  7. data/.github/workflows/pr_lint.yml +21 -0
  8. data/.github/workflows/test.yml +56 -0
  9. data/.github/workflows/update_api.yml +81 -0
  10. data/.gitignore +7 -3
  11. data/.rubocop.yml +40 -2
  12. data/.rubocop_todo.yml +209 -55
  13. data/.ruby-version +1 -0
  14. data/CHANGELOG.md +257 -30
  15. data/CONTRIBUTING.md +44 -29
  16. data/Dangerfile +2 -0
  17. data/Gemfile +28 -6
  18. data/Gemfile.danger +6 -0
  19. data/LICENSE.md +1 -1
  20. data/README.md +473 -134
  21. data/RELEASING.md +2 -2
  22. data/Rakefile +2 -1
  23. data/SECURITY.md +9 -0
  24. data/UPGRADING.md +117 -3
  25. data/bin/commands/admin_analytics.rb +22 -0
  26. data/bin/commands/admin_apps.rb +57 -0
  27. data/bin/commands/admin_apps_activities.rb +32 -0
  28. data/bin/commands/admin_apps_approved.rb +24 -0
  29. data/bin/commands/admin_apps_config.rb +31 -0
  30. data/bin/commands/admin_apps_requests.rb +35 -0
  31. data/bin/commands/admin_apps_restricted.rb +24 -0
  32. data/bin/commands/admin_audit_anomaly_allow.rb +29 -0
  33. data/bin/commands/admin_auth_policy.rb +45 -0
  34. data/bin/commands/admin_barriers.rb +53 -0
  35. data/bin/commands/admin_conversations.rb +260 -0
  36. data/bin/commands/admin_conversations_ekm.rb +23 -0
  37. data/bin/commands/admin_conversations_restrictAccess.rb +43 -0
  38. data/bin/commands/admin_emoji.rb +60 -0
  39. data/bin/commands/admin_functions.rb +23 -0
  40. data/bin/commands/admin_functions_permissions.rb +31 -0
  41. data/bin/commands/admin_inviteRequests.rb +42 -0
  42. data/bin/commands/admin_inviteRequests_approved.rb +22 -0
  43. data/bin/commands/admin_inviteRequests_denied.rb +22 -0
  44. data/bin/commands/admin_roles.rb +46 -0
  45. data/bin/commands/admin_teams.rb +33 -0
  46. data/bin/commands/admin_teams_admins.rb +22 -0
  47. data/bin/commands/admin_teams_owners.rb +22 -0
  48. data/bin/commands/admin_teams_settings.rb +70 -0
  49. data/bin/commands/admin_usergroups.rb +54 -0
  50. data/bin/commands/admin_users.rb +106 -0
  51. data/bin/commands/admin_users_session.rb +84 -0
  52. data/bin/commands/admin_users_unsupportedVersions.rb +21 -0
  53. data/bin/commands/admin_workflows.rb +42 -0
  54. data/bin/commands/admin_workflows_collaborators.rb +31 -0
  55. data/bin/commands/admin_workflows_permissions.rb +21 -0
  56. data/bin/commands/admin_workflows_triggers_types_permissions.rb +31 -0
  57. data/bin/commands/api.rb +15 -9
  58. data/bin/commands/apps.rb +21 -0
  59. data/bin/commands/apps_activities.rb +32 -0
  60. data/bin/commands/apps_auth_external.rb +32 -0
  61. data/bin/commands/apps_connections.rb +19 -0
  62. data/bin/commands/apps_datastore.rb +116 -0
  63. data/bin/commands/apps_event_authorizations.rb +22 -0
  64. data/bin/commands/apps_manifest.rb +58 -0
  65. data/bin/commands/assistant_search.rb +27 -0
  66. data/bin/commands/assistant_threads.rb +45 -0
  67. data/bin/commands/auth.rb +22 -15
  68. data/bin/commands/auth_teams.rb +22 -0
  69. data/bin/commands/bookmarks.rb +60 -0
  70. data/bin/commands/bots.rb +16 -8
  71. data/bin/commands/calls.rb +58 -0
  72. data/bin/commands/calls_participants.rb +31 -0
  73. data/bin/commands/canvases.rb +41 -0
  74. data/bin/commands/canvases_access.rb +34 -0
  75. data/bin/commands/canvases_sections.rb +21 -0
  76. data/bin/commands/chat.rb +158 -99
  77. data/bin/commands/chat_scheduledMessages.rb +25 -0
  78. data/bin/commands/conversations.rb +241 -157
  79. data/bin/commands/conversations_canvases.rb +22 -0
  80. data/bin/commands/conversations_externalInvitePermissions.rb +22 -0
  81. data/bin/commands/conversations_requestSharedInvite.rb +48 -0
  82. data/bin/commands/dialog.rb +16 -9
  83. data/bin/commands/dnd.rb +47 -38
  84. data/bin/commands/emoji.rb +15 -7
  85. data/bin/commands/files.rb +113 -87
  86. data/bin/commands/files_comments.rb +16 -30
  87. data/bin/commands/files_remote.rb +84 -0
  88. data/bin/commands/functions.rb +31 -0
  89. data/bin/commands/functions_distributions_permissions.rb +61 -0
  90. data/bin/commands/functions_workflows_steps.rb +23 -0
  91. data/bin/commands/functions_workflows_steps_responses.rb +23 -0
  92. data/bin/commands/migration.rb +17 -9
  93. data/bin/commands/oauth.rb +19 -24
  94. data/bin/commands/oauth_v2.rb +35 -0
  95. data/bin/commands/openid_connect.rb +33 -0
  96. data/bin/commands/pins.rb +33 -30
  97. data/bin/commands/reactions.rb +53 -45
  98. data/bin/commands/reminders.rb +54 -41
  99. data/bin/commands/rtm.rb +16 -22
  100. data/bin/commands/search.rb +44 -33
  101. data/bin/commands/stars.rb +39 -29
  102. data/bin/commands/team.rb +50 -34
  103. data/bin/commands/team_billing.rb +19 -0
  104. data/bin/commands/team_externalTeams.rb +35 -0
  105. data/bin/commands/team_preferences.rb +19 -0
  106. data/bin/commands/team_profile.rb +15 -8
  107. data/bin/commands/tooling_tokens.rb +20 -0
  108. data/bin/commands/usergroups.rb +69 -53
  109. data/bin/commands/usergroups_users.rb +30 -19
  110. data/bin/commands/users.rb +114 -84
  111. data/bin/commands/users_admin.rb +29 -22
  112. data/bin/commands/users_discoverableContacts.rb +20 -0
  113. data/bin/commands/users_prefs.rb +14 -7
  114. data/bin/commands/users_profile.rb +27 -20
  115. data/bin/commands/views.rb +56 -0
  116. data/bin/commands/workflows.rb +44 -0
  117. data/bin/commands/workflows_triggers_permissions.rb +60 -0
  118. data/bin/slack +50 -46
  119. data/examples/files_upload_v2/.env.example +1 -0
  120. data/examples/{hi_real_time → files_upload_v2}/Gemfile +2 -2
  121. data/examples/files_upload_v2/README.md +13 -0
  122. data/examples/files_upload_v2/files_upload_v2.rb +45 -0
  123. data/examples/hi_real_time_and_web/Gemfile +1 -0
  124. data/examples/hi_real_time_and_web/hi.rb +7 -3
  125. data/examples/{hi_real_time_async_eventmachine → hi_real_time_async_async}/Gemfile +2 -1
  126. data/examples/{hi_real_time_async_eventmachine → hi_real_time_async_async}/hi.rb +12 -7
  127. data/examples/hi_web/Gemfile +1 -0
  128. data/examples/hi_web/hi.rb +1 -0
  129. data/examples/new_ticket/Gemfile +1 -0
  130. data/examples/new_ticket/new_ticket.rb +1 -0
  131. data/examples/oauth_v2/.env.example +4 -0
  132. data/examples/oauth_v2/Gemfile +7 -0
  133. data/examples/oauth_v2/README.md +33 -0
  134. data/examples/oauth_v2/oauth_v2.rb +60 -0
  135. data/lib/slack/config.rb +2 -2
  136. data/lib/slack/events/config.rb +32 -0
  137. data/lib/slack/events/request.rb +76 -0
  138. data/lib/slack/logger.rb +6 -5
  139. data/lib/slack/messages/formatting.rb +66 -1
  140. data/lib/slack/messages/message.rb +1 -4
  141. data/lib/slack/real_time/api/message.rb +6 -3
  142. data/lib/slack/real_time/api/message_id.rb +1 -0
  143. data/lib/slack/real_time/api/ping.rb +5 -2
  144. data/lib/slack/real_time/api/templates/event_handler.erb +5 -1
  145. data/lib/slack/real_time/api/typing.rb +5 -2
  146. data/lib/slack/real_time/client.rb +117 -54
  147. data/lib/slack/real_time/concurrency/async.rb +142 -0
  148. data/lib/slack/real_time/concurrency.rb +2 -2
  149. data/lib/slack/real_time/config.rb +12 -13
  150. data/lib/slack/real_time/models/base.rb +1 -4
  151. data/lib/slack/real_time/models/bot.rb +1 -0
  152. data/lib/slack/real_time/models/channel.rb +5 -0
  153. data/lib/slack/real_time/models/im.rb +1 -0
  154. data/lib/slack/real_time/models/{group.rb → mpim.rb} +2 -1
  155. data/lib/slack/real_time/models/team.rb +1 -0
  156. data/lib/slack/real_time/models/user.rb +1 -0
  157. data/lib/slack/real_time/models.rb +3 -1
  158. data/lib/slack/real_time/socket.rb +49 -17
  159. data/lib/slack/real_time/stores/base.rb +28 -14
  160. data/lib/slack/real_time/stores/starter.rb +325 -287
  161. data/lib/slack/real_time/stores/store.rb +271 -186
  162. data/lib/slack/real_time/stores.rb +2 -7
  163. data/lib/slack/utils/security.rb +44 -0
  164. data/lib/slack/version.rb +2 -1
  165. data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
  166. data/lib/slack/web/api/endpoints/admin_apps.rb +78 -0
  167. data/lib/slack/web/api/endpoints/admin_apps_activities.rb +53 -0
  168. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +37 -0
  169. data/lib/slack/web/api/endpoints/admin_apps_config.rb +40 -0
  170. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +53 -0
  171. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +37 -0
  172. data/lib/slack/web/api/endpoints/admin_audit_anomaly_allow.rb +34 -0
  173. data/lib/slack/web/api/endpoints/admin_auth_policy.rb +72 -0
  174. data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
  175. data/lib/slack/web/api/endpoints/admin_conversations.rb +397 -0
  176. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
  177. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
  178. data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
  179. data/lib/slack/web/api/endpoints/admin_functions.rb +36 -0
  180. data/lib/slack/web/api/endpoints/admin_functions_permissions.rb +41 -0
  181. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
  182. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
  183. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
  184. data/lib/slack/web/api/endpoints/admin_roles.rb +73 -0
  185. data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
  186. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
  187. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
  188. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
  189. data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
  190. data/lib/slack/web/api/endpoints/admin_users.rb +167 -0
  191. data/lib/slack/web/api/endpoints/admin_users_session.rb +121 -0
  192. data/lib/slack/web/api/endpoints/admin_users_unsupportedVersions.rb +25 -0
  193. data/lib/slack/web/api/endpoints/admin_workflows.rb +67 -0
  194. data/lib/slack/web/api/endpoints/admin_workflows_collaborators.rb +42 -0
  195. data/lib/slack/web/api/endpoints/admin_workflows_permissions.rb +26 -0
  196. data/lib/slack/web/api/endpoints/admin_workflows_triggers_types_permissions.rb +41 -0
  197. data/lib/slack/web/api/endpoints/api.rb +2 -3
  198. data/lib/slack/web/api/endpoints/apps.rb +27 -0
  199. data/lib/slack/web/api/endpoints/apps_activities.rb +54 -0
  200. data/lib/slack/web/api/endpoints/apps_auth_external.rb +41 -0
  201. data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
  202. data/lib/slack/web/api/endpoints/apps_datastore.rb +181 -0
  203. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
  204. data/lib/slack/web/api/endpoints/apps_manifest.rb +79 -0
  205. data/lib/slack/web/api/endpoints/assistant_search.rb +44 -0
  206. data/lib/slack/web/api/endpoints/assistant_threads.rb +68 -0
  207. data/lib/slack/web/api/endpoints/auth.rb +2 -1
  208. data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
  209. data/lib/slack/web/api/endpoints/bookmarks.rb +90 -0
  210. data/lib/slack/web/api/endpoints/bots.rb +4 -1
  211. data/lib/slack/web/api/endpoints/calls.rb +83 -0
  212. data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
  213. data/lib/slack/web/api/endpoints/canvases.rb +54 -0
  214. data/lib/slack/web/api/endpoints/canvases_access.rb +47 -0
  215. data/lib/slack/web/api/endpoints/canvases_sections.rb +27 -0
  216. data/lib/slack/web/api/endpoints/chat.rb +172 -87
  217. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
  218. data/lib/slack/web/api/endpoints/conversations.rb +190 -64
  219. data/lib/slack/web/api/endpoints/conversations_canvases.rb +28 -0
  220. data/lib/slack/web/api/endpoints/conversations_externalInvitePermissions.rb +31 -0
  221. data/lib/slack/web/api/endpoints/conversations_requestSharedInvite.rb +73 -0
  222. data/lib/slack/web/api/endpoints/dialog.rb +6 -10
  223. data/lib/slack/web/api/endpoints/dnd.rb +11 -5
  224. data/lib/slack/web/api/endpoints/emoji.rb +3 -0
  225. data/lib/slack/web/api/endpoints/files.rb +85 -36
  226. data/lib/slack/web/api/endpoints/files_comments.rb +4 -36
  227. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  228. data/lib/slack/web/api/endpoints/functions.rb +43 -0
  229. data/lib/slack/web/api/endpoints/functions_distributions_permissions.rb +84 -0
  230. data/lib/slack/web/api/endpoints/functions_workflows_steps.rb +30 -0
  231. data/lib/slack/web/api/endpoints/functions_workflows_steps_responses.rb +30 -0
  232. data/lib/slack/web/api/endpoints/migration.rb +6 -3
  233. data/lib/slack/web/api/endpoints/oauth.rb +10 -32
  234. data/lib/slack/web/api/endpoints/oauth_v2.rb +48 -0
  235. data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
  236. data/lib/slack/web/api/endpoints/pins.rb +11 -18
  237. data/lib/slack/web/api/endpoints/reactions.rb +31 -20
  238. data/lib/slack/web/api/endpoints/reminders.rb +25 -12
  239. data/lib/slack/web/api/endpoints/rtm.rb +4 -22
  240. data/lib/slack/web/api/endpoints/search.rb +33 -18
  241. data/lib/slack/web/api/endpoints/stars.rb +23 -10
  242. data/lib/slack/web/api/endpoints/team.rb +38 -7
  243. data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
  244. data/lib/slack/web/api/endpoints/team_externalTeams.rb +53 -0
  245. data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
  246. data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
  247. data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
  248. data/lib/slack/web/api/endpoints/usergroups.rb +44 -25
  249. data/lib/slack/web/api/endpoints/usergroups_users.rb +23 -14
  250. data/lib/slack/web/api/endpoints/users.rb +57 -18
  251. data/lib/slack/web/api/endpoints/users_admin.rb +5 -2
  252. data/lib/slack/web/api/endpoints/users_discoverableContacts.rb +24 -0
  253. data/lib/slack/web/api/endpoints/users_prefs.rb +2 -0
  254. data/lib/slack/web/api/endpoints/users_profile.rb +11 -9
  255. data/lib/slack/web/api/endpoints/views.rb +86 -0
  256. data/lib/slack/web/api/endpoints/workflows.rb +63 -0
  257. data/lib/slack/web/api/endpoints/workflows_triggers_permissions.rb +87 -0
  258. data/lib/slack/web/api/endpoints.rb +136 -12
  259. data/lib/slack/web/api/error.rb +1 -0
  260. data/lib/slack/web/api/errors/server_error.rb +37 -0
  261. data/lib/slack/web/api/errors/slack_error.rb +14 -1
  262. data/lib/slack/web/api/errors/too_many_requests_error.rb +2 -4
  263. data/lib/slack/web/api/errors.rb +1396 -0
  264. data/lib/slack/web/api/helpers/files.rb +97 -0
  265. data/lib/slack/web/api/helpers.rb +13 -0
  266. data/lib/slack/web/api/mixins/conversations.id.rb +47 -0
  267. data/lib/slack/web/api/mixins/ids.id.rb +4 -3
  268. data/lib/slack/web/api/mixins/users.id.rb +18 -4
  269. data/lib/slack/web/api/mixins/users.search.rb +3 -1
  270. data/lib/slack/web/api/mixins.rb +2 -2
  271. data/lib/slack/web/api/options.rb +26 -0
  272. data/lib/slack/web/api/patches/.gitkeep +0 -0
  273. data/lib/slack/web/api/templates/command.erb +19 -12
  274. data/lib/slack/web/api/templates/endpoints.erb +2 -2
  275. data/lib/slack/web/api/templates/errors.erb +20 -0
  276. data/lib/slack/web/api/templates/method.erb +23 -3
  277. data/lib/slack/web/api/templates/method_spec.erb +40 -3
  278. data/lib/slack/web/client.rb +4 -1
  279. data/lib/slack/web/config.rb +9 -2
  280. data/lib/slack/web/faraday/connection.rb +11 -20
  281. data/lib/slack/web/faraday/options.rb +24 -0
  282. data/lib/slack/web/faraday/request.rb +6 -1
  283. data/lib/slack/web/faraday/response/raise_error.rb +14 -8
  284. data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
  285. data/lib/slack/web/pagination/cursor.rb +7 -7
  286. data/lib/slack-ruby-client.rb +18 -6
  287. data/lib/slack.rb +1 -0
  288. data/lib/slack_ruby_client.rb +1 -0
  289. data/lib/tasks/git.rake +1 -0
  290. data/lib/tasks/real_time.rake +51 -21
  291. data/lib/tasks/update.rake +1 -0
  292. data/lib/tasks/web.rake +43 -17
  293. data/slack-ruby-client.gemspec +10 -14
  294. metadata +191 -307
  295. data/.travis.yml +0 -30
  296. data/bin/commands/apps_permissions.rb +0 -22
  297. data/bin/commands/channels.rb +0 -175
  298. data/bin/commands/groups.rb +0 -172
  299. data/bin/commands/im.rb +0 -67
  300. data/bin/commands/mpim.rb +0 -63
  301. data/bin/commands.rb +0 -33
  302. data/examples/hi_real_time/hi.gif +0 -0
  303. data/examples/hi_real_time/hi.rb +0 -37
  304. data/examples/hi_real_time_async_celluloid/Gemfile +0 -6
  305. data/examples/hi_real_time_async_celluloid/hi.rb +0 -36
  306. data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
  307. data/lib/slack/real_time/concurrency/celluloid.rb +0 -117
  308. data/lib/slack/real_time/concurrency/eventmachine.rb +0 -60
  309. data/lib/slack/web/api/endpoints/apps_permissions.rb +0 -35
  310. data/lib/slack/web/api/endpoints/channels.rb +0 -265
  311. data/lib/slack/web/api/endpoints/groups.rb +0 -255
  312. data/lib/slack/web/api/endpoints/im.rb +0 -113
  313. data/lib/slack/web/api/endpoints/mpim.rb +0 -98
  314. data/lib/slack/web/api/endpoints/presence.rb +0 -23
  315. data/lib/slack/web/api/mixins/channels.id.json +0 -20
  316. data/lib/slack/web/api/mixins/channels.id.rb +0 -26
  317. data/lib/slack/web/api/mixins/groups.id.json +0 -20
  318. data/lib/slack/web/api/mixins/groups.id.rb +0 -26
  319. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
  320. data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
  321. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -21
  322. data/lib/slack/web/api/patches/chat.4.postEphemeral-attachments-support.patch +0 -17
  323. data/lib/slack/web/api/patches/dialog.1.open-json-support.patch +0 -17
  324. data/lib/slack/web/api/templates/commands.erb +0 -5
  325. data/screenshots/register-bot.png +0 -0
  326. data/spec/fixtures/slack/web/429_error.yml +0 -85
  327. data/spec/fixtures/slack/web/auth_test_error.yml +0 -48
  328. data/spec/fixtures/slack/web/auth_test_success.yml +0 -57
  329. data/spec/fixtures/slack/web/channels_info.yml +0 -46
  330. data/spec/fixtures/slack/web/groups_info.yml +0 -43
  331. data/spec/fixtures/slack/web/paginated_users_list.yml +0 -181
  332. data/spec/fixtures/slack/web/rtm_connect.yml +0 -70
  333. data/spec/fixtures/slack/web/rtm_start.yml +0 -104
  334. data/spec/fixtures/slack/web/users_info.yml +0 -130
  335. data/spec/fixtures/slack/web/users_list.yml +0 -72
  336. data/spec/integration/integration_spec.rb +0 -139
  337. data/spec/slack/config_spec.rb +0 -14
  338. data/spec/slack/messages/formatting_spec.rb +0 -43
  339. data/spec/slack/real_time/api/message_spec.rb +0 -15
  340. data/spec/slack/real_time/api/ping_spec.rb +0 -15
  341. data/spec/slack/real_time/api/typing_spec.rb +0 -15
  342. data/spec/slack/real_time/client_spec.rb +0 -425
  343. data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -62
  344. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -47
  345. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +0 -19
  346. data/spec/slack/real_time/event_handlers/bot_spec.rb +0 -44
  347. data/spec/slack/real_time/event_handlers/channel_spec.rb +0 -116
  348. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +0 -15
  349. data/spec/slack/real_time/event_handlers/group_spec.rb +0 -90
  350. data/spec/slack/real_time/event_handlers/im_spec.rb +0 -47
  351. data/spec/slack/real_time/event_handlers/team_spec.rb +0 -62
  352. data/spec/slack/real_time/event_handlers/user_spec.rb +0 -63
  353. data/spec/slack/real_time/rtm_connect_spec.rb +0 -13
  354. data/spec/slack/real_time/rtm_start_spec.rb +0 -13
  355. data/spec/slack/real_time/store_spec.rb +0 -11
  356. data/spec/slack/slack_spec.rb +0 -58
  357. data/spec/slack/version_spec.rb +0 -7
  358. data/spec/slack/web/api/endpoints/api_spec.rb +0 -7
  359. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +0 -15
  360. data/spec/slack/web/api/endpoints/bots_spec.rb +0 -7
  361. data/spec/slack/web/api/endpoints/conversations_spec.rb +0 -100
  362. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +0 -25
  363. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -11
  364. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +0 -105
  365. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +0 -28
  366. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -11
  367. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +0 -33
  368. data/spec/slack/web/api/endpoints/dnd_spec.rb +0 -12
  369. data/spec/slack/web/api/endpoints/emoji_spec.rb +0 -7
  370. data/spec/slack/web/api/endpoints/files_comments_spec.rb +0 -34
  371. data/spec/slack/web/api/endpoints/files_spec.rb +0 -43
  372. data/spec/slack/web/api/endpoints/im_spec.rb +0 -38
  373. data/spec/slack/web/api/endpoints/migration_spec.rb +0 -12
  374. data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -38
  375. data/spec/slack/web/api/endpoints/oauth_spec.rb +0 -29
  376. data/spec/slack/web/api/endpoints/pins_spec.rb +0 -22
  377. data/spec/slack/web/api/endpoints/reactions_spec.rb +0 -17
  378. data/spec/slack/web/api/endpoints/reminders_spec.rb +0 -30
  379. data/spec/slack/web/api/endpoints/rtm_spec.rb +0 -7
  380. data/spec/slack/web/api/endpoints/search_spec.rb +0 -22
  381. data/spec/slack/web/api/endpoints/stars_spec.rb +0 -7
  382. data/spec/slack/web/api/endpoints/team_profile_spec.rb +0 -7
  383. data/spec/slack/web/api/endpoints/team_spec.rb +0 -7
  384. data/spec/slack/web/api/endpoints/usergroups_spec.rb +0 -27
  385. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +0 -20
  386. data/spec/slack/web/api/endpoints/users_admin_spec.rb +0 -17
  387. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +0 -7
  388. data/spec/slack/web/api/endpoints/users_profile_spec.rb +0 -7
  389. data/spec/slack/web/api/error_spec.rb +0 -14
  390. data/spec/slack/web/api/errors/slack_error_spec.rb +0 -14
  391. data/spec/slack/web/api/mixins/channels_spec.rb +0 -31
  392. data/spec/slack/web/api/mixins/groups_spec.rb +0 -31
  393. data/spec/slack/web/api/mixins/users_spec.rb +0 -39
  394. data/spec/slack/web/api/pagination/cursor_spec.rb +0 -70
  395. data/spec/slack/web/client_spec.rb +0 -174
  396. data/spec/spec_helper.rb +0 -14
  397. data/spec/support/queue_with_timeout.rb +0 -34
  398. data/spec/support/real_time/concurrency/mock.rb +0 -30
  399. data/spec/support/real_time/connected_client.rb +0 -21
  400. data/spec/support/real_time/event.rb +0 -11
  401. data/spec/support/token.rb +0 -10
  402. data/spec/support/vcr.rb +0 -9
  403. /data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Procfile +0 -0
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ module Slack
5
+ module Web
6
+ module Api
7
+ module Endpoints
8
+ module CallsParticipants
9
+ #
10
+ # Registers new participants added to a Call.
11
+ #
12
+ # @option options [string] :id
13
+ # id returned by the calls.add method.
14
+ # @option options [array] :users
15
+ # The list of users to add as participants in the Call. Read more on how to specify users here.
16
+ # @see https://api.slack.com/methods/calls.participants.add
17
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/calls.participants/calls.participants.add.json
18
+ def calls_participants_add(options = {})
19
+ raise ArgumentError, 'Required arguments :id missing' if options[:id].nil?
20
+ raise ArgumentError, 'Required arguments :users missing' if options[:users].nil?
21
+ post('calls.participants.add', options)
22
+ end
23
+
24
+ #
25
+ # Registers participants removed from a Call.
26
+ #
27
+ # @option options [string] :id
28
+ # id returned by the calls.add method.
29
+ # @option options [array] :users
30
+ # The list of users to remove as participants in the Call. Read more on how to specify users here.
31
+ # @see https://api.slack.com/methods/calls.participants.remove
32
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/calls.participants/calls.participants.remove.json
33
+ def calls_participants_remove(options = {})
34
+ raise ArgumentError, 'Required arguments :id missing' if options[:id].nil?
35
+ raise ArgumentError, 'Required arguments :users missing' if options[:users].nil?
36
+ post('calls.participants.remove', options)
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ module Slack
5
+ module Web
6
+ module Api
7
+ module Endpoints
8
+ module Canvases
9
+ #
10
+ # Create canvas for a user
11
+ #
12
+ # @option options [string] :channel_id
13
+ # Channel ID of the channel the canvas will be tabbed in. This is a required field for free teams.
14
+ # @option options [Object] :document_content
15
+ # Structure describing the type and value of the content to create.
16
+ # @option options [string] :title
17
+ # Title of the newly created canvas.
18
+ # @see https://api.slack.com/methods/canvases.create
19
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/canvases/canvases.create.json
20
+ def canvases_create(options = {})
21
+ post('canvases.create', options)
22
+ end
23
+
24
+ #
25
+ # Deletes a canvas
26
+ #
27
+ # @option options [Object] :canvas_id
28
+ # Encoded ID of the canvas.
29
+ # @see https://api.slack.com/methods/canvases.delete
30
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/canvases/canvases.delete.json
31
+ def canvases_delete(options = {})
32
+ raise ArgumentError, 'Required arguments :canvas_id missing' if options[:canvas_id].nil?
33
+ post('canvases.delete', options)
34
+ end
35
+
36
+ #
37
+ # Update an existing canvas
38
+ #
39
+ # @option options [Object] :canvas_id
40
+ # Encoded ID of the canvas.
41
+ # @option options [array] :changes
42
+ # List of changes to apply on the specified canvas.
43
+ # @see https://api.slack.com/methods/canvases.edit
44
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/canvases/canvases.edit.json
45
+ def canvases_edit(options = {})
46
+ raise ArgumentError, 'Required arguments :canvas_id missing' if options[:canvas_id].nil?
47
+ raise ArgumentError, 'Required arguments :changes missing' if options[:changes].nil?
48
+ post('canvases.edit', options)
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end
@@ -0,0 +1,47 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ module Slack
5
+ module Web
6
+ module Api
7
+ module Endpoints
8
+ module CanvasesAccess
9
+ #
10
+ # Remove access to a canvas for specified entities
11
+ #
12
+ # @option options [Object] :canvas_id
13
+ # Encoded ID of the canvas.
14
+ # @option options [array] :channel_ids
15
+ # List of channels you wish to update access for.
16
+ # @option options [array] :user_ids
17
+ # List of users you wish to update access for.
18
+ # @see https://api.slack.com/methods/canvases.access.delete
19
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/canvases.access/canvases.access.delete.json
20
+ def canvases_access_delete(options = {})
21
+ raise ArgumentError, 'Required arguments :canvas_id missing' if options[:canvas_id].nil?
22
+ post('canvases.access.delete', options)
23
+ end
24
+
25
+ #
26
+ # Sets the access level to a canvas for specified entities
27
+ #
28
+ # @option options [enum] :access_level
29
+ # Desired level of access.
30
+ # @option options [Object] :canvas_id
31
+ # Encoded ID of the canvas.
32
+ # @option options [array] :channel_ids
33
+ # List of channels you wish to update access for. Can only be used if user_ids is not provided.
34
+ # @option options [array] :user_ids
35
+ # List of users you wish to update access for. Can only be used if channel_ids is not provided.
36
+ # @see https://api.slack.com/methods/canvases.access.set
37
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/canvases.access/canvases.access.set.json
38
+ def canvases_access_set(options = {})
39
+ raise ArgumentError, 'Required arguments :access_level missing' if options[:access_level].nil?
40
+ raise ArgumentError, 'Required arguments :canvas_id missing' if options[:canvas_id].nil?
41
+ post('canvases.access.set', options)
42
+ end
43
+ end
44
+ end
45
+ end
46
+ end
47
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ module Slack
5
+ module Web
6
+ module Api
7
+ module Endpoints
8
+ module CanvasesSections
9
+ #
10
+ # Find sections matching the provided criteria
11
+ #
12
+ # @option options [Object] :canvas_id
13
+ # Encoded ID of the canvas.
14
+ # @option options [Object] :criteria
15
+ # Filtering criteria.
16
+ # @see https://api.slack.com/methods/canvases.sections.lookup
17
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/canvases.sections/canvases.sections.lookup.json
18
+ def canvases_sections_lookup(options = {})
19
+ raise ArgumentError, 'Required arguments :canvas_id missing' if options[:canvas_id].nil?
20
+ raise ArgumentError, 'Required arguments :criteria missing' if options[:criteria].nil?
21
+ post('canvases.sections.lookup', options)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  module Slack
@@ -16,9 +17,10 @@ module Slack
16
17
  # Additional parameters provided to the slash command.
17
18
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/chat/chat.command.json
18
19
  def chat_command(options = {})
19
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
20
- throw ArgumentError.new('Required arguments :command missing') if options[:command].nil?
21
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
20
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
21
+ raise ArgumentError, 'Required arguments :command missing' if options[:command].nil?
22
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
23
+ logger.warn('The chat.command method is undocumented.')
22
24
  post('chat.command', options)
23
25
  end
24
26
 
@@ -29,30 +31,48 @@ module Slack
29
31
  # Channel containing the message to be deleted.
30
32
  # @option options [timestamp] :ts
31
33
  # Timestamp of the message to be deleted.
32
- # @option options [Object] :as_user
34
+ # @option options [boolean] :as_user
33
35
  # Pass true to delete the message as the authed user with chat:write:user scope. Bot users in this context are considered authed users. If unused or false, the message will be deleted with chat:write:bot scope.
34
36
  # @see https://api.slack.com/methods/chat.delete
35
37
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.delete.json
36
38
  def chat_delete(options = {})
37
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
38
- throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
39
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
39
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
40
+ raise ArgumentError, 'Required arguments :ts missing' if options[:ts].nil?
41
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
40
42
  post('chat.delete', options)
41
43
  end
42
44
 
45
+ #
46
+ # Deletes a pending scheduled message from the queue.
47
+ #
48
+ # @option options [channel] :channel
49
+ # The channel the scheduled_message is posting to.
50
+ # @option options [string] :scheduled_message_id
51
+ # scheduled_message_id returned from call to chat.scheduleMessage.
52
+ # @option options [boolean] :as_user
53
+ # Pass true to delete the message as the authed user with chat:write:user scope. Bot users in this context are considered authed users. If unused or false, the message will be deleted with chat:write:bot scope.
54
+ # @see https://api.slack.com/methods/chat.deleteScheduledMessage
55
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.deleteScheduledMessage.json
56
+ def chat_deleteScheduledMessage(options = {})
57
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
58
+ raise ArgumentError, 'Required arguments :scheduled_message_id missing' if options[:scheduled_message_id].nil?
59
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
60
+ post('chat.deleteScheduledMessage', options)
61
+ end
62
+
43
63
  #
44
64
  # Retrieve a permalink URL for a specific extant message
45
65
  #
46
66
  # @option options [channel] :channel
47
67
  # The ID of the conversation or channel containing the message.
48
- # @option options [Object] :message_ts
68
+ # @option options [string] :message_ts
49
69
  # A message's ts value, uniquely identifying it within a channel.
50
70
  # @see https://api.slack.com/methods/chat.getPermalink
51
71
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.getPermalink.json
52
72
  def chat_getPermalink(options = {})
53
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
54
- throw ArgumentError.new('Required arguments :message_ts missing') if options[:message_ts].nil?
55
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
73
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
74
+ raise ArgumentError, 'Required arguments :message_ts missing' if options[:message_ts].nil?
75
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
56
76
  post('chat.getPermalink', options)
57
77
  end
58
78
 
@@ -61,13 +81,13 @@ module Slack
61
81
  #
62
82
  # @option options [channel] :channel
63
83
  # Channel to send message to. Can be a public channel, private group or IM channel. Can be an encoded ID, or a name.
64
- # @option options [Object] :text
84
+ # @option options [string] :text
65
85
  # Text of the message to send.
66
86
  # @see https://api.slack.com/methods/chat.meMessage
67
87
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.meMessage.json
68
88
  def chat_meMessage(options = {})
69
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
70
- throw ArgumentError.new('Required arguments :text missing') if options[:text].nil?
89
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
90
+ raise ArgumentError, 'Required arguments :text missing' if options[:text].nil?
71
91
  post('chat.meMessage', options)
72
92
  end
73
93
 
@@ -76,31 +96,38 @@ module Slack
76
96
  #
77
97
  # @option options [channel] :channel
78
98
  # Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name.
79
- # @option options [Object] :text
80
- # Text of the message to send. See below for an explanation of formatting. This field is usually required, unless you're providing only attachments instead.
81
99
  # @option options [user] :user
82
100
  # id of the user who will receive the ephemeral message. The user should be in the channel specified by the channel argument.
83
- # @option options [Object] :as_user
84
- # Pass true to post the message as the authed bot. Defaults to false.
85
- # @option options [Object] :attachments
101
+ # @option options [string] :attachments
86
102
  # A JSON-based array of structured attachments, presented as a URL-encoded string.
87
- # @option options [Object] :link_names
103
+ # @option options [blocks[] as string] :blocks
104
+ # A JSON-based array of structured blocks, presented as a URL-encoded string.
105
+ # @option options [string] :text
106
+ # How this field works and whether it is required depends on other fields you use in your API call. See below for more detail.
107
+ # @option options [boolean] :as_user
108
+ # (Legacy) Pass true to post the message as the authed user. Defaults to true if the chat:write:bot scope is not included. Otherwise, defaults to false.
109
+ # @option options [string] :icon_emoji
110
+ # Emoji to use as the icon for this message. Overrides icon_url.
111
+ # @option options [string] :icon_url
112
+ # URL to an image to use as the icon for this message.
113
+ # @option options [boolean] :link_names
88
114
  # Find and link channel names and usernames.
89
- # @option options [Object] :parse
115
+ # @option options [string] :markdown_text
116
+ # Accepts message text formatted in markdown. This argument should not be used in conjunction with blocks or text. Limit this field to 12,000 characters.
117
+ # @option options [string] :parse
90
118
  # Change how messages are treated. Defaults to none. See below.
119
+ # @option options [string] :thread_ts
120
+ # Provide another message's ts value to post this message in a thread. Avoid using a reply's ts value; use its parent's value instead. Ephemeral messages in threads are only shown if there is already an active thread.
121
+ # @option options [string] :username
122
+ # Set your bot's user name.
91
123
  # @see https://api.slack.com/methods/chat.postEphemeral
92
124
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postEphemeral.json
93
125
  def chat_postEphemeral(options = {})
94
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
95
- throw ArgumentError.new('Required arguments :text missing') if options[:text].nil?
96
- throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
126
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
127
+ raise ArgumentError, 'Required arguments :user missing' if options[:user].nil?
128
+ raise ArgumentError, 'At least one of :attachments, :blocks, :text is required' if options[:attachments].nil? && options[:blocks].nil? && options[:text].nil?
97
129
  options = options.merge(user: users_id(options)['user']['id']) if options[:user]
98
- # attachments must be passed as an encoded JSON string
99
- if options.key?(:attachments)
100
- attachments = options[:attachments]
101
- attachments = JSON.dump(attachments) unless attachments.is_a?(String)
102
- options = options.merge(attachments: attachments)
103
- end
130
+ options = encode_options_as_json(options, %i[attachments blocks])
104
131
  post('chat.postEphemeral', options)
105
132
  end
106
133
 
@@ -108,67 +135,120 @@ module Slack
108
135
  # Sends a message to a channel.
109
136
  #
110
137
  # @option options [channel] :channel
111
- # Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name. See below for more details.
112
- # @option options [Object] :text
113
- # Text of the message to send. See below for an explanation of formatting. This field is usually required, unless you're providing only attachments instead.
114
- # @option options [Object] :as_user
115
- # Pass true to post the message as the authed user, instead of as a bot. Defaults to false. See authorship below.
116
- # @option options [Object] :attachments
138
+ # An encoded ID or channel name that represents a channel, private group, or IM channel to send the message to. See below for more details.
139
+ # @option options [string] :attachments
117
140
  # A JSON-based array of structured attachments, presented as a URL-encoded string.
118
- # @option options [Object] :icon_emoji
119
- # Emoji to use as the icon for this message. Overrides icon_url. Must be used in conjunction with as_user set to false, otherwise ignored. See authorship below.
120
- # @option options [Object] :icon_url
121
- # URL to an image to use as the icon for this message. Must be used in conjunction with as_user set to false, otherwise ignored. See authorship below.
122
- # @option options [Object] :link_names
123
- # Find and link channel names and usernames.
124
- # @option options [Object] :parse
125
- # Change how messages are treated. Defaults to none. See below.
126
- # @option options [Object] :reply_broadcast
141
+ # @option options [blocks[] as string] :blocks
142
+ # A JSON-based array of structured blocks, presented as a URL-encoded string.
143
+ # @option options [string] :text
144
+ # How this field works and whether it is required depends on other fields you use in your API call. See below for more detail.
145
+ # @option options [Object] :agent_message_source_type
146
+ # Identify how the message was posted for agentforce BE logging.
147
+ # @option options [boolean] :as_user
148
+ # (Legacy) Pass true to post the message as the authed user instead of as a bot. Defaults to false. Can only be used by classic apps. See legacy as_user parameter below.
149
+ # @option options [string] :icon_emoji
150
+ # Emoji to use as the icon for this message. Overrides icon_url.
151
+ # @option options [string] :icon_url
152
+ # URL to an image to use as the icon for this message.
153
+ # @option options [boolean] :link_names
154
+ # Find and link user groups. No longer supports linking individual users; use syntax shown in Mentioning Users instead.
155
+ # @option options [string] :markdown_text
156
+ # Accepts message text formatted in markdown. This argument should not be used in conjunction with blocks or text. Limit this field to 12,000 characters.
157
+ # @option options [string] :metadata
158
+ # JSON object with event_type and event_payload fields, presented as a URL-encoded string. Metadata you post to Slack is accessible to any app or user who is a member of that workspace.
159
+ # @option options [boolean] :mrkdwn
160
+ # Disable Slack markup parsing by setting to false. Enabled by default.
161
+ # @option options [string] :parse
162
+ # Change how messages are treated. See below.
163
+ # @option options [boolean] :reply_broadcast
127
164
  # Used in conjunction with thread_ts and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to false.
128
- # @option options [Object] :thread_ts
165
+ # @option options [string] :thread_ts
129
166
  # Provide another message's ts value to make this message a reply. Avoid using a reply's ts value; use its parent instead.
130
- # @option options [Object] :unfurl_links
167
+ # @option options [boolean] :unfurl_links
131
168
  # Pass true to enable unfurling of primarily text-based content.
132
- # @option options [Object] :unfurl_media
169
+ # @option options [boolean] :unfurl_media
133
170
  # Pass false to disable unfurling of media content.
134
- # @option options [Object] :username
135
- # Set your bot's user name. Must be used in conjunction with as_user set to false, otherwise ignored. See authorship below.
171
+ # @option options [string] :username
172
+ # Set your bot's user name.
136
173
  # @see https://api.slack.com/methods/chat.postMessage
137
174
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postMessage.json
138
175
  def chat_postMessage(options = {})
139
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
140
- throw ArgumentError.new('Required arguments :text or :attachments missing') if options[:text].nil? && options[:attachments].nil?
141
- # attachments must be passed as an encoded JSON string
142
- if options.key?(:attachments)
143
- attachments = options[:attachments]
144
- attachments = JSON.dump(attachments) unless attachments.is_a?(String)
145
- options = options.merge(attachments: attachments)
146
- end
176
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
177
+ raise ArgumentError, 'At least one of :attachments, :blocks, :text is required' if options[:attachments].nil? && options[:blocks].nil? && options[:text].nil?
178
+ options = encode_options_as_json(options, %i[attachments blocks metadata])
147
179
  post('chat.postMessage', options)
148
180
  end
149
181
 
182
+ #
183
+ # Schedules a message to be sent to a channel.
184
+ #
185
+ # @option options [channel] :channel
186
+ # Channel, private group, or DM channel to send message to. Can be an encoded ID, or a name. See below for more details.
187
+ # @option options [integer] :post_at
188
+ # Unix timestamp representing the future time the message should post to Slack.
189
+ # @option options [string] :attachments
190
+ # A JSON-based array of structured attachments, presented as a URL-encoded string.
191
+ # @option options [blocks[] as string] :blocks
192
+ # A JSON-based array of structured blocks, presented as a URL-encoded string.
193
+ # @option options [string] :text
194
+ # How this field works and whether it is required depends on other fields you use in your API call. See below for more detail.
195
+ # @option options [boolean] :as_user
196
+ # Set to true to post the message as the authed user, instead of as a bot. Defaults to false. Cannot be used by new Slack apps. See chat.postMessage.
197
+ # @option options [boolean] :link_names
198
+ # Find and link user groups. No longer supports linking individual users; use syntax shown in Mentioning Users instead.
199
+ # @option options [string] :markdown_text
200
+ # Accepts message text formatted in markdown. This argument should not be used in conjunction with blocks or text. Limit this field to 12,000 characters.
201
+ # @option options [string] :metadata
202
+ # JSON object with event_type and event_payload fields, presented as a URL-encoded string. Metadata you post to Slack is accessible to any app or user who is a member of that workspace.
203
+ # @option options [enum] :parse
204
+ # Change how messages are treated. See chat.postMessage.
205
+ # @option options [boolean] :reply_broadcast
206
+ # Used in conjunction with thread_ts and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to false.
207
+ # @option options [string] :thread_ts
208
+ # Provide another message's ts value to make this message a reply. Avoid using a reply's ts value; use its parent instead.
209
+ # @option options [boolean] :unfurl_links
210
+ # Pass true to enable unfurling of primarily text-based content.
211
+ # @option options [boolean] :unfurl_media
212
+ # Pass false to disable unfurling of media content.
213
+ # @see https://api.slack.com/methods/chat.scheduleMessage
214
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.scheduleMessage.json
215
+ def chat_scheduleMessage(options = {})
216
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
217
+ raise ArgumentError, 'Required arguments :post_at missing' if options[:post_at].nil?
218
+ raise ArgumentError, 'At least one of :attachments, :blocks, :text is required' if options[:attachments].nil? && options[:blocks].nil? && options[:text].nil?
219
+ options = encode_options_as_json(options, %i[attachments blocks metadata])
220
+ post('chat.scheduleMessage', options)
221
+ end
222
+
150
223
  #
151
224
  # Provide custom unfurl behavior for user-posted URLs
152
225
  #
153
226
  # @option options [channel] :channel
154
- # Channel ID of the message.
227
+ # Channel ID of the message. Both channel and ts must be provided together, or unfurl_id and source must be provided together.
155
228
  # @option options [timestamp] :ts
156
229
  # Timestamp of the message to add unfurl behavior to.
157
- # @option options [Object] :unfurls
158
- # URL-encoded JSON map with keys set to URLs featured in the the message, pointing to their unfurl message attachments.
230
+ # @option options [string] :unfurls
231
+ # URL-encoded JSON map with keys set to URLs featured in the the message, pointing to their unfurl blocks or message attachments.
232
+ # @option options [enum] :source
233
+ # The source of the link to unfurl. The source may either be composer, when the link is inside the message composer, or conversations_history, when the link has been posted to a conversation.
234
+ # @option options [string] :unfurl_id
235
+ # The ID of the link to unfurl. Both unfurl_id and source must be provided together, or channel and ts must be provided together.
236
+ # @option options [Object] :user_auth_blocks
237
+ # Provide a JSON based array of structured blocks presented as URL-encoded string to send as an ephemeral message to the user as invitation to authenticate further and enable full unfurling behavior.
159
238
  # @option options [Object] :user_auth_message
160
- # Provide a simply-formatted string to send as an ephemeral message to the user as invitation to authenticate further and enable full unfurling behavior.
161
- # @option options [Object] :user_auth_required
239
+ # Provide a simply-formatted string to send as an ephemeral message to the user as invitation to authenticate further and enable full unfurling behavior. Provides two buttons, Not now or Never ask me again.
240
+ # @option options [boolean] :user_auth_required
162
241
  # Set to true or 1 to indicate the user must install your Slack app to trigger unfurls for this domain.
163
242
  # @option options [Object] :user_auth_url
164
243
  # Send users to this custom URL where they will complete authentication in your app to fully trigger unfurling. Value should be properly URL-encoded.
165
244
  # @see https://api.slack.com/methods/chat.unfurl
166
245
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.unfurl.json
167
246
  def chat_unfurl(options = {})
168
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
169
- throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
170
- throw ArgumentError.new('Required arguments :unfurls missing') if options[:unfurls].nil?
171
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
247
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
248
+ raise ArgumentError, 'Required arguments :ts missing' if options[:ts].nil?
249
+ raise ArgumentError, 'Required arguments :unfurls missing' if options[:unfurls].nil?
250
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
251
+ options = encode_options_as_json(options, %i[unfurls user_auth_blocks])
172
252
  post('chat.unfurl', options)
173
253
  end
174
254
 
@@ -176,32 +256,37 @@ module Slack
176
256
  # Updates a message.
177
257
  #
178
258
  # @option options [channel] :channel
179
- # Channel containing the message to be updated.
180
- # @option options [Object] :text
181
- # New text for the message, using the default formatting rules. It's not required when presenting attachments.
259
+ # Channel containing the message to be updated. For direct messages, ensure that this value is a DM ID (starts with D) instead of a User ID (starts with either U or W).
182
260
  # @option options [timestamp] :ts
183
261
  # Timestamp of the message to be updated.
184
- # @option options [Object] :as_user
262
+ # @option options [string] :attachments
263
+ # A JSON-based array of structured attachments, presented as a URL-encoded string.
264
+ # @option options [blocks[] as string] :blocks
265
+ # A JSON-based array of structured blocks, presented as a URL-encoded string.
266
+ # @option options [string] :text
267
+ # How this field works and whether it is required depends on other fields you use in your API call. See below for more detail.
268
+ # @option options [boolean] :as_user
185
269
  # Pass true to update the message as the authed user. Bot users in this context are considered authed users.
186
- # @option options [Object] :attachments
187
- # A JSON-based array of structured attachments, presented as a URL-encoded string. This field is required when not presenting text.
188
- # @option options [Object] :link_names
189
- # Find and link channel names and usernames. Defaults to none. This parameter should be used in conjunction with parse. To set link_names to 1, specify a parse mode of full.
190
- # @option options [Object] :parse
191
- # Change how messages are treated. Defaults to client, unlike chat.postMessage. See below.
270
+ # @option options [array] :file_ids
271
+ # Array of new file ids that will be sent with this message.
272
+ # @option options [boolean] :link_names
273
+ # Find and link channel names and usernames. Defaults to none. If you do not specify a value for this field, the original value set for the message will be overwritten with the default, none.
274
+ # @option options [string] :markdown_text
275
+ # Accepts message text formatted in markdown. This argument should not be used in conjunction with blocks or text. Limit this field to 12,000 characters.
276
+ # @option options [string] :metadata
277
+ # JSON object with event_type and event_payload fields, presented as a URL-encoded string. If you don't include this field, the message's previous metadata will be retained. To remove previous metadata, include an empty object for this field. Metadata you post to Slack is accessible to any app or user who is a member of that workspace.
278
+ # @option options [string] :parse
279
+ # Change how messages are treated. Defaults to client, unlike chat.postMessage. Accepts either none or full. If you do not specify a value for this field, the original value set for the message will be overwritten with the default, client.
280
+ # @option options [boolean] :reply_broadcast
281
+ # Broadcast an existing thread reply to make it visible to everyone in the channel or conversation.
192
282
  # @see https://api.slack.com/methods/chat.update
193
283
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.update.json
194
284
  def chat_update(options = {})
195
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
196
- throw ArgumentError.new('Required arguments :text or :attachments missing') if options[:text].nil? && options[:attachments].nil?
197
- throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
198
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
199
- # attachments must be passed as an encoded JSON string
200
- if options.key?(:attachments)
201
- attachments = options[:attachments]
202
- attachments = JSON.dump(attachments) unless attachments.is_a?(String)
203
- options = options.merge(attachments: attachments)
204
- end
285
+ raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
286
+ raise ArgumentError, 'Required arguments :ts missing' if options[:ts].nil?
287
+ raise ArgumentError, 'At least one of :attachments, :blocks, :text is required' if options[:attachments].nil? && options[:blocks].nil? && options[:text].nil?
288
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
289
+ options = encode_options_as_json(options, %i[attachments blocks metadata])
205
290
  post('chat.update', options)
206
291
  end
207
292
  end
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ module Slack
5
+ module Web
6
+ module Api
7
+ module Endpoints
8
+ module ChatScheduledmessages
9
+ #
10
+ # Returns a list of scheduled messages.
11
+ #
12
+ # @option options [channel] :channel
13
+ # The channel of the scheduled messages.
14
+ # @option options [string] :cursor
15
+ # For pagination purposes, this is the cursor value returned from a previous call to chat.scheduledmessages.list indicating where you want to start this call from.
16
+ # @option options [timestamp] :latest
17
+ # A Unix timestamp of the latest value in the time range.
18
+ # @option options [integer] :limit
19
+ # Maximum number of original entries to return.
20
+ # @option options [timestamp] :oldest
21
+ # A Unix timestamp of the oldest value in the time range.
22
+ # @option options [string] :team_id
23
+ # encoded team id to list channels in, required if org token is used.
24
+ # @see https://api.slack.com/methods/chat.scheduledMessages.list
25
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat.scheduledMessages/chat.scheduledMessages.list.json
26
+ def chat_scheduledMessages_list(options = {})
27
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
28
+ if block_given?
29
+ Pagination::Cursor.new(self, :chat_scheduledMessages_list, options).each do |page|
30
+ yield page
31
+ end
32
+ else
33
+ post('chat.scheduledMessages.list', options)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
40
+ end