slack-ruby-client 0.7.2 → 1.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 (383) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.gitignore +2 -0
  4. data/.gitmodules +1 -1
  5. data/.rubocop.yml +37 -1
  6. data/.rubocop_todo.yml +130 -47
  7. data/.travis.yml +17 -13
  8. data/CHANGELOG.md +254 -43
  9. data/CONTRIBUTING.md +26 -15
  10. data/Dangerfile +3 -0
  11. data/Gemfile +13 -2
  12. data/LICENSE.md +1 -1
  13. data/README.md +287 -63
  14. data/RELEASING.md +22 -14
  15. data/Rakefile +2 -1
  16. data/UPGRADING.md +129 -5
  17. data/bin/commands/admin_analytics.rb +16 -0
  18. data/bin/commands/admin_apps.rb +51 -0
  19. data/bin/commands/admin_apps_approved.rb +17 -0
  20. data/bin/commands/admin_apps_requests.rb +17 -0
  21. data/bin/commands/admin_apps_restricted.rb +17 -0
  22. data/bin/commands/admin_auth_policy.rb +39 -0
  23. data/bin/commands/admin_barriers.rb +47 -0
  24. data/bin/commands/admin_conversations.rb +169 -0
  25. data/bin/commands/admin_conversations_ekm.rb +17 -0
  26. data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
  27. data/bin/commands/admin_conversations_whitelist.rb +37 -0
  28. data/bin/commands/admin_emoji.rb +54 -0
  29. data/bin/commands/admin_inviteRequests.rb +36 -0
  30. data/bin/commands/admin_inviteRequests_approved.rb +16 -0
  31. data/bin/commands/admin_inviteRequests_denied.rb +16 -0
  32. data/bin/commands/admin_teams.rb +27 -0
  33. data/bin/commands/admin_teams_admins.rb +16 -0
  34. data/bin/commands/admin_teams_owners.rb +16 -0
  35. data/bin/commands/admin_teams_settings.rb +64 -0
  36. data/bin/commands/admin_usergroups.rb +48 -0
  37. data/bin/commands/admin_users.rb +98 -0
  38. data/bin/commands/admin_users_session.rb +78 -0
  39. data/bin/commands/api.rb +3 -3
  40. data/bin/commands/apps.rb +15 -0
  41. data/bin/commands/apps_connections.rb +13 -0
  42. data/bin/commands/apps_event_authorizations.rb +16 -0
  43. data/bin/commands/apps_manifest.rb +51 -0
  44. data/bin/commands/apps_permissions.rb +23 -0
  45. data/bin/commands/apps_permissions_resources.rb +15 -0
  46. data/bin/commands/apps_permissions_scopes.rb +13 -0
  47. data/bin/commands/apps_permissions_users.rb +26 -0
  48. data/bin/commands/auth.rb +12 -2
  49. data/bin/commands/auth_teams.rb +16 -0
  50. data/bin/commands/bots.rb +15 -0
  51. data/bin/commands/calls.rb +52 -0
  52. data/bin/commands/calls_participants.rb +25 -0
  53. data/bin/commands/channels.rb +6 -132
  54. data/bin/commands/chat.rb +127 -20
  55. data/bin/commands/chat_scheduledMessages.rb +19 -0
  56. data/bin/commands/conversations.rb +253 -0
  57. data/bin/commands/dialog.rb +15 -0
  58. data/bin/commands/dnd.rb +12 -9
  59. data/bin/commands/emoji.rb +3 -2
  60. data/bin/commands/files.rb +47 -31
  61. data/bin/commands/files_comments.rb +3 -23
  62. data/bin/commands/files_remote.rb +78 -0
  63. data/bin/commands/groups.rb +1 -154
  64. data/bin/commands/im.rb +1 -48
  65. data/bin/commands/migration.rb +16 -0
  66. data/bin/commands/mpim.rb +1 -48
  67. data/bin/commands/oauth.rb +4 -2
  68. data/bin/commands/oauth_v2.rb +29 -0
  69. data/bin/commands/openid_connect.rb +27 -0
  70. data/bin/commands/pins.rb +9 -12
  71. data/bin/commands/reactions.rb +17 -15
  72. data/bin/commands/reminders.rb +17 -10
  73. data/bin/commands/rtm.rb +19 -4
  74. data/bin/commands/search.rb +17 -12
  75. data/bin/commands/stars.rb +12 -9
  76. data/bin/commands/team.rb +23 -8
  77. data/bin/commands/team_billing.rb +13 -0
  78. data/bin/commands/team_preferences.rb +13 -0
  79. data/bin/commands/team_profile.rb +14 -0
  80. data/bin/commands/tooling_tokens.rb +14 -0
  81. data/bin/commands/usergroups.rb +23 -17
  82. data/bin/commands/usergroups_users.rb +7 -4
  83. data/bin/commands/users.rb +83 -27
  84. data/bin/commands/users_admin.rb +29 -0
  85. data/bin/commands/users_prefs.rb +13 -0
  86. data/bin/commands/users_profile.rb +27 -0
  87. data/bin/commands/views.rb +48 -0
  88. data/bin/commands/workflows.rb +38 -0
  89. data/bin/commands.rb +47 -5
  90. data/bin/slack +3 -4
  91. data/examples/hi_real_time_and_web/Gemfile +1 -0
  92. data/examples/hi_real_time_and_web/hi.rb +8 -4
  93. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Gemfile +2 -1
  94. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Procfile +0 -0
  95. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/hi.rb +13 -8
  96. data/examples/hi_web/Gemfile +1 -0
  97. data/examples/hi_web/hi.rb +2 -1
  98. data/examples/new_ticket/Gemfile +1 -0
  99. data/examples/new_ticket/new_ticket.rb +3 -2
  100. data/lib/slack/config.rb +2 -2
  101. data/lib/slack/events/config.rb +32 -0
  102. data/lib/slack/events/request.rb +72 -0
  103. data/lib/slack/logger.rb +6 -5
  104. data/lib/slack/messages/formatting.rb +4 -4
  105. data/lib/slack/messages/message.rb +6 -4
  106. data/lib/slack/real_time/api/message.rb +3 -1
  107. data/lib/slack/real_time/api/message_id.rb +1 -0
  108. data/lib/slack/real_time/api/ping.rb +5 -2
  109. data/lib/slack/real_time/api/templates/event_handler.erb +1 -1
  110. data/lib/slack/real_time/api/typing.rb +3 -1
  111. data/lib/slack/real_time/client.rb +116 -36
  112. data/lib/slack/real_time/concurrency/async.rb +138 -0
  113. data/lib/slack/real_time/concurrency.rb +2 -2
  114. data/lib/slack/real_time/config.rb +17 -19
  115. data/lib/slack/real_time/models/base.rb +3 -3
  116. data/lib/slack/real_time/models/bot.rb +1 -0
  117. data/lib/slack/real_time/models/channel.rb +1 -0
  118. data/lib/slack/real_time/models/group.rb +1 -0
  119. data/lib/slack/real_time/models/im.rb +1 -0
  120. data/lib/slack/real_time/models/team.rb +1 -0
  121. data/lib/slack/real_time/models/user.rb +1 -0
  122. data/lib/slack/real_time/models.rb +8 -7
  123. data/lib/slack/real_time/socket.rb +51 -23
  124. data/lib/slack/real_time/stores/base.rb +6 -9
  125. data/lib/slack/real_time/stores/starter.rb +143 -69
  126. data/lib/slack/real_time/stores/store.rb +160 -82
  127. data/lib/slack/real_time/stores.rb +4 -3
  128. data/lib/slack/version.rb +2 -1
  129. data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
  130. data/lib/slack/web/api/endpoints/admin_apps.rb +78 -0
  131. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
  132. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +35 -0
  133. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
  134. data/lib/slack/web/api/endpoints/admin_auth_policy.rb +72 -0
  135. data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
  136. data/lib/slack/web/api/endpoints/admin_conversations.rb +260 -0
  137. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
  138. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
  139. data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +64 -0
  140. data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
  141. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
  142. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
  143. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
  144. data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
  145. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
  146. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
  147. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
  148. data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
  149. data/lib/slack/web/api/endpoints/admin_users.rb +163 -0
  150. data/lib/slack/web/api/endpoints/admin_users_session.rb +122 -0
  151. data/lib/slack/web/api/endpoints/api.rb +4 -5
  152. data/lib/slack/web/api/endpoints/apps.rb +27 -0
  153. data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
  154. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
  155. data/lib/slack/web/api/endpoints/apps_manifest.rb +75 -0
  156. data/lib/slack/web/api/endpoints/apps_permissions.rb +36 -0
  157. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +31 -0
  158. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +21 -0
  159. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +50 -0
  160. data/lib/slack/web/api/endpoints/auth.rb +14 -2
  161. data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
  162. data/lib/slack/web/api/endpoints/bots.rb +25 -0
  163. data/lib/slack/web/api/endpoints/calls.rb +83 -0
  164. data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
  165. data/lib/slack/web/api/endpoints/channels.rb +8 -201
  166. data/lib/slack/web/api/endpoints/chat.rb +252 -42
  167. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
  168. data/lib/slack/web/api/endpoints/conversations.rb +422 -0
  169. data/lib/slack/web/api/endpoints/dialog.rb +33 -0
  170. data/lib/slack/web/api/endpoints/dnd.rb +17 -12
  171. data/lib/slack/web/api/endpoints/emoji.rb +3 -2
  172. data/lib/slack/web/api/endpoints/files.rb +82 -43
  173. data/lib/slack/web/api/endpoints/files_comments.rb +4 -36
  174. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  175. data/lib/slack/web/api/endpoints/groups.rb +1 -235
  176. data/lib/slack/web/api/endpoints/im.rb +1 -73
  177. data/lib/slack/web/api/endpoints/migration.rb +28 -0
  178. data/lib/slack/web/api/endpoints/mpim.rb +1 -72
  179. data/lib/slack/web/api/endpoints/oauth.rb +9 -10
  180. data/lib/slack/web/api/endpoints/oauth_v2.rb +48 -0
  181. data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
  182. data/lib/slack/web/api/endpoints/pins.rb +14 -23
  183. data/lib/slack/web/api/endpoints/presence.rb +1 -1
  184. data/lib/slack/web/api/endpoints/reactions.rb +43 -34
  185. data/lib/slack/web/api/endpoints/reminders.rb +28 -15
  186. data/lib/slack/web/api/endpoints/rtm.rb +29 -8
  187. data/lib/slack/web/api/endpoints/search.rb +39 -24
  188. data/lib/slack/web/api/endpoints/stars.rb +30 -22
  189. data/lib/slack/web/api/endpoints/team.rb +34 -11
  190. data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
  191. data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
  192. data/lib/slack/web/api/endpoints/team_profile.rb +23 -0
  193. data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
  194. data/lib/slack/web/api/endpoints/usergroups.rb +43 -32
  195. data/lib/slack/web/api/endpoints/usergroups_users.rb +14 -9
  196. data/lib/slack/web/api/endpoints/users.rb +104 -19
  197. data/lib/slack/web/api/endpoints/users_admin.rb +49 -0
  198. data/lib/slack/web/api/endpoints/users_prefs.rb +21 -0
  199. data/lib/slack/web/api/endpoints/users_profile.rb +44 -0
  200. data/lib/slack/web/api/endpoints/views.rb +97 -0
  201. data/lib/slack/web/api/endpoints/workflows.rb +61 -0
  202. data/lib/slack/web/api/endpoints.rb +111 -29
  203. data/lib/slack/web/api/error.rb +2 -8
  204. data/lib/slack/web/api/errors/server_error.rb +37 -0
  205. data/lib/slack/web/api/errors/slack_error.rb +29 -0
  206. data/lib/slack/web/api/errors/too_many_requests_error.rb +21 -0
  207. data/lib/slack/web/api/errors.rb +1040 -0
  208. data/lib/slack/web/api/mixins/conversations.id.rb +25 -0
  209. data/lib/slack/web/api/mixins/ids.id.rb +24 -0
  210. data/lib/slack/web/api/mixins/users.id.rb +6 -7
  211. data/lib/slack/web/api/mixins/users.search.rb +39 -36
  212. data/lib/slack/web/api/mixins.rb +4 -4
  213. data/lib/slack/web/api/patches/chat.1.patch +70 -0
  214. data/lib/slack/web/api/patches/dialog.1.open-json-support.patch +17 -0
  215. data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
  216. data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
  217. data/lib/slack/web/api/templates/command.erb +5 -3
  218. data/lib/slack/web/api/templates/commands.erb +2 -1
  219. data/lib/slack/web/api/templates/endpoints.erb +5 -5
  220. data/lib/slack/web/api/templates/errors.erb +20 -0
  221. data/lib/slack/web/api/templates/method.erb +26 -4
  222. data/lib/slack/web/api/templates/method_spec.erb +3 -2
  223. data/lib/slack/web/client.rb +2 -1
  224. data/lib/slack/web/config.rb +21 -10
  225. data/lib/slack/web/faraday/connection.rb +25 -16
  226. data/lib/slack/web/faraday/request.rb +4 -1
  227. data/lib/slack/web/faraday/response/raise_error.rb +19 -1
  228. data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
  229. data/lib/slack/web/pagination/cursor.rb +48 -0
  230. data/lib/slack-ruby-client.rb +40 -26
  231. data/lib/slack.rb +1 -0
  232. data/lib/slack_ruby_client.rb +1 -0
  233. data/lib/tasks/git.rake +2 -1
  234. data/lib/tasks/real_time.rake +16 -6
  235. data/lib/tasks/update.rake +1 -0
  236. data/lib/tasks/web.rake +42 -10
  237. data/screenshots/create-app.png +0 -0
  238. data/slack-ruby-client.gemspec +11 -9
  239. data/spec/fixtures/slack/web/429_error.yml +50 -52
  240. data/spec/fixtures/slack/web/auth_test_error.yml +51 -18
  241. data/spec/fixtures/slack/web/auth_test_success.yml +50 -26
  242. data/spec/fixtures/slack/web/conversations_info.yml +167 -0
  243. data/spec/fixtures/slack/web/conversations_setTopic.yml +84 -0
  244. data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +172 -0
  245. data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +253 -0
  246. data/spec/fixtures/slack/web/paginated_users_list.yml +613 -0
  247. data/spec/fixtures/slack/web/rtm_connect.yml +307 -0
  248. data/spec/fixtures/slack/web/rtm_start.yml +771 -60
  249. data/spec/fixtures/slack/web/users_info.yml +153 -69
  250. data/spec/fixtures/slack/web/users_list.yml +102 -41
  251. data/spec/fixtures/slack/web/views_open_error.yml +83 -0
  252. data/spec/integration/integration_spec.rb +116 -48
  253. data/spec/slack/config_spec.rb +2 -0
  254. data/spec/slack/events/config_spec.rb +33 -0
  255. data/spec/slack/events/request_spec.rb +184 -0
  256. data/spec/slack/messages/formatting_spec.rb +25 -14
  257. data/spec/slack/real_time/api/message_spec.rb +6 -1
  258. data/spec/slack/real_time/api/ping_spec.rb +2 -0
  259. data/spec/slack/real_time/api/typing_spec.rb +5 -1
  260. data/spec/slack/real_time/client_spec.rb +465 -141
  261. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +21 -0
  262. data/spec/slack/real_time/concurrency/with_concurrency_spec.rb +10 -0
  263. data/spec/slack/real_time/concurrency/without_concurrency_spec.rb +10 -0
  264. data/spec/slack/real_time/event_handlers/bot_spec.rb +7 -4
  265. data/spec/slack/real_time/event_handlers/channel_spec.rb +10 -7
  266. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +3 -2
  267. data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
  268. data/spec/slack/real_time/event_handlers/im_spec.rb +9 -8
  269. data/spec/slack/real_time/event_handlers/team_spec.rb +8 -4
  270. data/spec/slack/real_time/event_handlers/user_spec.rb +7 -4
  271. data/spec/slack/real_time/rtm_connect_spec.rb +14 -0
  272. data/spec/slack/real_time/rtm_start_spec.rb +2 -1
  273. data/spec/slack/real_time/store_spec.rb +2 -1
  274. data/spec/slack/slack_spec.rb +42 -8
  275. data/spec/slack/version_spec.rb +2 -1
  276. data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
  277. data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
  278. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
  279. data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
  280. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +18 -0
  281. data/spec/slack/web/api/endpoints/admin_auth_policy_spec.rb +35 -0
  282. data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
  283. data/spec/slack/web/api/endpoints/admin_conversations_ekm_spec.rb +8 -0
  284. data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
  285. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +98 -0
  286. data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
  287. data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
  288. data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
  289. data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
  290. data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
  291. data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
  292. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
  293. data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
  294. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
  295. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +41 -0
  296. data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
  297. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  298. data/spec/slack/web/api/endpoints/apps_connections_spec.rb +8 -0
  299. data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
  300. data/spec/slack/web/api/endpoints/apps_manifest_spec.rb +36 -0
  301. data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
  302. data/spec/slack/web/api/endpoints/auth_teams_spec.rb +8 -0
  303. data/spec/slack/web/api/endpoints/bots_spec.rb +8 -0
  304. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
  305. data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
  306. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +8 -0
  307. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +11 -4
  308. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +140 -24
  309. data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
  310. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +36 -0
  311. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +22 -7
  312. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
  313. data/spec/slack/web/api/endpoints/dnd_spec.rb +4 -3
  314. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  315. data/spec/slack/web/api/endpoints/files_comments_spec.rb +3 -21
  316. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  317. data/spec/slack/web/api/endpoints/files_spec.rb +17 -5
  318. data/spec/slack/web/api/endpoints/migration_spec.rb +13 -0
  319. data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -11
  320. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +16 -0
  321. data/spec/slack/web/api/endpoints/openid_connect_spec.rb +8 -0
  322. data/spec/slack/web/api/endpoints/pins_spec.rb +1 -0
  323. data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
  324. data/spec/slack/web/api/endpoints/reminders_spec.rb +3 -2
  325. data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
  326. data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
  327. data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
  328. data/spec/slack/web/api/endpoints/team_billing_spec.rb +8 -0
  329. data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -0
  330. data/spec/slack/web/api/endpoints/team_profile_spec.rb +8 -0
  331. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  332. data/spec/slack/web/api/endpoints/tooling_tokens_spec.rb +13 -0
  333. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  334. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +3 -2
  335. data/spec/slack/web/api/endpoints/users_admin_spec.rb +18 -0
  336. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +8 -0
  337. data/spec/slack/web/api/endpoints/users_profile_spec.rb +8 -0
  338. data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
  339. data/spec/slack/web/api/error_spec.rb +7 -7
  340. data/spec/slack/web/api/errors/slack_error_spec.rb +33 -0
  341. data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
  342. data/spec/slack/web/api/mixins/conversations_spec.rb +43 -0
  343. data/spec/slack/web/api/mixins/users_spec.rb +30 -17
  344. data/spec/slack/web/api/pagination/cursor_spec.rb +98 -0
  345. data/spec/slack/web/client_spec.rb +211 -14
  346. data/spec/slack/web/faraday/request_spec.rb +80 -0
  347. data/spec/slack/web/faraday/response/raise_error_spec.rb +86 -0
  348. data/spec/spec_helper.rb +9 -2
  349. data/spec/support/queue_with_timeout.rb +6 -5
  350. data/spec/support/real_time/concurrency/mock.rb +2 -2
  351. data/spec/support/real_time/connected_client.rb +7 -2
  352. data/spec/support/real_time/event.rb +1 -0
  353. data/spec/support/token.rb +1 -0
  354. data/spec/support/vcr.rb +37 -1
  355. metadata +250 -130
  356. data/examples/hi_real_time/Gemfile +0 -5
  357. data/examples/hi_real_time/hi.gif +0 -0
  358. data/examples/hi_real_time/hi.rb +0 -37
  359. data/examples/hi_real_time_async/Gemfile +0 -5
  360. data/examples/hi_real_time_async/hi.rb +0 -29
  361. data/examples/hi_real_time_async_eventmachine/Gemfile +0 -6
  362. data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
  363. data/examples/hi_real_time_async_eventmachine/hi.rb +0 -36
  364. data/lib/slack/real_time/concurrency/celluloid.rb +0 -100
  365. data/lib/slack/real_time/concurrency/eventmachine.rb +0 -60
  366. data/lib/slack/web/api/mixins/channels.id.json +0 -20
  367. data/lib/slack/web/api/mixins/channels.id.rb +0 -26
  368. data/lib/slack/web/api/mixins/groups.id.json +0 -20
  369. data/lib/slack/web/api/mixins/groups.id.rb +0 -26
  370. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
  371. data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
  372. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -20
  373. data/screenshots/register-bot.png +0 -0
  374. data/spec/fixtures/slack/web/channels_info.yml +0 -46
  375. data/spec/fixtures/slack/web/groups_info.yml +0 -43
  376. data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -35
  377. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -50
  378. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -11
  379. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -11
  380. data/spec/slack/web/api/endpoints/im_spec.rb +0 -30
  381. data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -30
  382. data/spec/slack/web/api/mixins/channels_spec.rb +0 -31
  383. data/spec/slack/web/api/mixins/groups_spec.rb +0 -31
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'AppsPermissionsUsers methods.'
5
+ command 'apps_permissions_users' do |g|
6
+ g.desc 'Returns list of user grants and corresponding scopes this app has on a team.'
7
+ g.long_desc %( Returns list of user grants and corresponding scopes this app has on a team. )
8
+ g.command 'list' do |c|
9
+ c.flag 'cursor', desc: "Paginate through collections of data by setting the cursor parameter to a next_cursor attribute returned by a previous request's response_metadata. Default value fetches the first 'page' of the collection. See pagination for more detail."
10
+ c.flag 'limit', desc: 'The maximum number of items to return.'
11
+ c.action do |_global_options, options, _args|
12
+ puts JSON.dump($client.apps_permissions_users_list(options))
13
+ end
14
+ end
15
+
16
+ g.desc 'Enables an app to trigger a permissions modal to grant an app access to a user access scope.'
17
+ g.long_desc %( Enables an app to trigger a permissions modal to grant an app access to a user access scope. )
18
+ g.command 'request' do |c|
19
+ c.flag 'scopes', desc: 'A comma separated list of user scopes to request for.'
20
+ c.flag 'trigger_id', desc: 'Token used to trigger the request.'
21
+ c.flag 'user', desc: 'The user this scope is being requested for.'
22
+ c.action do |_global_options, options, _args|
23
+ puts JSON.dump($client.apps_permissions_users_request(options))
24
+ end
25
+ end
26
+ end
data/bin/commands/auth.rb CHANGED
@@ -1,9 +1,19 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  desc 'Auth methods.'
4
5
  command 'auth' do |g|
