slack-ruby-client 0.13.1 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (402) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/integration_test.yml +26 -0
  4. data/.github/workflows/lint.yml +14 -0
  5. data/.github/workflows/pr_lint.yml +21 -0
  6. data/.github/workflows/test.yml +36 -0
  7. data/.gitignore +5 -3
  8. data/.rubocop.yml +34 -5
  9. data/.rubocop_todo.yml +180 -46
  10. data/.ruby-version +1 -0
  11. data/CHANGELOG.md +119 -2
  12. data/CONTRIBUTING.md +23 -11
  13. data/Dangerfile +2 -0
  14. data/Gemfile +22 -5
  15. data/Gemfile.danger +6 -0
  16. data/LICENSE.md +1 -1
  17. data/README.md +236 -101
  18. data/RELEASING.md +2 -2
  19. data/Rakefile +2 -1
  20. data/UPGRADING.md +100 -2
  21. data/bin/commands/admin_analytics.rb +16 -0
  22. data/bin/commands/admin_apps.rb +51 -0
  23. data/bin/commands/admin_apps_approved.rb +17 -0
  24. data/bin/commands/admin_apps_requests.rb +28 -0
  25. data/bin/commands/admin_apps_restricted.rb +17 -0
  26. data/bin/commands/admin_audit_anomaly_allow.rb +23 -0
  27. data/bin/commands/admin_auth_policy.rb +39 -0
  28. data/bin/commands/admin_barriers.rb +47 -0
  29. data/bin/commands/admin_conversations.rb +171 -0
  30. data/bin/commands/admin_conversations_ekm.rb +17 -0
  31. data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
  32. data/bin/commands/admin_emoji.rb +54 -0
  33. data/bin/commands/admin_inviteRequests.rb +36 -0
  34. data/bin/commands/admin_inviteRequests_approved.rb +16 -0
  35. data/bin/commands/admin_inviteRequests_denied.rb +16 -0
  36. data/bin/commands/admin_teams.rb +27 -0
  37. data/bin/commands/admin_teams_admins.rb +16 -0
  38. data/bin/commands/admin_teams_owners.rb +16 -0
  39. data/bin/commands/admin_teams_settings.rb +64 -0
  40. data/bin/commands/admin_usergroups.rb +48 -0
  41. data/bin/commands/admin_users.rb +98 -0
  42. data/bin/commands/admin_users_session.rb +78 -0
  43. data/bin/commands/admin_users_unsupportedVersions.rb +15 -0
  44. data/bin/commands/api.rb +1 -1
  45. data/bin/commands/apps.rb +15 -0
  46. data/bin/commands/apps_connections.rb +13 -0
  47. data/bin/commands/apps_event_authorizations.rb +16 -0
  48. data/bin/commands/apps_manifest.rb +52 -0
  49. data/bin/commands/auth.rb +1 -0
  50. data/bin/commands/auth_teams.rb +16 -0
  51. data/bin/commands/bookmarks.rb +53 -0
  52. data/bin/commands/bots.rb +2 -0
  53. data/bin/commands/calls.rb +52 -0
  54. data/bin/commands/calls_participants.rb +25 -0
  55. data/bin/commands/chat.rb +61 -14
  56. data/bin/commands/chat_scheduledMessages.rb +19 -0
  57. data/bin/commands/conversations.rb +82 -10
  58. data/bin/commands/dialog.rb +1 -0
  59. data/bin/commands/dnd.rb +6 -3
  60. data/bin/commands/emoji.rb +1 -0
  61. data/bin/commands/files.rb +34 -18
  62. data/bin/commands/files_comments.rb +1 -21
  63. data/bin/commands/files_remote.rb +78 -0
  64. data/bin/commands/migration.rb +2 -0
  65. data/bin/commands/oauth.rb +2 -14
  66. data/bin/commands/oauth_v2.rb +29 -0
  67. data/bin/commands/openid_connect.rb +27 -0
  68. data/bin/commands/pins.rb +3 -6
  69. data/bin/commands/reactions.rb +3 -3
  70. data/bin/commands/reminders.rb +7 -0
  71. data/bin/commands/rtm.rb +1 -15
  72. data/bin/commands/search.rb +6 -1
  73. data/bin/commands/stars.rb +8 -6
  74. data/bin/commands/team.rb +6 -0
  75. data/bin/commands/team_billing.rb +13 -0
  76. data/bin/commands/team_preferences.rb +13 -0
  77. data/bin/commands/team_profile.rb +1 -0
  78. data/bin/commands/tooling_tokens.rb +14 -0
  79. data/bin/commands/usergroups.rb +7 -1
  80. data/bin/commands/usergroups_users.rb +3 -0
  81. data/bin/commands/users.rb +6 -4
  82. data/bin/commands/users_admin.rb +1 -0
  83. data/bin/commands/users_prefs.rb +1 -0
  84. data/bin/commands/users_profile.rb +6 -5
  85. data/bin/commands/views.rb +50 -0
  86. data/bin/commands/workflows.rb +38 -0
  87. data/bin/commands.rb +41 -8
  88. data/bin/slack +3 -4
  89. data/examples/hi_real_time_and_web/Gemfile +1 -0
  90. data/examples/hi_real_time_and_web/hi.rb +7 -3
  91. data/examples/hi_real_time_async_async/Gemfile +1 -0
  92. data/examples/hi_real_time_async_async/hi.rb +6 -2
  93. data/examples/hi_web/Gemfile +1 -0
  94. data/examples/hi_web/hi.rb +1 -0
  95. data/examples/new_ticket/Gemfile +1 -0
  96. data/examples/new_ticket/new_ticket.rb +1 -0
  97. data/lib/slack/config.rb +2 -2
  98. data/lib/slack/events/config.rb +32 -0
  99. data/lib/slack/events/request.rb +72 -0
  100. data/lib/slack/logger.rb +6 -5
  101. data/lib/slack/messages/formatting.rb +1 -0
  102. data/lib/slack/messages/message.rb +1 -4
  103. data/lib/slack/real_time/api/message.rb +6 -3
  104. data/lib/slack/real_time/api/message_id.rb +1 -0
  105. data/lib/slack/real_time/api/ping.rb +5 -2
  106. data/lib/slack/real_time/api/templates/event_handler.erb +5 -1
  107. data/lib/slack/real_time/api/typing.rb +5 -2
  108. data/lib/slack/real_time/client.rb +105 -54
  109. data/lib/slack/real_time/concurrency/async.rb +77 -6
  110. data/lib/slack/real_time/concurrency.rb +1 -2
  111. data/lib/slack/real_time/config.rb +9 -13
  112. data/lib/slack/real_time/models/base.rb +1 -4
  113. data/lib/slack/real_time/models/bot.rb +1 -0
  114. data/lib/slack/real_time/models/channel.rb +5 -0
  115. data/lib/slack/real_time/models/im.rb +1 -0
  116. data/lib/slack/real_time/models/{group.rb → mpim.rb} +2 -1
  117. data/lib/slack/real_time/models/team.rb +1 -0
  118. data/lib/slack/real_time/models/user.rb +1 -0
  119. data/lib/slack/real_time/models.rb +3 -1
  120. data/lib/slack/real_time/socket.rb +45 -17
  121. data/lib/slack/real_time/stores/base.rb +28 -14
  122. data/lib/slack/real_time/stores/starter.rb +325 -297
  123. data/lib/slack/real_time/stores/store.rb +271 -196
  124. data/lib/slack/real_time/stores.rb +2 -7
  125. data/lib/slack/version.rb +2 -1
  126. data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
  127. data/lib/slack/web/api/endpoints/admin_apps.rb +78 -0
  128. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
  129. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +51 -0
  130. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
  131. data/lib/slack/web/api/endpoints/admin_audit_anomaly_allow.rb +34 -0
  132. data/lib/slack/web/api/endpoints/admin_auth_policy.rb +72 -0
  133. data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
  134. data/lib/slack/web/api/endpoints/admin_conversations.rb +264 -0
  135. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
  136. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
  137. data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
  138. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
  139. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
  140. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
  141. data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
  142. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
  143. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
  144. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
  145. data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
  146. data/lib/slack/web/api/endpoints/admin_users.rb +163 -0
  147. data/lib/slack/web/api/endpoints/admin_users_session.rb +122 -0
  148. data/lib/slack/web/api/endpoints/admin_users_unsupportedVersions.rb +25 -0
  149. data/lib/slack/web/api/endpoints/api.rb +2 -3
  150. data/lib/slack/web/api/endpoints/apps.rb +27 -0
  151. data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
  152. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
  153. data/lib/slack/web/api/endpoints/apps_manifest.rb +77 -0
  154. data/lib/slack/web/api/endpoints/auth.rb +2 -1
  155. data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
  156. data/lib/slack/web/api/endpoints/bookmarks.rb +88 -0
  157. data/lib/slack/web/api/endpoints/bots.rb +4 -1
  158. data/lib/slack/web/api/endpoints/calls.rb +83 -0
  159. data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
  160. data/lib/slack/web/api/endpoints/chat.rb +168 -65
  161. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
  162. data/lib/slack/web/api/endpoints/conversations.rb +182 -67
  163. data/lib/slack/web/api/endpoints/dialog.rb +5 -4
  164. data/lib/slack/web/api/endpoints/dnd.rb +9 -4
  165. data/lib/slack/web/api/endpoints/emoji.rb +1 -0
  166. data/lib/slack/web/api/endpoints/files.rb +69 -37
  167. data/lib/slack/web/api/endpoints/files_comments.rb +4 -36
  168. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  169. data/lib/slack/web/api/endpoints/migration.rb +6 -3
  170. data/lib/slack/web/api/endpoints/oauth.rb +7 -31
  171. data/lib/slack/web/api/endpoints/oauth_v2.rb +48 -0
  172. data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
  173. data/lib/slack/web/api/endpoints/pins.rb +11 -18
  174. data/lib/slack/web/api/endpoints/reactions.rb +22 -21
  175. data/lib/slack/web/api/endpoints/reminders.rb +23 -10
  176. data/lib/slack/web/api/endpoints/rtm.rb +3 -25
  177. data/lib/slack/web/api/endpoints/search.rb +31 -16
  178. data/lib/slack/web/api/endpoints/stars.rb +14 -11
  179. data/lib/slack/web/api/endpoints/team.rb +15 -4
  180. data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
  181. data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
  182. data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
  183. data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
  184. data/lib/slack/web/api/endpoints/usergroups.rb +31 -20
  185. data/lib/slack/web/api/endpoints/usergroups_users.rb +13 -8
  186. data/lib/slack/web/api/endpoints/users.rb +24 -23
  187. data/lib/slack/web/api/endpoints/users_admin.rb +3 -2
  188. data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
  189. data/lib/slack/web/api/endpoints/users_profile.rb +8 -7
  190. data/lib/slack/web/api/endpoints/views.rb +102 -0
  191. data/lib/slack/web/api/endpoints/workflows.rb +61 -0
  192. data/lib/slack/web/api/endpoints.rb +82 -18
  193. data/lib/slack/web/api/error.rb +1 -0
  194. data/lib/slack/web/api/errors/server_error.rb +37 -0
  195. data/lib/slack/web/api/errors/slack_error.rb +14 -1
  196. data/lib/slack/web/api/errors/too_many_requests_error.rb +2 -4
  197. data/lib/slack/web/api/errors.rb +1116 -0
  198. data/lib/slack/web/api/mixins/{channels.id.rb → conversations.id.rb} +5 -6
  199. data/lib/slack/web/api/mixins/ids.id.rb +3 -2
  200. data/lib/slack/web/api/mixins/users.id.rb +3 -4
  201. data/lib/slack/web/api/mixins/users.search.rb +3 -1
  202. data/lib/slack/web/api/mixins.rb +2 -2
  203. data/lib/slack/web/api/patches/chat.attachments-blocks.patch +69 -0
  204. data/lib/slack/web/api/patches/{dialog.1.open-json-support.patch → dialog.encoded-json.patch} +4 -4
  205. data/lib/slack/web/api/patches/views.view-json.patch +55 -0
  206. data/lib/slack/web/api/templates/command.erb +1 -0
  207. data/lib/slack/web/api/templates/commands.erb +1 -0
  208. data/lib/slack/web/api/templates/endpoints.erb +2 -2
  209. data/lib/slack/web/api/templates/errors.erb +20 -0
  210. data/lib/slack/web/api/templates/method.erb +6 -2
  211. data/lib/slack/web/api/templates/method_spec.erb +2 -1
  212. data/lib/slack/web/client.rb +2 -1
  213. data/lib/slack/web/config.rb +5 -2
  214. data/lib/slack/web/faraday/connection.rb +24 -20
  215. data/lib/slack/web/faraday/request.rb +5 -1
  216. data/lib/slack/web/faraday/response/raise_error.rb +14 -7
  217. data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
  218. data/lib/slack/web/pagination/cursor.rb +7 -7
  219. data/lib/slack-ruby-client.rb +12 -5
  220. data/lib/slack.rb +1 -0
  221. data/lib/slack_ruby_client.rb +1 -0
  222. data/lib/tasks/git.rake +1 -0
  223. data/lib/tasks/real_time.rake +51 -21
  224. data/lib/tasks/update.rake +1 -0
  225. data/lib/tasks/web.rake +48 -12
  226. data/screenshots/create-app.png +0 -0
  227. data/slack-ruby-client.gemspec +7 -12
  228. data/spec/fixtures/slack/web/429_error.yml +50 -54
  229. data/spec/fixtures/slack/web/auth_test_error.yml +51 -18
  230. data/spec/fixtures/slack/web/auth_test_success.yml +50 -26
  231. data/spec/fixtures/slack/web/conversations_info.yml +167 -0
  232. data/spec/fixtures/slack/web/conversations_setTopic.yml +84 -0
  233. data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +172 -0
  234. data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +253 -0
  235. data/spec/fixtures/slack/web/paginated_users_list.yml +501 -69
  236. data/spec/fixtures/slack/web/rtm_connect.yml +347 -26
  237. data/spec/fixtures/slack/web/users_info.yml +153 -69
  238. data/spec/fixtures/slack/web/users_list.yml +102 -41
  239. data/spec/fixtures/slack/web/views_open_error.yml +83 -0
  240. data/spec/integration/integration_spec.rb +115 -47
  241. data/spec/slack/config_spec.rb +2 -0
  242. data/spec/slack/events/config_spec.rb +35 -0
  243. data/spec/slack/events/request_spec.rb +188 -0
  244. data/spec/slack/messages/formatting_spec.rb +35 -13
  245. data/spec/slack/real_time/api/message_spec.rb +7 -2
  246. data/spec/slack/real_time/api/ping_spec.rb +3 -1
  247. data/spec/slack/real_time/api/typing_spec.rb +6 -2
  248. data/spec/slack/real_time/client_spec.rb +300 -142
  249. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
  250. data/spec/slack/real_time/concurrency/with_concurrency_spec.rb +10 -0
  251. data/spec/slack/real_time/concurrency/without_concurrency_spec.rb +10 -0
  252. data/spec/slack/real_time/event_handlers/bot_spec.rb +20 -17
  253. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +3 -2
  254. data/spec/slack/real_time/event_handlers/im_spec.rb +31 -27
  255. data/spec/slack/real_time/event_handlers/{group_spec.rb → private_channel_spec.rb} +36 -27
  256. data/spec/slack/real_time/event_handlers/{channel_spec.rb → public_channel_spec.rb} +31 -24
  257. data/spec/slack/real_time/event_handlers/team_spec.rb +8 -7
  258. data/spec/slack/real_time/event_handlers/user_spec.rb +7 -5
  259. data/spec/slack/real_time/rtm_connect_spec.rb +2 -1
  260. data/spec/slack/real_time/stores/store_spec.rb +50 -0
  261. data/spec/slack/slack_spec.rb +41 -6
  262. data/spec/slack/version_spec.rb +2 -1
  263. data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
  264. data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
  265. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +13 -0
  266. data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
  267. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +18 -0
  268. data/spec/slack/web/api/endpoints/admin_audit_anomaly_allow_spec.rb +8 -0
  269. data/spec/slack/web/api/endpoints/admin_auth_policy_spec.rb +35 -0
  270. data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
  271. data/spec/slack/web/api/endpoints/admin_conversations_ekm_spec.rb +8 -0
  272. data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
  273. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +98 -0
  274. data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
  275. data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
  276. data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
  277. data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
  278. data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
  279. data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
  280. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
  281. data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
  282. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
  283. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +41 -0
  284. data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
  285. data/spec/slack/web/api/endpoints/admin_users_unsupportedVersions_spec.rb +8 -0
  286. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  287. data/spec/slack/web/api/endpoints/apps_connections_spec.rb +8 -0
  288. data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
  289. data/spec/slack/web/api/endpoints/apps_manifest_spec.rb +36 -0
  290. data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
  291. data/spec/slack/web/api/endpoints/{apps_permissions_resources_spec.rb → auth_teams_spec.rb} +2 -1
  292. data/spec/slack/web/api/endpoints/bookmarks_spec.rb +40 -0
  293. data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
  294. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
  295. data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
  296. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +8 -0
  297. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +9 -7
  298. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +144 -40
  299. data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
  300. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +18 -6
  301. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +8 -3
  302. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +112 -0
  303. data/spec/slack/web/api/endpoints/dnd_spec.rb +4 -3
  304. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  305. data/spec/slack/web/api/endpoints/files_comments_spec.rb +3 -21
  306. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  307. data/spec/slack/web/api/endpoints/files_spec.rb +18 -4
  308. data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
  309. data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -22
  310. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +16 -0
  311. data/spec/slack/web/api/endpoints/openid_connect_spec.rb +8 -0
  312. data/spec/slack/web/api/endpoints/pins_spec.rb +1 -0
  313. data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
  314. data/spec/slack/web/api/endpoints/reminders_spec.rb +3 -2
  315. data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
  316. data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
  317. data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
  318. data/spec/slack/web/api/endpoints/{apps_permissions_scopes_spec.rb → team_billing_spec.rb} +2 -1
  319. data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -0
  320. data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
  321. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  322. data/spec/slack/web/api/endpoints/tooling_tokens_spec.rb +13 -0
  323. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  324. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +3 -2
  325. data/spec/slack/web/api/endpoints/users_admin_spec.rb +1 -0
  326. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +1 -0
  327. data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
  328. data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
  329. data/spec/slack/web/api/error_spec.rb +7 -7
  330. data/spec/slack/web/api/errors/slack_error_spec.rb +26 -7
  331. data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
  332. data/spec/slack/web/api/mixins/conversations_spec.rb +45 -0
  333. data/spec/slack/web/api/mixins/users_spec.rb +19 -8
  334. data/spec/slack/web/api/pagination/cursor_spec.rb +47 -15
  335. data/spec/slack/web/client_spec.rb +199 -22
  336. data/spec/slack/web/faraday/request_spec.rb +80 -0
  337. data/spec/slack/web/faraday/response/raise_error_spec.rb +48 -12
  338. data/spec/spec_helper.rb +9 -2
  339. data/spec/support/queue_with_timeout.rb +5 -4
  340. data/spec/support/real_time/concurrency/mock.rb +1 -0
  341. data/spec/support/real_time/connected_client.rb +6 -6
  342. data/spec/support/real_time/event.rb +1 -0
  343. data/spec/support/real_time/loaded_client.rb +120 -0
  344. data/spec/support/token.rb +1 -0
  345. data/spec/support/vcr.rb +37 -1
  346. metadata +174 -262
  347. data/.travis.yml +0 -32
  348. data/bin/commands/apps_permissions.rb +0 -22
  349. data/bin/commands/apps_permissions_resources.rb +0 -14
  350. data/bin/commands/apps_permissions_scopes.rb +0 -12
  351. data/bin/commands/apps_permissions_users.rb +0 -25
  352. data/bin/commands/channels.rb +0 -175
  353. data/bin/commands/groups.rb +0 -174
  354. data/bin/commands/im.rb +0 -67
  355. data/bin/commands/mpim.rb +0 -65
  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_celluloid/Gemfile +0 -6
  360. data/examples/hi_real_time_async_celluloid/Procfile +0 -2
  361. data/examples/hi_real_time_async_celluloid/hi.rb +0 -35
  362. data/examples/hi_real_time_async_eventmachine/Gemfile +0 -6
  363. data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
  364. data/examples/hi_real_time_async_eventmachine/hi.rb +0 -35
  365. data/lib/slack/real_time/concurrency/celluloid.rb +0 -118
  366. data/lib/slack/real_time/concurrency/eventmachine.rb +0 -66
  367. data/lib/slack/web/api/endpoints/apps_permissions.rb +0 -35
  368. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +0 -30
  369. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +0 -20
  370. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +0 -49
  371. data/lib/slack/web/api/endpoints/channels.rb +0 -266
  372. data/lib/slack/web/api/endpoints/groups.rb +0 -265
  373. data/lib/slack/web/api/endpoints/im.rb +0 -113
  374. data/lib/slack/web/api/endpoints/mpim.rb +0 -108
  375. data/lib/slack/web/api/endpoints/presence.rb +0 -23
  376. data/lib/slack/web/api/mixins/channels.id.json +0 -20
  377. data/lib/slack/web/api/mixins/groups.id.json +0 -20
  378. data/lib/slack/web/api/mixins/groups.id.rb +0 -26
  379. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
  380. data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
  381. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -21
  382. data/lib/slack/web/api/patches/chat.4.postEphemeral-attachments-support.patch +0 -17
  383. data/lib/slack/web/api/patches/chat.5.postEphemeral-text-or-attachments.patch +0 -13
  384. data/screenshots/register-bot.png +0 -0
  385. data/spec/fixtures/slack/web/503_error.yml +0 -14
  386. data/spec/fixtures/slack/web/channels_info.yml +0 -46
  387. data/spec/fixtures/slack/web/groups_info.yml +0 -43
  388. data/spec/fixtures/slack/web/rtm_start.yml +0 -104
  389. data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -106
  390. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -47
  391. data/spec/slack/real_time/rtm_start_spec.rb +0 -13
  392. data/spec/slack/real_time/store_spec.rb +0 -11
  393. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +0 -15
  394. data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +0 -18
  395. data/spec/slack/web/api/endpoints/conversations_spec.rb +0 -100
  396. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -11
  397. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -11
  398. data/spec/slack/web/api/endpoints/im_spec.rb +0 -38
  399. data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -38
  400. data/spec/slack/web/api/errors/service_unavailable_spec.rb +0 -14
  401. data/spec/slack/web/api/mixins/channels_spec.rb +0 -33
  402. data/spec/slack/web/api/mixins/groups_spec.rb +0 -33
