slack-ruby-client 0.13.0 → 0.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (356) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.gitignore +1 -0
  4. data/.rubocop.yml +24 -5
  5. data/.rubocop_todo.yml +100 -54
  6. data/.travis.yml +4 -8
  7. data/CHANGELOG.md +118 -35
  8. data/CONTRIBUTING.md +17 -6
  9. data/Dangerfile +2 -0
  10. data/Gemfile +10 -5
  11. data/LICENSE.md +1 -1
  12. data/README.md +185 -48
  13. data/Rakefile +2 -1
  14. data/UPGRADING.md +30 -2
  15. data/bin/commands.rb +32 -0
  16. data/bin/commands/admin_analytics.rb +16 -0
  17. data/bin/commands/admin_apps.rb +40 -0
  18. data/bin/commands/admin_apps_approved.rb +17 -0
  19. data/bin/commands/admin_apps_requests.rb +16 -0
  20. data/bin/commands/admin_apps_restricted.rb +17 -0
  21. data/bin/commands/admin_barriers.rb +47 -0
  22. data/bin/commands/admin_conversations.rb +159 -0
  23. data/bin/commands/admin_conversations_ekm.rb +17 -0
  24. data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
  25. data/bin/commands/admin_conversations_whitelist.rb +37 -0
  26. data/bin/commands/admin_emoji.rb +54 -0
  27. data/bin/commands/admin_inviteRequests.rb +36 -0
  28. data/bin/commands/admin_inviteRequests_approved.rb +16 -0
  29. data/bin/commands/admin_inviteRequests_denied.rb +16 -0
  30. data/bin/commands/admin_teams.rb +27 -0
  31. data/bin/commands/admin_teams_admins.rb +16 -0
  32. data/bin/commands/admin_teams_owners.rb +16 -0
  33. data/bin/commands/admin_teams_settings.rb +64 -0
  34. data/bin/commands/admin_usergroups.rb +48 -0
  35. data/bin/commands/admin_users.rb +97 -0
  36. data/bin/commands/admin_users_session.rb +38 -0
  37. data/bin/commands/api.rb +1 -1
  38. data/bin/commands/apps.rb +15 -0
  39. data/bin/commands/apps_connections.rb +13 -0
  40. data/bin/commands/apps_event_authorizations.rb +16 -0
  41. data/bin/commands/apps_permissions.rb +1 -0
  42. data/bin/commands/apps_permissions_resources.rb +1 -0
  43. data/bin/commands/apps_permissions_scopes.rb +1 -0
  44. data/bin/commands/apps_permissions_users.rb +1 -0
  45. data/bin/commands/auth.rb +1 -0
  46. data/bin/commands/auth_teams.rb +16 -0
  47. data/bin/commands/bots.rb +2 -0
  48. data/bin/commands/calls.rb +52 -0
  49. data/bin/commands/calls_participants.rb +25 -0
  50. data/bin/commands/channels.rb +1 -153
  51. data/bin/commands/chat.rb +51 -10
  52. data/bin/commands/chat_scheduledMessages.rb +19 -0
  53. data/bin/commands/conversations.rb +16 -3
  54. data/bin/commands/dialog.rb +1 -0
  55. data/bin/commands/dnd.rb +5 -2
  56. data/bin/commands/emoji.rb +1 -0
  57. data/bin/commands/files.rb +8 -17
  58. data/bin/commands/files_comments.rb +1 -21
  59. data/bin/commands/files_remote.rb +78 -0
  60. data/bin/commands/groups.rb +1 -161
  61. data/bin/commands/im.rb +1 -62
  62. data/bin/commands/migration.rb +2 -0
  63. data/bin/commands/mpim.rb +1 -60
  64. data/bin/commands/oauth.rb +2 -1
  65. data/bin/commands/oauth_v2.rb +17 -0
  66. data/bin/commands/pins.rb +1 -4
  67. data/bin/commands/reactions.rb +3 -3
  68. data/bin/commands/reminders.rb +1 -0
  69. data/bin/commands/rtm.rb +1 -0
  70. data/bin/commands/search.rb +4 -0
  71. data/bin/commands/stars.rb +1 -0
  72. data/bin/commands/team.rb +5 -0
  73. data/bin/commands/team_profile.rb +1 -0
  74. data/bin/commands/usergroups.rb +6 -0
  75. data/bin/commands/usergroups_users.rb +3 -0
  76. data/bin/commands/users.rb +5 -3
  77. data/bin/commands/users_admin.rb +1 -0
  78. data/bin/commands/users_prefs.rb +1 -0
  79. data/bin/commands/users_profile.rb +6 -5
  80. data/bin/commands/views.rb +48 -0
  81. data/bin/commands/workflows.rb +38 -0
  82. data/bin/slack +2 -3
  83. data/examples/hi_real_time_and_web/Gemfile +1 -0
  84. data/examples/hi_real_time_and_web/hi.rb +7 -3
  85. data/examples/hi_real_time_async_async/Gemfile +1 -0
  86. data/examples/hi_real_time_async_async/hi.rb +6 -2
  87. data/examples/hi_web/Gemfile +1 -0
  88. data/examples/hi_web/hi.rb +1 -0
  89. data/examples/new_ticket/Gemfile +1 -0
  90. data/examples/new_ticket/new_ticket.rb +1 -0
  91. data/lib/slack-ruby-client.rb +10 -4
  92. data/lib/slack.rb +1 -0
  93. data/lib/slack/config.rb +1 -0
  94. data/lib/slack/events/config.rb +32 -0
  95. data/lib/slack/events/request.rb +70 -0
  96. data/lib/slack/logger.rb +6 -5
  97. data/lib/slack/messages/formatting.rb +1 -0
  98. data/lib/slack/messages/message.rb +1 -4
  99. data/lib/slack/real_time/api/message.rb +3 -1
  100. data/lib/slack/real_time/api/message_id.rb +1 -0
  101. data/lib/slack/real_time/api/ping.rb +5 -2
  102. data/lib/slack/real_time/api/typing.rb +3 -1
  103. data/lib/slack/real_time/client.rb +98 -28
  104. data/lib/slack/real_time/concurrency.rb +1 -2
  105. data/lib/slack/real_time/concurrency/async.rb +79 -6
  106. data/lib/slack/real_time/config.rb +6 -10
  107. data/lib/slack/real_time/models.rb +1 -0
  108. data/lib/slack/real_time/models/base.rb +1 -4
  109. data/lib/slack/real_time/models/bot.rb +1 -0
  110. data/lib/slack/real_time/models/channel.rb +1 -0
  111. data/lib/slack/real_time/models/group.rb +1 -0
  112. data/lib/slack/real_time/models/im.rb +1 -0
  113. data/lib/slack/real_time/models/team.rb +1 -0
  114. data/lib/slack/real_time/models/user.rb +1 -0
  115. data/lib/slack/real_time/socket.rb +44 -15
  116. data/lib/slack/real_time/stores.rb +1 -0
  117. data/lib/slack/real_time/stores/base.rb +4 -1
  118. data/lib/slack/real_time/stores/starter.rb +11 -0
  119. data/lib/slack/real_time/stores/store.rb +28 -25
  120. data/lib/slack/version.rb +2 -1
  121. data/lib/slack/web/api/endpoints.rb +64 -0
  122. data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
  123. data/lib/slack/web/api/endpoints/admin_apps.rb +62 -0
  124. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
  125. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +33 -0
  126. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
  127. data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
  128. data/lib/slack/web/api/endpoints/admin_conversations.rb +246 -0
  129. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
  130. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
  131. data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +64 -0
  132. data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
  133. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
  134. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
  135. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
  136. data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
  137. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
  138. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
  139. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
  140. data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
  141. data/lib/slack/web/api/endpoints/admin_users.rb +161 -0
  142. data/lib/slack/web/api/endpoints/admin_users_session.rb +66 -0
  143. data/lib/slack/web/api/endpoints/api.rb +1 -2
  144. data/lib/slack/web/api/endpoints/apps.rb +27 -0
  145. data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
  146. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
  147. data/lib/slack/web/api/endpoints/apps_permissions.rb +1 -0
  148. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +1 -0
  149. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +1 -0
  150. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +1 -0
  151. data/lib/slack/web/api/endpoints/auth.rb +1 -0
  152. data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
  153. data/lib/slack/web/api/endpoints/bots.rb +3 -0
  154. data/lib/slack/web/api/endpoints/calls.rb +83 -0
  155. data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
  156. data/lib/slack/web/api/endpoints/channels.rb +2 -243
  157. data/lib/slack/web/api/endpoints/chat.rb +112 -21
  158. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
  159. data/lib/slack/web/api/endpoints/conversations.rb +40 -19
  160. data/lib/slack/web/api/endpoints/dialog.rb +1 -0
  161. data/lib/slack/web/api/endpoints/dnd.rb +7 -1
  162. data/lib/slack/web/api/endpoints/emoji.rb +1 -0
  163. data/lib/slack/web/api/endpoints/files.rb +10 -17
  164. data/lib/slack/web/api/endpoints/files_comments.rb +1 -33
  165. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  166. data/lib/slack/web/api/endpoints/groups.rb +1 -253
  167. data/lib/slack/web/api/endpoints/im.rb +1 -101
  168. data/lib/slack/web/api/endpoints/migration.rb +3 -0
  169. data/lib/slack/web/api/endpoints/mpim.rb +1 -96
  170. data/lib/slack/web/api/endpoints/oauth.rb +2 -4
  171. data/lib/slack/web/api/endpoints/oauth_v2.rb +30 -0
  172. data/lib/slack/web/api/endpoints/pins.rb +4 -11
  173. data/lib/slack/web/api/endpoints/reactions.rb +10 -9
  174. data/lib/slack/web/api/endpoints/reminders.rb +1 -0
  175. data/lib/slack/web/api/endpoints/rtm.rb +1 -0
  176. data/lib/slack/web/api/endpoints/search.rb +7 -0
  177. data/lib/slack/web/api/endpoints/stars.rb +3 -2
  178. data/lib/slack/web/api/endpoints/team.rb +9 -0
  179. data/lib/slack/web/api/endpoints/team_profile.rb +1 -0
  180. data/lib/slack/web/api/endpoints/usergroups.rb +11 -0
  181. data/lib/slack/web/api/endpoints/usergroups_users.rb +5 -0
  182. data/lib/slack/web/api/endpoints/users.rb +8 -7
  183. data/lib/slack/web/api/endpoints/users_admin.rb +1 -0
  184. data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
  185. data/lib/slack/web/api/endpoints/users_profile.rb +4 -3
  186. data/lib/slack/web/api/endpoints/views.rb +97 -0
  187. data/lib/slack/web/api/endpoints/workflows.rb +61 -0
  188. data/lib/slack/web/api/error.rb +1 -0
  189. data/lib/slack/web/api/errors.rb +848 -0
  190. data/lib/slack/web/api/errors/internal_error.rb +14 -0
  191. data/lib/slack/web/api/errors/slack_error.rb +14 -1
  192. data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -0
  193. data/lib/slack/web/api/mixins.rb +2 -0
  194. data/lib/slack/web/api/mixins/channels.id.rb +2 -3
  195. data/lib/slack/web/api/mixins/conversations.id.rb +25 -0
  196. data/lib/slack/web/api/mixins/groups.id.rb +2 -3
  197. data/lib/slack/web/api/mixins/ids.id.rb +3 -2
  198. data/lib/slack/web/api/mixins/users.id.rb +2 -3
  199. data/lib/slack/web/api/mixins/users.search.rb +1 -0
  200. data/lib/slack/web/api/patches/chat.1.patch +71 -0
  201. data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
  202. data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
  203. data/lib/slack/web/api/templates/command.erb +1 -0
  204. data/lib/slack/web/api/templates/commands.erb +1 -0
  205. data/lib/slack/web/api/templates/endpoints.erb +2 -0
  206. data/lib/slack/web/api/templates/errors.erb +20 -0
  207. data/lib/slack/web/api/templates/method.erb +5 -1
  208. data/lib/slack/web/api/templates/method_spec.erb +2 -1
  209. data/lib/slack/web/client.rb +2 -1
  210. data/lib/slack/web/config.rb +3 -0
  211. data/lib/slack/web/faraday/connection.rb +24 -20
  212. data/lib/slack/web/faraday/request.rb +1 -0
  213. data/lib/slack/web/faraday/response/raise_error.rb +21 -6
  214. data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
  215. data/lib/slack/web/pagination/cursor.rb +6 -2
  216. data/lib/slack_ruby_client.rb +1 -0
  217. data/lib/tasks/git.rake +1 -0
  218. data/lib/tasks/real_time.rake +15 -5
  219. data/lib/tasks/update.rake +1 -0
  220. data/lib/tasks/web.rake +39 -10
  221. data/screenshots/create-app.png +0 -0
  222. data/slack-ruby-client.gemspec +8 -4
  223. data/spec/fixtures/slack/web/channels_info.yml +108 -15
  224. data/spec/fixtures/slack/web/{groups_info.yml → conversations_info.yml} +4 -4
  225. data/spec/fixtures/slack/web/conversations_setTopic.yml +69 -0
  226. data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +142 -0
  227. data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +208 -0
  228. data/spec/fixtures/slack/web/views_open_error.yml +76 -0
  229. data/spec/integration/integration_spec.rb +116 -49
  230. data/spec/slack/config_spec.rb +2 -0
  231. data/spec/slack/events/config_spec.rb +33 -0
  232. data/spec/slack/events/request_spec.rb +184 -0
  233. data/spec/slack/messages/formatting_spec.rb +25 -13
  234. data/spec/slack/real_time/api/message_spec.rb +6 -1
  235. data/spec/slack/real_time/api/ping_spec.rb +2 -0
  236. data/spec/slack/real_time/api/typing_spec.rb +5 -1
  237. data/spec/slack/real_time/client_spec.rb +228 -30
  238. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
  239. data/spec/slack/real_time/concurrency/with_concurrency_spec.rb +10 -0
  240. data/spec/slack/real_time/concurrency/without_concurrency_spec.rb +10 -0
  241. data/spec/slack/real_time/event_handlers/bot_spec.rb +2 -1
  242. data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -6
  243. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +2 -1
  244. data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
  245. data/spec/slack/real_time/event_handlers/im_spec.rb +4 -3
  246. data/spec/slack/real_time/event_handlers/team_spec.rb +3 -1
  247. data/spec/slack/real_time/event_handlers/user_spec.rb +1 -0
  248. data/spec/slack/real_time/rtm_connect_spec.rb +2 -1
  249. data/spec/slack/real_time/rtm_start_spec.rb +2 -1
  250. data/spec/slack/real_time/store_spec.rb +2 -1
  251. data/spec/slack/slack_spec.rb +37 -5
  252. data/spec/slack/version_spec.rb +2 -1
  253. data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
  254. data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
  255. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
  256. data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
  257. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +13 -0
  258. data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
  259. data/spec/slack/web/api/endpoints/admin_conversations_ekm_spec.rb +8 -0
  260. data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
  261. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +93 -0
  262. data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
  263. data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
  264. data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
  265. data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
  266. data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
  267. data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
  268. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
  269. data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
  270. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
  271. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +21 -0
  272. data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
  273. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  274. data/spec/slack/web/api/endpoints/apps_connections_spec.rb +8 -0
  275. data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
  276. data/spec/slack/web/api/endpoints/apps_permissions_resources_spec.rb +1 -0
  277. data/spec/slack/web/api/endpoints/apps_permissions_scopes_spec.rb +1 -0
  278. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +3 -2
  279. data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +4 -3
  280. data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
  281. data/spec/slack/web/api/endpoints/auth_teams_spec.rb +8 -0
  282. data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
  283. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
  284. data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
  285. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +8 -0
  286. data/spec/slack/web/api/endpoints/conversations_spec.rb +21 -12
  287. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +5 -1
  288. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +112 -36
  289. data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
  290. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +12 -4
  291. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +6 -1
  292. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
  293. data/spec/slack/web/api/endpoints/dnd_spec.rb +6 -0
  294. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  295. data/spec/slack/web/api/endpoints/files_comments_spec.rb +3 -21
  296. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  297. data/spec/slack/web/api/endpoints/files_spec.rb +5 -4
  298. data/spec/slack/web/api/endpoints/im_spec.rb +1 -31
  299. data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
  300. data/spec/slack/web/api/endpoints/mpim_spec.rb +1 -31
  301. data/spec/slack/web/api/endpoints/oauth_spec.rb +4 -14
  302. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +13 -0
  303. data/spec/slack/web/api/endpoints/pins_spec.rb +1 -0
  304. data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
  305. data/spec/slack/web/api/endpoints/reminders_spec.rb +3 -2
  306. data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
  307. data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
  308. data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
  309. data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
  310. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  311. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  312. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +3 -2
  313. data/spec/slack/web/api/endpoints/users_admin_spec.rb +1 -0
  314. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +1 -0
  315. data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
  316. data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
  317. data/spec/slack/web/api/error_spec.rb +4 -2
  318. data/spec/slack/web/api/errors/slack_error_spec.rb +26 -2
  319. data/spec/slack/web/api/mixins/channels_spec.rb +17 -7
  320. data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
  321. data/spec/slack/web/api/mixins/conversations_spec.rb +43 -0
  322. data/spec/slack/web/api/mixins/groups_spec.rb +17 -7
  323. data/spec/slack/web/api/mixins/users_spec.rb +17 -8
  324. data/spec/slack/web/api/pagination/cursor_spec.rb +40 -10
  325. data/spec/slack/web/client_spec.rb +166 -18
  326. data/spec/slack/web/faraday/response/raise_error_spec.rb +47 -12
  327. data/spec/spec_helper.rb +8 -1
  328. data/spec/support/queue_with_timeout.rb +5 -4
  329. data/spec/support/real_time/concurrency/mock.rb +1 -0
  330. data/spec/support/real_time/connected_client.rb +9 -3
  331. data/spec/support/real_time/event.rb +1 -0
  332. data/spec/support/token.rb +1 -0
  333. data/spec/support/vcr.rb +5 -0
  334. metadata +226 -52
  335. data/examples/hi_real_time/Gemfile +0 -5
  336. data/examples/hi_real_time/hi.gif +0 -0
  337. data/examples/hi_real_time/hi.rb +0 -37
  338. data/examples/hi_real_time_async_celluloid/Gemfile +0 -6
  339. data/examples/hi_real_time_async_celluloid/Procfile +0 -2
  340. data/examples/hi_real_time_async_celluloid/hi.rb +0 -35
  341. data/examples/hi_real_time_async_eventmachine/Gemfile +0 -6
  342. data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
  343. data/examples/hi_real_time_async_eventmachine/hi.rb +0 -35
  344. data/lib/slack/real_time/concurrency/celluloid.rb +0 -103
  345. data/lib/slack/real_time/concurrency/eventmachine.rb +0 -66
  346. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
  347. data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
  348. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -21
  349. data/lib/slack/web/api/patches/chat.4.postEphemeral-attachments-support.patch +0 -17
  350. data/lib/slack/web/api/patches/chat.5.postEphemeral-text-or-attachments.patch +0 -13
  351. data/screenshots/register-bot.png +0 -0
  352. data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -106
  353. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -47
  354. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -11
  355. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -11
  356. data/spec/slack/web/api/errors/service_unavailable_spec.rb +0 -14