5
- g.desc 'This method checks authentication and tells you who you are.'
6
- g.long_desc %( This method checks authentication and tells you who you are. )
6
+ g.desc 'Revokes a token.'
7
+ g.long_desc %( Revokes a token. )
8
+ g.command 'revoke' do |c|
9
+ c.flag 'test', desc: 'Setting this parameter to 1 triggers a testing mode where the specified token will not actually be revoked.'
10
+ c.action do |_global_options, options, _args|
11
+ puts JSON.dump($client.auth_revoke(options))
12
+ end
13
+ end
14
+
15
+ g.desc 'Checks authentication & identity.'
16
+ g.long_desc %( Checks authentication & identity. )
7
17
  g.command 'test' do |c|
8
18
  c.action do |_global_options, options, _args|
9
19
  puts JSON.dump($client.auth_test(options))
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'AuthTeams methods.'
5
+ command 'auth_teams' do |g|
6
+ g.desc 'List the workspaces a token can access.'
7
+ g.long_desc %( List the workspaces a token can access. )
8
+ g.command 'list' do |c|
9
+ c.flag 'cursor', desc: 'Set cursor to next_cursor returned by the previous call to list items in the next page.'
10
+ c.flag 'include_icon', desc: 'Whether to return icon paths for each workspace. An icon path represents a URI pointing to the image signifying the workspace.'
11
+ c.flag 'limit', desc: 'The maximum number of workspaces to return. Must be a positive integer no larger than 1000.'
12
+ c.action do |_global_options, options, _args|
13
+ puts JSON.dump($client.auth_teams_list(options))
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,15 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'Bots methods.'
5
+ command 'bots' do |g|
6
+ g.desc 'Gets information about a bot user.'
7
+ g.long_desc %( Gets information about a bot user. )
8
+ g.command 'info' do |c|
9
+ c.flag 'bot', desc: 'Bot user to get info on.'
10
+ c.flag 'team_id', desc: 'encoded team id or enterprise id where the bot exists, required if org token is used.'
11
+ c.action do |_global_options, options, _args|
12
+ puts JSON.dump($client.bots_info(options))
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'Calls methods.'
5
+ command 'calls' do |g|
6
+ g.desc 'Registers a new Call.'
7
+ g.long_desc %( Registers a new Call. )
8
+ g.command 'add' do |c|
9
+ c.flag 'external_unique_id', desc: 'An ID supplied by the 3rd-party Call provider. It must be unique across all Calls from that service.'
10
+ c.flag 'join_url', desc: 'The URL required for a client to join the Call.'
11
+ c.flag 'created_by', desc: 'The valid Slack user ID of the user who created this Call. When this method is called with a user token, the created_by field is optional and defaults to the authed user of the token. Otherwise, the field is required.'
12
+ c.flag 'date_start', desc: 'Call start time in UTC UNIX timestamp format.'
13
+ c.flag 'desktop_app_join_url', desc: 'When supplied, available Slack clients will attempt to directly launch the 3rd-party Call with this URL.'
14
+ c.flag 'external_display_id', desc: 'An optional, human-readable ID supplied by the 3rd-party Call provider. If supplied, this ID will be displayed in the Call object.'
15
+ c.flag 'title', desc: 'The name of the Call.'
16
+ c.flag 'users', desc: 'The list of users to register as participants in the Call. Read more on how to specify users here.'
17
+ c.action do |_global_options, options, _args|
18
+ puts JSON.dump($client.calls_add(options))
19
+ end
20
+ end
21
+
22
+ g.desc 'Ends a Call.'
23
+ g.long_desc %( Ends a Call. )
24
+ g.command 'end' do |c|
25
+ c.flag 'id', desc: 'id returned when registering the call using the calls.add method.'
26
+ c.flag 'duration', desc: 'Call duration in seconds.'
27
+ c.action do |_global_options, options, _args|
28
+ puts JSON.dump($client.calls_end(options))
29
+ end
30
+ end
31
+
32
+ g.desc 'Returns information about a Call.'
33
+ g.long_desc %( Returns information about a Call. )
34
+ g.command 'info' do |c|
35
+ c.flag 'id', desc: 'id of the Call returned by the calls.add method.'
36
+ c.action do |_global_options, options, _args|
37
+ puts JSON.dump($client.calls_info(options))
38
+ end
39
+ end
40
+
41
+ g.desc 'Updates information about a Call.'
42
+ g.long_desc %( Updates information about a Call. )
43
+ g.command 'update' do |c|
44
+ c.flag 'id', desc: 'id returned by the calls.add method.'
45
+ c.flag 'desktop_app_join_url', desc: 'When supplied, available Slack clients will attempt to directly launch the 3rd-party Call with this URL.'
46
+ c.flag 'join_url', desc: 'The URL required for a client to join the Call.'
47
+ c.flag 'title', desc: 'The name of the Call.'
48
+ c.action do |_global_options, options, _args|
49
+ puts JSON.dump($client.calls_update(options))
50
+ end
51
+ end
52
+ end
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'CallsParticipants methods.'
5
+ command 'calls_participants' do |g|
6
+ g.desc 'Registers new participants added to a Call.'
7
+ g.long_desc %( Registers new participants added to a Call. )
8
+ g.command 'add' do |c|
9
+ c.flag 'id', desc: 'id returned by the calls.add method.'
10
+ c.flag 'users', desc: 'The list of users to add as participants in the Call. Read more on how to specify users here.'
11
+ c.action do |_global_options, options, _args|
12
+ puts JSON.dump($client.calls_participants_add(options))
13
+ end
14
+ end
15
+
16
+ g.desc 'Registers participants removed from a Call.'
17
+ g.long_desc %( Registers participants removed from a Call. )
18
+ g.command 'remove' do |c|
19
+ c.flag 'id', desc: 'id returned by the calls.add method.'
20
+ c.flag 'users', desc: 'The list of users to remove as participants in the Call. Read more on how to specify users here.'
21
+ c.action do |_global_options, options, _args|
22
+ puts JSON.dump($client.calls_participants_remove(options))
23
+ end
24
+ end
25
+ end
@@ -1,140 +1,14 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  desc "Get info on your team's Slack channels, create or archive channels, invite users, set the topic and purpose, and mark a channel as read."
4
5
  command 'channels' do |g|