@@ -1,35 +0,0 @@
1
- require 'slack-ruby-client'
2
-
3
- raise 'Missing ENV[SLACK_API_TOKENS]!' unless ENV.key?('SLACK_API_TOKENS')
4
-
5
- $stdout.sync = true
6
- logger = Logger.new($stdout)
7
- logger.level = Logger::DEBUG
8
- threads = []
9
-
10
- ENV['SLACK_API_TOKENS'].split.each do |token|
11
- logger.info "Starting #{token[0..12]} ..."
12
-
13
- client = Slack::RealTime::Client.new(token: token)
14
-
15
- client.on :hello do
16
- logger.info "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
17
- end
18
-
19
- client.on :message do |data|
20
- logger.info data
21
-
22
- client.typing channel: data.channel
23
-
24
- case data.text
25
- when 'bot hi' then
26
- client.message channel: data.channel, text: "Hi <@#{data.user}>!"
27
- when /^bot/ then
28
- client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
29
- end
30
- end
31
-
32
- threads << client.start_async
33
- end
34
-
35
- threads.each(&:join)
@@ -1,6 +0,0 @@
1
- source 'http://rubygems.org'
2
-
3
- gem 'slack-ruby-client', path: '../..'
4
-
5
- gem 'faye-websocket'
6
- gem 'foreman'
@@ -1,2 +0,0 @@
1
- console: bundle exec ruby hi.rb
2
-
@@ -1,35 +0,0 @@
1
- require 'slack-ruby-client'
2
-
3
- raise 'Missing ENV[SLACK_API_TOKENS]!' unless ENV.key?('SLACK_API_TOKENS')
4
-
5
- $stdout.sync = true
6
- logger = Logger.new($stdout)
7
- logger.level = Logger::DEBUG
8
- threads = []
9
-
10
- ENV['SLACK_API_TOKENS'].split.each do |token|
11
- logger.info "Starting #{token[0..12]} ..."
12
-
13
- client = Slack::RealTime::Client.new(token: token)
14
-
15
- client.on :hello do
16
- logger.info "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
17
- end
18
-
19
- client.on :message do |data|
20
- logger.info data
21
-
22
- client.typing channel: data.channel
23
-
24
- case data.text
25
- when 'bot hi' then
26
- client.message channel: data.channel, text: "Hi <@#{data.user}>!"
27
- when /^bot/ then
28
- client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
29
- end
30
- end
31
-
32
- threads << client.start_async
33
- end
34
-
35
- threads.each(&:join)
@@ -1,118 +0,0 @@
1
- require 'websocket/driver'
2
- require 'socket'
3
- require 'forwardable'
4
- require 'celluloid/current'
5
- require 'celluloid/io'
6
-
7
- module Slack
8
- module RealTime
9
- module Concurrency
10
- module Celluloid
11
- class Socket < Slack::RealTime::Socket
12
- include ::Celluloid::IO
13
- include ::Celluloid::Internals::Logger
14
-
15
- BLOCK_SIZE = 4096
16
-
17
- extend ::Forwardable
18
- def_delegators :driver, :text, :binary
19
-
20
- attr_reader :socket
21
-
22
- def initialize(*args)
23
- super
24
- end
25
-
26
- def connect!
27
- super
28
- run_loop
29
- end
30
-
31
- def run_loop
32
- @closing = false
33
- @socket = build_socket
34
- @connected = @socket.connect
35
- driver.start
36
- loop { read } if socket
37
- rescue EOFError, Errno::ECONNRESET, Errno::EPIPE => e
38
- logger.debug("#{self.class}##{__method__}") { e }
39
- driver.emit(:close, WebSocket::Driver::CloseEvent.new(1001, 'server closed connection')) unless @closing
40
- ensure
41
- begin
42
- current_actor.terminate if current_actor.alive?
43
- rescue StandardError
44
- nil
45
- end
46
- end
47
-
48
- def close
49
- @closing = true
50
- driver.close
51
- super
52
- end
53
-
54
- def read
55
- buffer = socket.readpartial(BLOCK_SIZE)
56
- raise EOFError unless buffer && !buffer.empty?
57
- async.handle_read(buffer)
58
- end
59
-
60
- def handle_read(buffer)
61
- logger.debug("#{self.class}##{__method__}") { buffer }
62
- driver.parse buffer
63
- end
64
-
65
- def write(data)
66
- logger.debug("#{self.class}##{__method__}") { data }
67
- socket.write(data)
68
- end
69
-
70
- def start_async(client)
71
- @client = client
72
- Actor.new(future.run_client_loop)
73
- end
74
-
75
- def run_client_loop
76
- @client.run_loop
77
- end
78
-
79
- def connected?
80
- !@connected.nil?
81
- end
82
-
83
- protected
84
-
85
- class Actor
86
- attr_reader :future
87
-
88
- def initialize(future)
89
- @future = future
90
- end
91
-
92
- def join
93
- @future.value
94
- end
95
- end
96
-
97
- def build_socket
98
- socket = ::Celluloid::IO::TCPSocket.new(addr, port)
99
- socket = ::Celluloid::IO::SSLSocket.new(socket, build_ssl_context) if secure?
100
- socket
101
- end
102
-
103
- def build_ssl_context
104
- OpenSSL::SSL::SSLContext.new(:TLSv1_2_client)
105
- end
106
-
107
- def build_driver
108
- ::WebSocket::Driver.client(self)
109
- end
110
-
111
- def connect
112
- @driver = build_driver
113
- end
114
- end
115
- end
116
- end
117
- end
118
- end
@@ -1,66 +0,0 @@
1
- require 'faye/websocket'
2
- require 'eventmachine'
3
-
4
- module Slack
5
- module RealTime
6
- module Concurrency
7
- module Eventmachine
8
- class Client < Faye::WebSocket::Client
9
- attr_reader :logger
10
- protected :logger
11
-
12
- def initialize(url, protocols = nil, options = {})
13
- @logger = options.delete(:logger) || Slack::RealTime::Config.logger || Slack::Config.logger
14
- super
15
- end
16
-
17
- def parse(data)
18
- logger.debug("#{self.class}##{__method__}") { data }
19
- super data
20
- end
21
-
22
- def write(data)
23
- logger.debug("#{self.class}##{__method__}") { data }
24
- super data
25
- end
26
- end
27
-
28
- class Socket < Slack::RealTime::Socket
29
- def start_async(client)
30
- @thread = ensure_reactor_running
31
-
32
- client.run_loop
33
-
34
- @thread
35
- end
36
-
37
- def close
38
- super
39
- EventMachine.stop if @thread
40
- @thread = nil
41
- end
42
-
43
- def send_data(message)
44
- logger.debug("#{self.class}##{__method__}") { message }
45
- driver.send(message)
46
- end
47
-
48
- protected
49
-
50
- # @return [Thread]
51
- def ensure_reactor_running
52
- return if EventMachine.reactor_running?
53
-
54
- reactor = Thread.new { EventMachine.run }
55
- Thread.pass until EventMachine.reactor_running?
56
- reactor
57
- end
58
-
59
- def connect
60
- @driver = Client.new(url, nil, options.merge(logger: logger))
61
- end
62
- end
63
- end
64
- end
65
- end
66
- end
@@ -1,35 +0,0 @@
1
- # This file was auto-generated by lib/tasks/web.rake
2
-
3
- module Slack
4
- module Web
5
- module Api
6
- module Endpoints
7
- module AppsPermissions
8
- #
9
- # Returns list of permissions this app has on a team.
10
- #
11
- # @see https://api.slack.com/methods/apps.permissions.info
12
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions/apps.permissions.info.json
13
- def apps_permissions_info(options = {})
14
- post('apps.permissions.info', options)
15
- end
16
-
17
- #
18
- # Allows an app to request additional scopes
19
- #
20
- # @option options [Object] :scopes
21
- # A comma separated list of scopes to request for.
22
- # @option options [Object] :trigger_id
23
- # Token used to trigger the permissions API.
24
- # @see https://api.slack.com/methods/apps.permissions.request
25
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions/apps.permissions.request.json
26
- def apps_permissions_request(options = {})
27
- throw ArgumentError.new('Required arguments :scopes missing') if options[:scopes].nil?
28
- throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
29
- post('apps.permissions.request', options)
30
- end
31
- end
32
- end
33
- end
34
- end
35
- end
@@ -1,30 +0,0 @@
1
- # This file was auto-generated by lib/tasks/web.rake
2
-
3
- module Slack
4
- module Web
5
- module Api
6
- module Endpoints
7
- module AppsPermissionsResources
8
- #
9
- # Returns list of resource grants this app has on a team.
10
- #
11
- # @option options [Object] :cursor
12
- # 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.
13
- # @option options [Object] :limit
14
- # The maximum number of items to return.
15
- # @see https://api.slack.com/methods/apps.permissions.resources.list
16
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions.resources/apps.permissions.resources.list.json
17
- def apps_permissions_resources_list(options = {})
18
- if block_given?
19
- Pagination::Cursor.new(self, :apps_permissions_resources_list, options).each do |page|
20
- yield page
21
- end
22
- else
23
- post('apps.permissions.resources.list', options)
24
- end
25
- end
26
- end
27
- end
28
- end
29
- end
30
- end
@@ -1,20 +0,0 @@
1
- # This file was auto-generated by lib/tasks/web.rake
2
-
3
- module Slack
4
- module Web
5
- module Api
6
- module Endpoints
7
- module AppsPermissionsScopes
8
- #
9
- # Returns list of scopes this app has on a team.
10
- #
11
- # @see https://api.slack.com/methods/apps.permissions.scopes.list
12
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions.scopes/apps.permissions.scopes.list.json
13
- def apps_permissions_scopes_list(options = {})
14
- post('apps.permissions.scopes.list', options)
15
- end
16
- end
17
- end
18
- end
19
- end
20
- end
@@ -1,49 +0,0 @@
1
- # This file was auto-generated by lib/tasks/web.rake
2
-
3
- module Slack
4
- module Web
5
- module Api
6
- module Endpoints
7
- module AppsPermissionsUsers
8
- #
9
- # Returns list of user grants and corresponding scopes this app has on a team.
10
- #
11
- # @option options [Object] :cursor
12
- # 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.
13
- # @option options [Object] :limit
14
- # The maximum number of items to return.
15
- # @see https://api.slack.com/methods/apps.permissions.users.list
16
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions.users/apps.permissions.users.list.json
17
- def apps_permissions_users_list(options = {})
18
- if block_given?
19
- Pagination::Cursor.new(self, :apps_permissions_users_list, options).each do |page|
20
- yield page
21
- end
22
- else
23
- post('apps.permissions.users.list', options)
24
- end
25
- end
26
-
27
- #
28
- # Enables an app to trigger a permissions modal to grant an app access to a user access scope.
29
- #
30
- # @option options [Object] :scopes
31
- # A comma separated list of user scopes to request for.
32
- # @option options [Object] :trigger_id
33
- # Token used to trigger the request.
34
- # @option options [user] :user
35
- # The user this scope is being requested for.
36
- # @see https://api.slack.com/methods/apps.permissions.users.request
37
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions.users/apps.permissions.users.request.json
38
- def apps_permissions_users_request(options = {})
39
- throw ArgumentError.new('Required arguments :scopes missing') if options[:scopes].nil?
40
- throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
41
- throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
42
- options = options.merge(user: users_id(options)['user']['id']) if options[:user]
43
- post('apps.permissions.users.request', options)
44
- end
45
- end
46
- end
47
- end
48
- end
49
- end
@@ -1,266 +0,0 @@
1
- # This file was auto-generated by lib/tasks/web.rake
2
-
3
- module Slack
4
- module Web
5
- module Api
6
- module Endpoints
7
- module Channels
8
- #
9
- # Archives a channel.
10
- #
11
- # @option options [channel] :channel
12
- # Channel to archive.
13
- # @see https://api.slack.com/methods/channels.archive
14
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.archive.json
15
- def channels_archive(options = {})
16
- 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
- post('channels.archive', options)
19
- end
20
-
21
- #
22
- # Creates a channel.
23
- #
24
- # @option options [Object] :name
25
- # Name of channel to create.
26
- # @option options [Object] :validate
27
- # Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
28
- # @see https://api.slack.com/methods/channels.create
29
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.create.json
30
- def channels_create(options = {})
31
- throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
32
- post('channels.create', options)
33
- end
34
-
35
- #
36
- # Delete a channel (undocumented)
37
- #
38
- # @option options [channel] :channel
39
- # Channel to delete.
40
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/channels/channels.delete.json
41
- def channels_delete(options = {})
42
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
43
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
44
- logger.warn('The channels.delete method is undocumented.')
45
- post('channels.delete', options)
46
- end
47
-
48
- #
49
- # Fetches history of messages and events from a channel.
50
- #
51
- # @option options [channel] :channel
52
- # Channel to fetch history for.
53
- # @option options [Object] :inclusive
54
- # Include messages with latest or oldest timestamp in results.
55
- # @option options [timestamp] :latest
56
- # End of time range of messages to include in results.
57
- # @option options [timestamp] :oldest
58
- # Start of time range of messages to include in results.
59
- # @option options [Object] :unreads
60
- # Include unread_count_display in the output?.
61
- # @see https://api.slack.com/methods/channels.history
62
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.history.json
63
- def channels_history(options = {})
64
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
65
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
66
- post('channels.history', options)
67
- end
68
-
69
- #
70
- # Gets information about a channel.
71
- #
72
- # @option options [channel] :channel
73
- # Channel to get info on.
74
- # @option options [Object] :include_locale
75
- # Set this to true to receive the locale for this channel. Defaults to false.
76
- # @see https://api.slack.com/methods/channels.info
77
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.info.json
78
- def channels_info(options = {})
79
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
80
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
81
- post('channels.info', options)
82
- end
83
-
84
- #
85
- # Invites a user to a channel.
86
- #
87
- # @option options [channel] :channel
88
- # Channel to invite user to.
89
- # @option options [user] :user
90
- # User to invite to channel.
91
- # @see https://api.slack.com/methods/channels.invite
92
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.invite.json
93
- def channels_invite(options = {})
94
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
95
- throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
96
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
97
- options = options.merge(user: users_id(options)['user']['id']) if options[:user]
98
- post('channels.invite', options)
99
- end
100
-
101
- #
102
- # Joins a channel, creating it if needed.
103
- #
104
- # @option options [Object] :name
105
- # Name of channel to join.
106
- # @option options [Object] :validate
107
- # Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
108
- # @see https://api.slack.com/methods/channels.join
109
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.join.json
110
- def channels_join(options = {})
111
- throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
112
- post('channels.join', options)
113
- end
114
-
115
- #
116
- # Removes a user from a channel.
117
- #
118
- # @option options [channel] :channel
119
- # Channel to remove user from.
120
- # @option options [user] :user
121
- # User to remove from channel.
122
- # @see https://api.slack.com/methods/channels.kick
123
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.kick.json
124
- def channels_kick(options = {})
125
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
126
- throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
127
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
128
- options = options.merge(user: users_id(options)['user']['id']) if options[:user]
129
- post('channels.kick', options)
130
- end
131
-
132
- #
133
- # Leaves a channel.
134
- #
135
- # @option options [channel] :channel
136
- # Channel to leave.
137
- # @see https://api.slack.com/methods/channels.leave
138
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.leave.json
139
- def channels_leave(options = {})
140
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
141
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
142
- post('channels.leave', options)
143
- end
144
-
145
- #
146
- # Lists all channels in a Slack team.
147
- #
148
- # @option options [Object] :cursor
149
- # 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.
150
- # @option options [Object] :exclude_archived
151
- # Exclude archived channels from the list.
152
- # @option options [Object] :exclude_members
153
- # Exclude the members collection from each channel.
154
- # @option options [Object] :limit
155
- # The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.
156
- # @see https://api.slack.com/methods/channels.list
157
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.list.json
158
- def channels_list(options = {})
159
- if block_given?
160
- Pagination::Cursor.new(self, :channels_list, options).each do |page|
161
- yield page
162
- end
163
- else
164
- post('channels.list', options)
165
- end
166
- end
167
-
168
- #
169
- # Sets the read cursor in a channel.
170
- #
171
- # @option options [channel] :channel
172
- # Channel to set reading cursor in.
173
- # @option options [timestamp] :ts
174
- # Timestamp of the most recently seen message.
175
- # @see https://api.slack.com/methods/channels.mark
176
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.mark.json
177
- def channels_mark(options = {})
178
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
179
- throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
180
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
181
- post('channels.mark', options)
182
- end
183
-
184
- #
185
- # Renames a channel.
186
- #
187
- # @option options [channel] :channel
188
- # Channel to rename.
189
- # @option options [Object] :name
190
- # New name for channel.
191
- # @option options [Object] :validate
192
- # Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
193
- # @see https://api.slack.com/methods/channels.rename
194
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.rename.json
195
- def channels_rename(options = {})
196
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
197
- throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
198
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
199
- post('channels.rename', options)
200
- end
201
-
202
- #
203
- # Retrieve a thread of messages posted to a channel
204
- #
205
- # @option options [channel] :channel
206
- # Channel to fetch thread from.
207
- # @option options [Object] :thread_ts
208
- # Unique identifier of a thread's parent message.
209
- # @see https://api.slack.com/methods/channels.replies
210
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.replies.json
211
- def channels_replies(options = {})
212
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
213
- throw ArgumentError.new('Required arguments :thread_ts missing') if options[:thread_ts].nil?
214
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
215
- post('channels.replies', options)
216
- end
217
-
218
- #
219
- # Sets the purpose for a channel.
220
- #
221
- # @option options [channel] :channel
222
- # Channel to set the purpose of.
223
- # @option options [Object] :purpose
224
- # The new purpose.
225
- # @see https://api.slack.com/methods/channels.setPurpose
226
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.setPurpose.json
227
- def channels_setPurpose(options = {})
228
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
229
- throw ArgumentError.new('Required arguments :purpose missing') if options[:purpose].nil?
230
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
231
- post('channels.setPurpose', options)
232
- end
233
-
234
- #
235
- # Sets the topic for a channel.
236
- #
237
- # @option options [channel] :channel
238
- # Channel to set the topic of.
239
- # @option options [Object] :topic
240
- # The new topic.
241
- # @see https://api.slack.com/methods/channels.setTopic
242
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.setTopic.json
243
- def channels_setTopic(options = {})
244
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
245
- throw ArgumentError.new('Required arguments :topic missing') if options[:topic].nil?
246
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
247
- post('channels.setTopic', options)
248
- end
249
-
250
- #
251
- # Unarchives a channel.
252
- #
253
- # @option options [channel] :channel
254
- # Channel to unarchive.
255
- # @see https://api.slack.com/methods/channels.unarchive
256
- # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.unarchive.json
257
- def channels_unarchive(options = {})
258
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
259
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
260
- post('channels.unarchive', options)
261
- end
262
- end
263
- end
264
- end
265
- end
266
- end