@@ -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
@@ -18,7 +19,7 @@ module Slack
18
19
  def chat_command(options = {})
19
20
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
20
21
  throw ArgumentError.new('Required arguments :command missing') if options[:command].nil?
21
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
22
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
22
23
  logger.warn('The chat.command method is undocumented.')
23
24
  post('chat.command', options)
24
25
  end
@@ -37,10 +38,28 @@ module Slack
37
38
  def chat_delete(options = {})
38
39
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
39
40
  throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
40
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
41
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
41
42
  post('chat.delete', options)
42
43
  end
43
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 [Object] :scheduled_message_id
51
+ # scheduled_message_id returned from call to chat.scheduleMessage.
52
+ # @option options [Object] :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
+ throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
58
+ throw ArgumentError.new('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
+
44
63
  #
45
64
  # Retrieve a permalink URL for a specific extant message
46
65
  #
@@ -53,7 +72,7 @@ module Slack
53
72
  def chat_getPermalink(options = {})
54
73
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
55
74
  throw ArgumentError.new('Required arguments :message_ts missing') if options[:message_ts].nil?
56
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
75
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
57
76
  post('chat.getPermalink', options)
58
77
  end
59
78
 
@@ -75,25 +94,35 @@ module Slack
75
94
  #
76
95
  # Sends an ephemeral message to a user in a channel.
77
96
  #
97
+ # @option options [Object] :attachments
98
+ # A JSON-based array of structured attachments, presented as a URL-encoded string.
78
99
  # @option options [channel] :channel
79
100
  # Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name.
80
101
  # @option options [Object] :text
81
- # 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.
102
+ # How this field works and whether it is required depends on other fields you use in your API call. See below for more detail.
82
103
  # @option options [user] :user
83
104
  # id of the user who will receive the ephemeral message. The user should be in the channel specified by the channel argument.
84
105
  # @option options [Object] :as_user
85
- # Pass true to post the message as the authed bot. Defaults to false.
86
- # @option options [Object] :attachments
87
- # A JSON-based array of structured attachments, presented as a URL-encoded string.
106
+ # 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.
107
+ # @option options [Object] :blocks
108
+ # A JSON-based array of structured blocks, presented as a URL-encoded string.
109
+ # @option options [Object] :icon_emoji
110
+ # 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.
111
+ # @option options [Object] :icon_url
112
+ # 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.
88
113
  # @option options [Object] :link_names
89
114
  # Find and link channel names and usernames.
90
115
  # @option options [Object] :parse
91
116
  # Change how messages are treated. Defaults to none. See below.
117
+ # @option options [Object] :thread_ts
118
+ # 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.
119
+ # @option options [Object] :username
120
+ # Set your bot's user name. Must be used in conjunction with as_user set to false, otherwise ignored. See authorship below.
92
121
  # @see https://api.slack.com/methods/chat.postEphemeral
93
122
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postEphemeral.json
94
123
  def chat_postEphemeral(options = {})
95
124
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
96
- throw ArgumentError.new('Required arguments :text or :attachments missing') if options[:text].nil? && options[:attachments].nil?
125
+ throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
97
126
  throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
98
127
  options = options.merge(user: users_id(options)['user']['id']) if options[:user]
99
128
  # attachments must be passed as an encoded JSON string
@@ -102,6 +131,12 @@ module Slack
102
131
  attachments = JSON.dump(attachments) unless attachments.is_a?(String)
103
132
  options = options.merge(attachments: attachments)
104
133
  end
134
+ # blocks must be passed as an encoded JSON string
135
+ if options.key?(:blocks)
136
+ blocks = options[:blocks]
137
+ blocks = JSON.dump(blocks) unless blocks.is_a?(String)
138
+ options = options.merge(blocks: blocks)
139
+ end
105
140
  post('chat.postEphemeral', options)
106
141
  end
107
142
 
@@ -110,12 +145,14 @@ module Slack
110
145
  #
111
146
  # @option options [channel] :channel
112
147
  # Channel, private group, or IM channel to send message to. Can be an encoded ID, or a name. See below for more details.
113
- # @option options [Object] :text
114
- # 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. Provide no more than 40,000 characters or risk truncation.
115
148
  # @option options [Object] :as_user
116
149
  # Pass true to post the message as the authed user, instead of as a bot. Defaults to false. See authorship below.
117
150
  # @option options [Object] :attachments
118
151
  # A JSON-based array of structured attachments, presented as a URL-encoded string.
152
+ # @option options [Object] :blocks
153
+ # A JSON-based array of structured blocks, presented as a URL-encoded string.
154
+ # @option options [Object] :draft_id
155
+ # The id of the draft associated with the message.
119
156
  # @option options [Object] :icon_emoji
120
157
  # 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.
121
158
  # @option options [Object] :icon_url
@@ -128,6 +165,8 @@ module Slack
128
165
  # Change how messages are treated. Defaults to none. See below.
129
166
  # @option options [Object] :reply_broadcast
130
167
  # Used in conjunction with thread_ts and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to false.
168
+ # @option options [Object] :text
169
+ # How this field works and whether it is required depends on other fields you use in your API call. See below for more detail.
131
170
  # @option options [Object] :thread_ts
132
171
  # Provide another message's ts value to make this message a reply. Avoid using a reply's ts value; use its parent instead.
133
172
  # @option options [Object] :unfurl_links
@@ -140,16 +179,58 @@ module Slack
140
179
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postMessage.json
141
180
  def chat_postMessage(options = {})
142
181
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
143
- throw ArgumentError.new('Required arguments :text or :attachments missing') if options[:text].nil? && options[:attachments].nil?
182
+ throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
144
183
  # attachments must be passed as an encoded JSON string
145
184
  if options.key?(:attachments)
146
185
  attachments = options[:attachments]
147
186
  attachments = JSON.dump(attachments) unless attachments.is_a?(String)
148
187
  options = options.merge(attachments: attachments)
149
188
  end
189
+ # blocks must be passed as an encoded JSON string
190
+ if options.key?(:blocks)
191
+ blocks = options[:blocks]
192
+ blocks = JSON.dump(blocks) unless blocks.is_a?(String)
193
+ options = options.merge(blocks: blocks)
194
+ end
150
195
  post('chat.postMessage', options)
151
196
  end
152
197
 
198
+ #
199
+ # Schedules a message to be sent to a channel.
200
+ #
201
+ # @option options [channel] :channel
202
+ # Channel, private group, or DM channel to send message to. Can be an encoded ID, or a name. See below for more details.
203
+ # @option options [Object] :post_at
204
+ # Unix EPOCH timestamp of time in future to send the message.
205
+ # @option options [Object] :text
206
+ # How this field works and whether it is required depends on other fields you use in your API call. See below for more detail.
207
+ # @option options [Object] :as_user
208
+ # Pass true to post the message as the authed user, instead of as a bot. Defaults to false. See chat.postMessage.
209
+ # @option options [Object] :attachments
210
+ # A JSON-based array of structured attachments, presented as a URL-encoded string.
211
+ # @option options [Object] :blocks
212
+ # A JSON-based array of structured blocks, presented as a URL-encoded string.
213
+ # @option options [Object] :link_names
214
+ # Find and link channel names and usernames.
215
+ # @option options [Object] :parse
216
+ # Change how messages are treated. Defaults to none. See chat.postMessage.
217
+ # @option options [Object] :reply_broadcast
218
+ # Used in conjunction with thread_ts and indicates whether reply should be made visible to everyone in the channel or conversation. Defaults to false.
219
+ # @option options [Object] :thread_ts
220
+ # Provide another message's ts value to make this message a reply. Avoid using a reply's ts value; use its parent instead.
221
+ # @option options [Object] :unfurl_links
222
+ # Pass true to enable unfurling of primarily text-based content.
223
+ # @option options [Object] :unfurl_media
224
+ # Pass false to disable unfurling of media content.
225
+ # @see https://api.slack.com/methods/chat.scheduleMessage
226
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.scheduleMessage.json
227
+ def chat_scheduleMessage(options = {})
228
+ throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
229
+ throw ArgumentError.new('Required arguments :post_at missing') if options[:post_at].nil?
230
+ throw ArgumentError.new('Required arguments :text missing') if options[:text].nil?
231
+ post('chat.scheduleMessage', options)
232
+ end
233
+
153
234
  #
154
235
  # Provide custom unfurl behavior for user-posted URLs
155
236
  #
@@ -158,9 +239,11 @@ module Slack
158
239
  # @option options [timestamp] :ts
159
240
  # Timestamp of the message to add unfurl behavior to.
160
241
  # @option options [Object] :unfurls
161
- # URL-encoded JSON map with keys set to URLs featured in the the message, pointing to their unfurl message attachments.
242
+ # URL-encoded JSON map with keys set to URLs featured in the the message, pointing to their unfurl blocks or message attachments.
243
+ # @option options [Object] :user_auth_blocks
244
+ # 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.
162
245
  # @option options [Object] :user_auth_message
163
- # Provide a simply-formatted string to send as an ephemeral message to the user as invitation to authenticate further and enable full unfurling behavior.
246
+ # 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.
164
247
  # @option options [Object] :user_auth_required
165
248
  # Set to true or 1 to indicate the user must install your Slack app to trigger unfurls for this domain.
166
249
  # @option options [Object] :user_auth_url
@@ -171,7 +254,7 @@ module Slack
171
254
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
172
255
  throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
173
256
  throw ArgumentError.new('Required arguments :unfurls missing') if options[:unfurls].nil?
174
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
257
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
175
258
  post('chat.unfurl', options)
176
259
  end
177
260
 
@@ -180,31 +263,39 @@ module Slack
180
263
  #
181
264
  # @option options [channel] :channel
182
265
  # Channel containing the message to be updated.
183
- # @option options [Object] :text
184
- # New text for the message, using the default formatting rules. It's not required when presenting attachments.
185
266
  # @option options [timestamp] :ts
186
267
  # Timestamp of the message to be updated.
187
268
  # @option options [Object] :as_user
188
269
  # Pass true to update the message as the authed user. Bot users in this context are considered authed users.
189
270
  # @option options [Object] :attachments
190
- # A JSON-based array of structured attachments, presented as a URL-encoded string. This field is required when not presenting text.
271
+ # 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.
272
+ # @option options [Object] :blocks
273
+ # 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.
191
274
  # @option options [Object] :link_names
192
- # Find and link channel names and usernames. Defaults to none. See below.
275
+ # 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.
193
276
  # @option options [Object] :parse
194
- # Change how messages are treated. Defaults to client, unlike chat.postMessage. See below.
277
+ # 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.
278
+ # @option options [Object] :text
279
+ # New text for the message, using the default formatting rules. It's not required when presenting blocks or attachments.
195
280
  # @see https://api.slack.com/methods/chat.update
196
281
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.update.json
197
282
  def chat_update(options = {})
198
283
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
199
- throw ArgumentError.new('Required arguments :text or :attachments missing') if options[:text].nil? && options[:attachments].nil?
284
+ throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
200
285
  throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
201
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
286
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
202
287
  # attachments must be passed as an encoded JSON string
203
288
  if options.key?(:attachments)
204
289
  attachments = options[:attachments]
205
290
  attachments = JSON.dump(attachments) unless attachments.is_a?(String)
206
291
  options = options.merge(attachments: attachments)
207
292
  end
293
+ # blocks must be passed as an encoded JSON string
294
+ if options.key?(:blocks)
295
+ blocks = options[:blocks]
296
+ blocks = JSON.dump(blocks) unless blocks.is_a?(String)
297
+ options = options.merge(blocks: blocks)
298
+ end
208
299
  post('chat.update', options)
209
300
  end
210
301
  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 [Object] :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 [Object] :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 [Object] :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
@@ -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
@@ -14,7 +15,7 @@ module Slack
14
15
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.archive.json
15
16
  def conversations_archive(options = {})
16
17
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
17
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
18
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
18
19
  post('conversations.archive', options)
19
20
  end
20
21
 
@@ -27,7 +28,7 @@ module Slack
27
28
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.close.json
28
29
  def conversations_close(options = {})
29
30
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
30
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
31
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
31
32
  post('conversations.close', options)
32
33
  end
33
34
 
@@ -38,8 +39,8 @@ module Slack
38
39
  # Name of the public or private channel to create.
39
40
  # @option options [Object] :is_private
40
41
  # Create a private channel instead of a public one.
41
- # @option options [Object] :user_ids
42
- # Required for workspace apps. A list of between 1 and 30 human users that will be added to the newly-created conversation. This argument has no effect when used by classic Slack apps.
42
+ # @option options [Object] :team_id
43
+ # encoded team id to create the channel in, required if org token is used.
43
44
  # @see https://api.slack.com/methods/conversations.create
44
45
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.create.json
45
46
  def conversations_create(options = {})
@@ -66,7 +67,7 @@ module Slack
66
67
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.history.json
67
68
  def conversations_history(options = {})
68
69
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
69
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
70
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
70
71
  if block_given?
71
72
  Pagination::Cursor.new(self, :conversations_history, options).each do |page|
72
73
  yield page
@@ -83,11 +84,13 @@ module Slack
83
84
  # Conversation ID to learn more about.
84
85
  # @option options [Object] :include_locale
85
86
  # Set this to true to receive the locale for this conversation. Defaults to false.
87
+ # @option options [Object] :include_num_members
88
+ # Set to true to include the member count for the specified conversation. Defaults to false.
86
89
  # @see https://api.slack.com/methods/conversations.info
87
90
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.info.json
88
91
  def conversations_info(options = {})
89
92
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
90
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
93
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
91
94
  post('conversations.info', options)
92
95
  end
93
96
 
@@ -97,13 +100,13 @@ module Slack
97
100
  # @option options [channel] :channel
98
101
  # The ID of the public or private channel to invite user(s) to.
99
102
  # @option options [Object] :users
100
- # A comma separated list of user IDs. Up to 30 users may be listed.
103
+ # A comma separated list of user IDs. Up to 1000 users may be listed.
101
104
  # @see https://api.slack.com/methods/conversations.invite
102
105
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.invite.json
103
106
  def conversations_invite(options = {})
104
107
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
105
108
  throw ArgumentError.new('Required arguments :users missing') if options[:users].nil?
106
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
109
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
107
110
  post('conversations.invite', options)
108
111
  end
109
112
 
@@ -116,7 +119,7 @@ module Slack
116
119
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.join.json
117
120
  def conversations_join(options = {})
118
121
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
119
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
122
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
120
123
  post('conversations.join', options)
121
124
  end
122
125
 
@@ -132,7 +135,7 @@ module Slack
132
135
  def conversations_kick(options = {})
133
136
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
134
137
  throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
135
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
138
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
136
139
  options = options.merge(user: users_id(options)['user']['id']) if options[:user]
137
140
  post('conversations.kick', options)
138
141
  end
@@ -146,7 +149,7 @@ module Slack
146
149
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.leave.json
147
150
  def conversations_leave(options = {})
148
151
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
149
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
152
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
150
153
  post('conversations.leave', options)
151
154
  end
152
155
 
@@ -159,6 +162,8 @@ module Slack
159
162
  # Set to true to exclude archived channels from the list.
160
163
  # @option options [Object] :limit
161
164
  # The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the list hasn't been reached. Must be an integer no larger than 1000.
165
+ # @option options [Object] :team_id
166
+ # encoded team id to list channels in, required if token belongs to org-wide app.
162
167
  # @option options [Object] :types
163
168
  # Mix and match channel types by providing a comma-separated list of any combination of public_channel, private_channel, mpim, im.
164
169
  # @see https://api.slack.com/methods/conversations.list
@@ -173,6 +178,22 @@ module Slack
173
178
  end
174
179
  end
175
180
 
181
+ #
182
+ # Sets the read cursor in a channel.
183
+ #
184
+ # @option options [channel] :channel
185
+ # Channel or conversation to set the read cursor for.
186
+ # @option options [timestamp] :ts
187
+ # Unique identifier of message you want marked as most recently seen in this conversation.
188
+ # @see https://api.slack.com/methods/conversations.mark
189
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.mark.json
190
+ def conversations_mark(options = {})
191
+ throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
192
+ throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
193
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
194
+ post('conversations.mark', options)
195
+ end
196
+
176
197
  #
177
198
  # Retrieve members of a conversation.
178
199
  #
@@ -186,7 +207,7 @@ module Slack
186
207
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.members.json
187
208
  def conversations_members(options = {})
188
209
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
189
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
210
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
190
211
  if block_given?
191
212
  Pagination::Cursor.new(self, :conversations_members, options).each do |page|
192
213
  yield page
@@ -208,7 +229,7 @@ module Slack
208
229
  # @see https://api.slack.com/methods/conversations.open
209
230
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.open.json
210
231
  def conversations_open(options = {})
211
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
232
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
212
233
  post('conversations.open', options)
213
234
  end
214
235
 
@@ -224,7 +245,7 @@ module Slack
224
245
  def conversations_rename(options = {})
225
246
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
226
247
  throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
227
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
248
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
228
249
  post('conversations.rename', options)
229
250
  end
230
251
 
@@ -234,7 +255,7 @@ module Slack
234
255
  # @option options [channel] :channel
235
256
  # Conversation ID to fetch thread from.
236
257
  # @option options [timestamp] :ts
237
- # Unique identifier of a thread's parent message.
258
+ # Unique identifier of either a thread's parent message or a message in the thread. ts must be the timestamp of an existing message with 0 or more replies. If there are no replies then just the single message referenced by ts will return - it is just an ordinary, unthreaded message.
238
259
  # @option options [Object] :cursor
239
260
  # 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.
240
261
  # @option options [Object] :inclusive
@@ -250,7 +271,7 @@ module Slack
250
271
  def conversations_replies(options = {})
251
272
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
252
273
  throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
253
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
274
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
254
275
  if block_given?
255
276
  Pagination::Cursor.new(self, :conversations_replies, options).each do |page|
256
277
  yield page
@@ -272,7 +293,7 @@ module Slack
272
293
  def conversations_setPurpose(options = {})
273
294
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
274
295
  throw ArgumentError.new('Required arguments :purpose missing') if options[:purpose].nil?
275
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
296
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
276
297
  post('conversations.setPurpose', options)
277
298
  end
278
299
 
@@ -288,7 +309,7 @@ module Slack
288
309
  def conversations_setTopic(options = {})
289
310
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
290
311
  throw ArgumentError.new('Required arguments :topic missing') if options[:topic].nil?
291
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
312
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
292
313
  post('conversations.setTopic', options)
293
314
  end
294
315
 
@@ -301,7 +322,7 @@ module Slack
301
322
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/conversations/conversations.unarchive.json
302
323
  def conversations_unarchive(options = {})
303
324
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
304
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
325
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
305
326
  post('conversations.unarchive', options)
306
327
  end
307
328
  end