5
- g.desc 'This method archives a channel.'
6
- g.long_desc %( This method archives a channel. )
7
- g.command 'archive' do |c|
8
- c.flag 'channel', desc: 'Channel to archive.'
6
+ g.desc 'Delete a channel (undocumented)'
7
+ g.long_desc %( Delete a channel )
8
+ g.command 'delete' do |c|
9
+ c.flag 'channel', desc: 'Channel to delete.'
9
10
  c.action do |_global_options, options, _args|
10
- puts JSON.dump($client.channels_archive(options))
11
- end
12
- end
13
-
14
- g.desc 'This method is used to create a channel.'
15
- g.long_desc %( This method is used to create a channel. )
16
- g.command 'create' do |c|
17
- c.flag 'name', desc: 'Name of channel to create.'
18
- c.action do |_global_options, options, _args|
19
- puts JSON.dump($client.channels_create(options))
20
- end
21
- end
22
-
23
- g.desc 'This method returns a portion of message events from the specified channel.'
24
- g.long_desc %( This method returns a portion of message events from the specified channel. )
25
- g.command 'history' do |c|
26
- c.flag 'channel', desc: 'Channel to fetch history for.'
27
- c.flag 'latest', desc: 'End of time range of messages to include in results.'
28
- c.flag 'oldest', desc: 'Start of time range of messages to include in results.'
29
- c.flag 'inclusive', desc: 'Include messages with latest or oldest timestamp in results.'
30
- c.flag 'unreads', desc: 'Include unread_count_display in the output?.'
31
- c.action do |_global_options, options, _args|
32
- puts JSON.dump($client.channels_history(options))
33
- end
34
- end
35
-
36
- g.desc 'This method returns information about a team channel.'
37
- g.long_desc %( This method returns information about a team channel. )
38
- g.command 'info' do |c|
39
- c.flag 'channel', desc: 'Channel to get info on.'
40
- c.action do |_global_options, options, _args|
41
- puts JSON.dump($client.channels_info(options))
42
- end
43
- end
44
-
45
- g.desc 'This method is used to invite a user to a channel. The calling user must be a member of the channel.'
46
- g.long_desc %( This method is used to invite a user to a channel. The calling user must be a member of the channel. )
47
- g.command 'invite' do |c|
48
- c.flag 'channel', desc: 'Channel to invite user to.'
49
- c.flag 'user', desc: 'User to invite to channel.'
50
- c.action do |_global_options, options, _args|
51
- puts JSON.dump($client.channels_invite(options))
52
- end
53
- end
54
-
55
- g.desc 'This method is used to join a channel. If the channel does not exist, it is'
56
- g.long_desc %( This method is used to join a channel. If the channel does not exist, it is created. )
57
- g.command 'join' do |c|
58
- c.flag 'name', desc: 'Name of channel to join.'
59
- c.action do |_global_options, options, _args|
60
- puts JSON.dump($client.channels_join(options))
61
- end
62
- end
63
-
64
- g.desc 'This method allows a user to remove another member from a team channel.'
65
- g.long_desc %( This method allows a user to remove another member from a team channel. )
66
- g.command 'kick' do |c|
67
- c.flag 'channel', desc: 'Channel to remove user from.'
68
- c.flag 'user', desc: 'User to remove from channel.'
69
- c.action do |_global_options, options, _args|
70
- puts JSON.dump($client.channels_kick(options))
71
- end
72
- end
73
-
74
- g.desc 'This method is used to leave a channel.'
75
- g.long_desc %( This method is used to leave a channel. )
76
- g.command 'leave' do |c|
77
- c.flag 'channel', desc: 'Channel to leave.'
78
- c.action do |_global_options, options, _args|
79
- puts JSON.dump($client.channels_leave(options))
80
- end
81
- end
82
-
83
- g.desc 'This method returns a list of all channels in the team. This includes channels the caller is in, channels they are not currently in, and archived channels but does not include private channels. The number of (non-deactivated) members in each channel is also returned.'
84
- g.long_desc %( This method returns a list of all channels in the team. This includes channels the caller is in, channels they are not currently in, and archived channels but does not include private channels. The number of (non-deactivated) members in each channel is also returned. )
85
- g.command 'list' do |c|
86
- c.flag 'exclude_archived', desc: "Don't return archived channels."
87
- c.action do |_global_options, options, _args|
88
- puts JSON.dump($client.channels_list(options))
89
- end
90
- end
91
-
92
- g.desc 'This method moves the read cursor in a channel.'
93
- g.long_desc %( This method moves the read cursor in a channel. )
94
- g.command 'mark' do |c|
95
- c.flag 'channel', desc: 'Channel to set reading cursor in.'
96
- c.flag 'ts', desc: 'Timestamp of the most recently seen message.'
97
- c.action do |_global_options, options, _args|
98
- puts JSON.dump($client.channels_mark(options))
99
- end
100
- end
101
-
102
- g.desc 'This method renames a team channel.'
103
- g.long_desc %( This method renames a team channel. )
104
- g.command 'rename' do |c|
105
- c.flag 'channel', desc: 'Channel to rename.'
106
- c.flag 'name', desc: 'New name for channel.'
107
- c.action do |_global_options, options, _args|
108
- puts JSON.dump($client.channels_rename(options))
109
- end
110
- end
111
-
112
- g.desc 'This method is used to change the purpose of a channel. The calling user must be a member of the channel.'
113
- g.long_desc %( This method is used to change the purpose of a channel. The calling user must be a member of the channel. )
114
- g.command 'setPurpose' do |c|
115
- c.flag 'channel', desc: 'Channel to set the purpose of.'
116
- c.flag 'purpose', desc: 'The new purpose.'
117
- c.action do |_global_options, options, _args|
118
- puts JSON.dump($client.channels_setPurpose(options))
119
- end
120
- end
121
-
122
- g.desc 'This method is used to change the topic of a channel. The calling user must be a member of the channel.'
123
- g.long_desc %( This method is used to change the topic of a channel. The calling user must be a member of the channel. )
124
- g.command 'setTopic' do |c|
125
- c.flag 'channel', desc: 'Channel to set the topic of.'
126
- c.flag 'topic', desc: 'The new topic.'
127
- c.action do |_global_options, options, _args|
128
- puts JSON.dump($client.channels_setTopic(options))
129
- end
130
- end
131
-
132
- g.desc 'This method unarchives a channel. The calling user is added to the channel.'
133
- g.long_desc %( This method unarchives a channel. The calling user is added to the channel. )
134
- g.command 'unarchive' do |c|
135
- c.flag 'channel', desc: 'Channel to unarchive.'
136
- c.action do |_global_options, options, _args|
137
- puts JSON.dump($client.channels_unarchive(options))
11
+ puts JSON.dump($client.channels_delete(options))
138
12
  end
139
13
  end
140
14
 
data/bin/commands/chat.rb CHANGED
@@ -1,47 +1,154 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
- desc 'Post chat messages to Slack.'
4
+ desc 'Chat methods.'
4
5
  command 'chat' do |g|
5
- g.desc 'This method deletes a message from a channel.'
6
- g.long_desc %( This method deletes a message from a channel. )
6
+ g.desc 'Execute a slash command in a public channel (undocumented)'
7
+ g.long_desc %( Execute a slash command in a public channel )
8
+ g.command 'command' do |c|
9
+ c.flag 'channel', desc: 'Channel to execute the command in.'
10
+ c.flag 'command', desc: 'Slash command to be executed. Leading backslash is required.'
11
+ c.flag 'text', desc: 'Additional parameters provided to the slash command.'
12
+ c.action do |_global_options, options, _args|
13
+ puts JSON.dump($client.chat_command(options))
14
+ end
15
+ end
16
+
17
+ g.desc 'Deletes a message.'
18
+ g.long_desc %( Deletes a message. )
7
19
  g.command 'delete' do |c|
8
- c.flag 'ts', desc: 'Timestamp of the message to be deleted.'
9
20
  c.flag 'channel', desc: 'Channel containing the message to be deleted.'
10
- c.flag 'as_user', desc: 'Pass true to delete the message as the authed user. Bot users in this context are considered authed users.'
21
+ c.flag 'ts', desc: 'Timestamp of the message to be deleted.'
22
+ c.flag 'as_user', desc: '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.'
11
23
  c.action do |_global_options, options, _args|
12
24
  puts JSON.dump($client.chat_delete(options))
13
25
  end
14
26
  end
15
27
 
16
- g.desc 'This method posts a message to a public channel, private group, or IM channel.'
17
- g.long_desc %( This method posts a message to a public channel, private group, or IM channel. )
28
+ g.desc 'Deletes a pending scheduled message from the queue.'
29
+ g.long_desc %( Deletes a pending scheduled message from the queue. )
30
+ g.command 'deleteScheduledMessage' do |c|
31
+ c.flag 'channel', desc: 'The channel the scheduled_message is posting to.'
32
+ c.flag 'scheduled_message_id', desc: 'scheduled_message_id returned from call to chat.scheduleMessage.'
33
+ c.flag 'as_user', desc: '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
+ c.action do |_global_options, options, _args|
35
+ puts JSON.dump($client.chat_deleteScheduledMessage(options))
36
+ end
37
+ end
38
+
39
+ g.desc 'Retrieve a permalink URL for a specific extant message'
40
+ g.long_desc %( Retrieve a permalink URL for a specific extant message )
41
+ g.command 'getPermalink' do |c|
42
+ c.flag 'channel', desc: 'The ID of the conversation or channel containing the message.'
43
+ c.flag 'message_ts', desc: "A message's ts value, uniquely identifying it within a channel."
44
+ c.action do |_global_options, options, _args|
45
+ puts JSON.dump($client.chat_getPermalink(options))
46
+ end
47
+ end
48
+
49
+ g.desc 'Share a me message into a channel.'
50
+ g.long_desc %( Share a me message into a channel. )
51
+ g.command 'meMessage' do |c|
52
+ c.flag 'channel', desc: 'Channel to send message to. Can be a public channel, private group or IM channel. Can be an encoded ID, or a name.'
53
+ c.flag 'text', desc: 'Text of the message to send.'
54
+ c.action do |_global_options, options, _args|
55
+ puts JSON.dump($client.chat_meMessage(options))
56
+ end
57
+ end
58
+
59
+ g.desc 'Sends an ephemeral message to a user in a channel.'
60
+ g.long_desc %( Sends an ephemeral message to a user in a channel. )
61
+ g.command 'postEphemeral' do |c|
62
+ c.flag 'channel', desc: 'Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name.'
63
+ c.flag 'text', desc: 'How this field works and whether it is required depends on other fields you use in your API call. See below for more detail.'
64
+ c.flag 'user', desc: 'id of the user who will receive the ephemeral message. The user should be in the channel specified by the channel argument.'
65
+ c.flag 'as_user', desc: '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.'
66
+ c.flag 'attachments', desc: 'A JSON-based array of structured attachments, presented as a URL-encoded string.'
67
+ c.flag 'blocks', desc: 'A JSON-based array of structured blocks, presented as a URL-encoded string.'
68
+ c.flag 'icon_emoji', desc: '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.'
69
+ c.flag 'icon_url', desc: '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.'
70
+ c.flag 'link_names', desc: 'Find and link channel names and usernames.'
71
+ c.flag 'parse', desc: 'Change how messages are treated. Defaults to none. See below.'
72
+ c.flag 'thread_ts', desc: "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."
73
+ c.flag 'username', desc: "Set your bot's user name. Must be used in conjunction with as_user set to false, otherwise ignored. See authorship below."
74
+ c.action do |_global_options, options, _args|
75
+ puts JSON.dump($client.chat_postEphemeral(options))
76
+ end
77
+ end
78
+
79
+ g.desc 'Sends a message to a channel.'
80
+ g.long_desc %( Sends a message to a channel. )
18
81
  g.command 'postMessage' do |c|
19
82
  c.flag 'channel', desc: 'Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name. See below for more details.'
20
- c.flag 'text', desc: 'Text of the message to send. See below for an explanation of formatting.'
21
- c.flag 'parse', desc: 'Change how messages are treated. Defaults to none. See below.'
83
+ c.flag 'attachments', desc: 'A JSON-based array of structured attachments, presented as a URL-encoded string.'
84
+ c.flag 'blocks', desc: 'A JSON-based array of structured blocks, presented as a URL-encoded string.'
85
+ c.flag 'text', desc: 'The formatted text of the message to be published. If blocks are included, this will become the fallback text used in notifications.'
86
+ c.flag 'as_user', desc: 'Pass true to post the message as the authed user, instead of as a bot. Defaults to false. See authorship below.'
87
+ c.flag 'icon_emoji', desc: '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.'
88
+ c.flag 'icon_url', desc: '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.'
22
89
  c.flag 'link_names', desc: 'Find and link channel names and usernames.'
23
- c.flag 'attachments', desc: 'Structured message attachments.'
90
+ c.flag 'mrkdwn', desc: 'Disable Slack markup parsing by setting to false. Enabled by default.'
91
+ c.flag 'parse', desc: 'Change how messages are treated. Defaults to none. See below.'
92
+ c.flag 'reply_broadcast', desc: 'Used in conjunction with thread_ts and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to false.'
93
+ c.flag 'thread_ts', desc: "Provide another message's ts value to make this message a reply. Avoid using a reply's ts value; use its parent instead."
24
94
  c.flag 'unfurl_links', desc: 'Pass true to enable unfurling of primarily text-based content.'
25
95
  c.flag 'unfurl_media', desc: 'Pass false to disable unfurling of media content.'
26
96
  c.flag 'username', desc: "Set your bot's user name. Must be used in conjunction with as_user set to false, otherwise ignored. See authorship below."
27
- c.flag 'as_user', desc: 'Pass true to post the message as the authed user, instead of as a bot. Defaults to false. See authorship below.'
28
- c.flag 'icon_url', desc: '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.'
29
- c.flag 'icon_emoji', desc: '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.'
30
97
  c.action do |_global_options, options, _args|
31
98
  puts JSON.dump($client.chat_postMessage(options))
32
99
  end
33
100
  end
34
101
 
35
- g.desc 'This method updates a message in a channel. Though related to chat.postMessage, some parameters of chat.update are handled differently.'
36
- g.long_desc %( This method updates a message in a channel. Though related to chat.postMessage, some parameters of chat.update are handled differently. )
102
+ g.desc 'Schedules a message to be sent to a channel.'
103
+ g.long_desc %( Schedules a message to be sent to a channel. )
104
+ g.command 'scheduleMessage' do |c|
105
+ c.flag 'channel', desc: 'Channel, private group, or DM channel to send message to. Can be an encoded ID, or a name. See below for more details.'
106
+ c.flag 'post_at', desc: 'Unix EPOCH timestamp of time in future to send the message.'
107
+ c.flag 'text', desc: 'How this field works and whether it is required depends on other fields you use in your API call. See below for more detail.'
108
+ c.flag 'as_user', desc: 'Pass true to post the message as the authed user, instead of as a bot. Defaults to false. See chat.postMessage.'
109
+ c.flag 'attachments', desc: 'A JSON-based array of structured attachments, presented as a URL-encoded string.'
110
+ c.flag 'blocks', desc: 'A JSON-based array of structured blocks, presented as a URL-encoded string.'
111
+ c.flag 'link_names', desc: 'Find and link channel names and usernames.'
112
+ c.flag 'parse', desc: 'Change how messages are treated. Defaults to none. See chat.postMessage.'
113
+ c.flag 'reply_broadcast', desc: 'Used in conjunction with thread_ts and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to false.'
114
+ c.flag 'thread_ts', desc: "Provide another message's ts value to make this message a reply. Avoid using a reply's ts value; use its parent instead."
115
+ c.flag 'unfurl_links', desc: 'Pass true to enable unfurling of primarily text-based content.'
116
+ c.flag 'unfurl_media', desc: 'Pass false to disable unfurling of media content.'
117
+ c.action do |_global_options, options, _args|
118
+ puts JSON.dump($client.chat_scheduleMessage(options))
119
+ end
120
+ end
121
+
122
+ g.desc 'Provide custom unfurl behavior for user-posted URLs'
123
+ g.long_desc %( Provide custom unfurl behavior for user-posted URLs )
124
+ g.command 'unfurl' do |c|
125
+ c.flag 'channel', desc: 'Channel ID of the message. Both channel and ts must be provided together, or unfurl_id and source must be provided together.'
126
+ c.flag 'ts', desc: 'Timestamp of the message to add unfurl behavior to.'
127
+ c.flag 'unfurls', desc: 'URL-encoded JSON map with keys set to URLs featured in the the message, pointing to their unfurl blocks or message attachments.'
128
+ c.flag 'source', desc: '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.'
129
+ c.flag 'unfurl_id', desc: 'The ID of the link to unfurl. Both unfurl_id and source must be provided together, or channel and ts must be provided together.'
130
+ c.flag 'user_auth_blocks', desc: '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.'
131
+ c.flag 'user_auth_message', desc: '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.'
132
+ c.flag 'user_auth_required', desc: 'Set to true or 1 to indicate the user must install your Slack app to trigger unfurls for this domain.'
133
+ c.flag 'user_auth_url', desc: 'Send users to this custom URL where they will complete authentication in your app to fully trigger unfurling. Value should be properly URL-encoded.'
134
+ c.action do |_global_options, options, _args|
135
+ puts JSON.dump($client.chat_unfurl(options))
136
+ end
137
+ end
138
+
139
+ g.desc 'Updates a message.'
140
+ g.long_desc %( Updates a message. )
37
141
  g.command 'update' do |c|
38
- c.flag 'ts', desc: 'Timestamp of the message to be updated.'
39
142
  c.flag 'channel', desc: 'Channel containing the message to be updated.'
40
- c.flag 'text', desc: 'New text for the message, using the default formatting rules.'
41
- c.flag 'attachments', desc: 'Structured message attachments.'
42
- c.flag 'parse', desc: 'Change how messages are treated. Defaults to client, unlike chat.postMessage. See below.'
43
- c.flag 'link_names', desc: '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.'
143
+ c.flag 'ts', desc: 'Timestamp of the message to be updated.'
44
144
  c.flag 'as_user', desc: 'Pass true to update the message as the authed user. Bot users in this context are considered authed users.'
145
+ c.flag 'attachments', desc: "A JSON-based array of structured attachments, presented as a URL-encoded string. This field is required when not presenting text. If you don't include this field, the message's previous attachments will be retained. To remove previous attachments, include an empty array for this field."
146
+ c.flag 'blocks', desc: "A JSON-based array of structured blocks, presented as a URL-encoded string. If you don't include this field, the message's previous blocks will be retained. To remove previous blocks, include an empty array for this field."
147
+ c.flag 'file_ids', desc: 'Array of new file ids that will be sent with this message.'
148
+ c.flag 'link_names', desc: '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.'
149
+ c.flag 'parse', desc: '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.'
150
+ c.flag 'reply_broadcast', desc: 'Broadcast an existing thread reply to make it visible to everyone in the channel or conversation.'
151
+ c.flag 'text', desc: "New text for the message, using the default formatting rules. It's not required when presenting blocks or attachments."
45
152
  c.action do |_global_options, options, _args|
46
153
  puts JSON.dump($client.chat_update(options))
47
154
  end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'ChatScheduledmessages methods.'
5
+ command 'chat_scheduledMessages' do |g|
6
+ g.desc 'Returns a list of scheduled messages.'
7
+ g.long_desc %( Returns a list of scheduled messages. )
8
+ g.command 'list' do |c|
9
+ c.flag 'channel', desc: 'The channel of the scheduled messages.'
10
+ c.flag 'cursor', desc: '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.'
11
+ c.flag 'latest', desc: 'A UNIX timestamp of the latest value in the time range.'
12
+ c.flag 'limit', desc: 'Maximum number of original entries to return.'
13
+ c.flag 'oldest', desc: 'A UNIX timestamp of the oldest value in the time range.'
14
+ c.flag 'team_id', desc: 'encoded team id to list channels in, required if org token is used.'
15
+ c.action do |_global_options, options, _args|
16
+ puts JSON.dump($client.chat_scheduledMessages_list(options))
17
+ end
18
+ end
19
+ end