slack-ruby-client 0.7.2 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (383) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.gitignore +2 -0
  4. data/.gitmodules +1 -1
  5. data/.rubocop.yml +37 -1
  6. data/.rubocop_todo.yml +130 -47
  7. data/.travis.yml +17 -13
  8. data/CHANGELOG.md +254 -43
  9. data/CONTRIBUTING.md +26 -15
  10. data/Dangerfile +3 -0
  11. data/Gemfile +13 -2
  12. data/LICENSE.md +1 -1
  13. data/README.md +287 -63
  14. data/RELEASING.md +22 -14
  15. data/Rakefile +2 -1
  16. data/UPGRADING.md +129 -5
  17. data/bin/commands/admin_analytics.rb +16 -0
  18. data/bin/commands/admin_apps.rb +51 -0
  19. data/bin/commands/admin_apps_approved.rb +17 -0
  20. data/bin/commands/admin_apps_requests.rb +17 -0
  21. data/bin/commands/admin_apps_restricted.rb +17 -0
  22. data/bin/commands/admin_auth_policy.rb +39 -0
  23. data/bin/commands/admin_barriers.rb +47 -0
  24. data/bin/commands/admin_conversations.rb +169 -0
  25. data/bin/commands/admin_conversations_ekm.rb +17 -0
  26. data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
  27. data/bin/commands/admin_conversations_whitelist.rb +37 -0
  28. data/bin/commands/admin_emoji.rb +54 -0
  29. data/bin/commands/admin_inviteRequests.rb +36 -0
  30. data/bin/commands/admin_inviteRequests_approved.rb +16 -0
  31. data/bin/commands/admin_inviteRequests_denied.rb +16 -0
  32. data/bin/commands/admin_teams.rb +27 -0
  33. data/bin/commands/admin_teams_admins.rb +16 -0
  34. data/bin/commands/admin_teams_owners.rb +16 -0
  35. data/bin/commands/admin_teams_settings.rb +64 -0
  36. data/bin/commands/admin_usergroups.rb +48 -0
  37. data/bin/commands/admin_users.rb +98 -0
  38. data/bin/commands/admin_users_session.rb +78 -0
  39. data/bin/commands/api.rb +3 -3
  40. data/bin/commands/apps.rb +15 -0
  41. data/bin/commands/apps_connections.rb +13 -0
  42. data/bin/commands/apps_event_authorizations.rb +16 -0
  43. data/bin/commands/apps_manifest.rb +51 -0
  44. data/bin/commands/apps_permissions.rb +23 -0
  45. data/bin/commands/apps_permissions_resources.rb +15 -0
  46. data/bin/commands/apps_permissions_scopes.rb +13 -0
  47. data/bin/commands/apps_permissions_users.rb +26 -0
  48. data/bin/commands/auth.rb +12 -2
  49. data/bin/commands/auth_teams.rb +16 -0
  50. data/bin/commands/bots.rb +15 -0
  51. data/bin/commands/calls.rb +52 -0
  52. data/bin/commands/calls_participants.rb +25 -0
  53. data/bin/commands/channels.rb +6 -132
  54. data/bin/commands/chat.rb +127 -20
  55. data/bin/commands/chat_scheduledMessages.rb +19 -0
  56. data/bin/commands/conversations.rb +253 -0
  57. data/bin/commands/dialog.rb +15 -0
  58. data/bin/commands/dnd.rb +12 -9
  59. data/bin/commands/emoji.rb +3 -2
  60. data/bin/commands/files.rb +47 -31
  61. data/bin/commands/files_comments.rb +3 -23
  62. data/bin/commands/files_remote.rb +78 -0
  63. data/bin/commands/groups.rb +1 -154
  64. data/bin/commands/im.rb +1 -48
  65. data/bin/commands/migration.rb +16 -0
  66. data/bin/commands/mpim.rb +1 -48
  67. data/bin/commands/oauth.rb +4 -2
  68. data/bin/commands/oauth_v2.rb +29 -0
  69. data/bin/commands/openid_connect.rb +27 -0
  70. data/bin/commands/pins.rb +9 -12
  71. data/bin/commands/reactions.rb +17 -15
  72. data/bin/commands/reminders.rb +17 -10
  73. data/bin/commands/rtm.rb +19 -4
  74. data/bin/commands/search.rb +17 -12
  75. data/bin/commands/stars.rb +12 -9
  76. data/bin/commands/team.rb +23 -8
  77. data/bin/commands/team_billing.rb +13 -0
  78. data/bin/commands/team_preferences.rb +13 -0
  79. data/bin/commands/team_profile.rb +14 -0
  80. data/bin/commands/tooling_tokens.rb +14 -0
  81. data/bin/commands/usergroups.rb +23 -17
  82. data/bin/commands/usergroups_users.rb +7 -4
  83. data/bin/commands/users.rb +83 -27
  84. data/bin/commands/users_admin.rb +29 -0
  85. data/bin/commands/users_prefs.rb +13 -0
  86. data/bin/commands/users_profile.rb +27 -0
  87. data/bin/commands/views.rb +48 -0
  88. data/bin/commands/workflows.rb +38 -0
  89. data/bin/commands.rb +47 -5
  90. data/bin/slack +3 -4
  91. data/examples/hi_real_time_and_web/Gemfile +1 -0
  92. data/examples/hi_real_time_and_web/hi.rb +8 -4
  93. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Gemfile +2 -1
  94. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Procfile +0 -0
  95. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/hi.rb +13 -8
  96. data/examples/hi_web/Gemfile +1 -0
  97. data/examples/hi_web/hi.rb +2 -1
  98. data/examples/new_ticket/Gemfile +1 -0
  99. data/examples/new_ticket/new_ticket.rb +3 -2
  100. data/lib/slack/config.rb +2 -2
  101. data/lib/slack/events/config.rb +32 -0
  102. data/lib/slack/events/request.rb +72 -0
  103. data/lib/slack/logger.rb +6 -5
  104. data/lib/slack/messages/formatting.rb +4 -4
  105. data/lib/slack/messages/message.rb +6 -4
  106. data/lib/slack/real_time/api/message.rb +3 -1
  107. data/lib/slack/real_time/api/message_id.rb +1 -0
  108. data/lib/slack/real_time/api/ping.rb +5 -2
  109. data/lib/slack/real_time/api/templates/event_handler.erb +1 -1
  110. data/lib/slack/real_time/api/typing.rb +3 -1
  111. data/lib/slack/real_time/client.rb +116 -36
  112. data/lib/slack/real_time/concurrency/async.rb +138 -0
  113. data/lib/slack/real_time/concurrency.rb +2 -2
  114. data/lib/slack/real_time/config.rb +17 -19
  115. data/lib/slack/real_time/models/base.rb +3 -3
  116. data/lib/slack/real_time/models/bot.rb +1 -0
  117. data/lib/slack/real_time/models/channel.rb +1 -0
  118. data/lib/slack/real_time/models/group.rb +1 -0
  119. data/lib/slack/real_time/models/im.rb +1 -0
  120. data/lib/slack/real_time/models/team.rb +1 -0
  121. data/lib/slack/real_time/models/user.rb +1 -0
  122. data/lib/slack/real_time/models.rb +8 -7
  123. data/lib/slack/real_time/socket.rb +51 -23
  124. data/lib/slack/real_time/stores/base.rb +6 -9
  125. data/lib/slack/real_time/stores/starter.rb +143 -69
  126. data/lib/slack/real_time/stores/store.rb +160 -82
  127. data/lib/slack/real_time/stores.rb +4 -3
  128. data/lib/slack/version.rb +2 -1
  129. data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
  130. data/lib/slack/web/api/endpoints/admin_apps.rb +78 -0
  131. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
  132. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +35 -0
  133. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
  134. data/lib/slack/web/api/endpoints/admin_auth_policy.rb +72 -0
  135. data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
  136. data/lib/slack/web/api/endpoints/admin_conversations.rb +260 -0
  137. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
  138. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
  139. data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +64 -0
  140. data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
  141. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
  142. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
  143. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
  144. data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
  145. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
  146. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
  147. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
  148. data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
  149. data/lib/slack/web/api/endpoints/admin_users.rb +163 -0
  150. data/lib/slack/web/api/endpoints/admin_users_session.rb +122 -0
  151. data/lib/slack/web/api/endpoints/api.rb +4 -5
  152. data/lib/slack/web/api/endpoints/apps.rb +27 -0
  153. data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
  154. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
  155. data/lib/slack/web/api/endpoints/apps_manifest.rb +75 -0
  156. data/lib/slack/web/api/endpoints/apps_permissions.rb +36 -0
  157. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +31 -0
  158. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +21 -0
  159. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +50 -0
  160. data/lib/slack/web/api/endpoints/auth.rb +14 -2
  161. data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
  162. data/lib/slack/web/api/endpoints/bots.rb +25 -0
  163. data/lib/slack/web/api/endpoints/calls.rb +83 -0
  164. data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
  165. data/lib/slack/web/api/endpoints/channels.rb +8 -201
  166. data/lib/slack/web/api/endpoints/chat.rb +252 -42
  167. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
  168. data/lib/slack/web/api/endpoints/conversations.rb +422 -0
  169. data/lib/slack/web/api/endpoints/dialog.rb +33 -0
  170. data/lib/slack/web/api/endpoints/dnd.rb +17 -12
  171. data/lib/slack/web/api/endpoints/emoji.rb +3 -2
  172. data/lib/slack/web/api/endpoints/files.rb +82 -43
  173. data/lib/slack/web/api/endpoints/files_comments.rb +4 -36
  174. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  175. data/lib/slack/web/api/endpoints/groups.rb +1 -235
  176. data/lib/slack/web/api/endpoints/im.rb +1 -73
  177. data/lib/slack/web/api/endpoints/migration.rb +28 -0
  178. data/lib/slack/web/api/endpoints/mpim.rb +1 -72
  179. data/lib/slack/web/api/endpoints/oauth.rb +9 -10
  180. data/lib/slack/web/api/endpoints/oauth_v2.rb +48 -0
  181. data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
  182. data/lib/slack/web/api/endpoints/pins.rb +14 -23
  183. data/lib/slack/web/api/endpoints/presence.rb +1 -1
  184. data/lib/slack/web/api/endpoints/reactions.rb +43 -34
  185. data/lib/slack/web/api/endpoints/reminders.rb +28 -15
  186. data/lib/slack/web/api/endpoints/rtm.rb +29 -8
  187. data/lib/slack/web/api/endpoints/search.rb +39 -24
  188. data/lib/slack/web/api/endpoints/stars.rb +30 -22
  189. data/lib/slack/web/api/endpoints/team.rb +34 -11
  190. data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
  191. data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
  192. data/lib/slack/web/api/endpoints/team_profile.rb +23 -0
  193. data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
  194. data/lib/slack/web/api/endpoints/usergroups.rb +43 -32
  195. data/lib/slack/web/api/endpoints/usergroups_users.rb +14 -9
  196. data/lib/slack/web/api/endpoints/users.rb +104 -19
  197. data/lib/slack/web/api/endpoints/users_admin.rb +49 -0
  198. data/lib/slack/web/api/endpoints/users_prefs.rb +21 -0
  199. data/lib/slack/web/api/endpoints/users_profile.rb +44 -0
  200. data/lib/slack/web/api/endpoints/views.rb +97 -0
  201. data/lib/slack/web/api/endpoints/workflows.rb +61 -0
  202. data/lib/slack/web/api/endpoints.rb +111 -29
  203. data/lib/slack/web/api/error.rb +2 -8
  204. data/lib/slack/web/api/errors/server_error.rb +37 -0
  205. data/lib/slack/web/api/errors/slack_error.rb +29 -0
  206. data/lib/slack/web/api/errors/too_many_requests_error.rb +21 -0
  207. data/lib/slack/web/api/errors.rb +1040 -0
  208. data/lib/slack/web/api/mixins/conversations.id.rb +25 -0
  209. data/lib/slack/web/api/mixins/ids.id.rb +24 -0
  210. data/lib/slack/web/api/mixins/users.id.rb +6 -7
  211. data/lib/slack/web/api/mixins/users.search.rb +39 -36
  212. data/lib/slack/web/api/mixins.rb +4 -4
  213. data/lib/slack/web/api/patches/chat.1.patch +70 -0
  214. data/lib/slack/web/api/patches/dialog.1.open-json-support.patch +17 -0
  215. data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
  216. data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
  217. data/lib/slack/web/api/templates/command.erb +5 -3
  218. data/lib/slack/web/api/templates/commands.erb +2 -1
  219. data/lib/slack/web/api/templates/endpoints.erb +5 -5
  220. data/lib/slack/web/api/templates/errors.erb +20 -0
  221. data/lib/slack/web/api/templates/method.erb +26 -4
  222. data/lib/slack/web/api/templates/method_spec.erb +3 -2
  223. data/lib/slack/web/client.rb +2 -1
  224. data/lib/slack/web/config.rb +21 -10
  225. data/lib/slack/web/faraday/connection.rb +25 -16
  226. data/lib/slack/web/faraday/request.rb +4 -1
  227. data/lib/slack/web/faraday/response/raise_error.rb +19 -1
  228. data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
  229. data/lib/slack/web/pagination/cursor.rb +48 -0
  230. data/lib/slack-ruby-client.rb +40 -26
  231. data/lib/slack.rb +1 -0
  232. data/lib/slack_ruby_client.rb +1 -0
  233. data/lib/tasks/git.rake +2 -1
  234. data/lib/tasks/real_time.rake +16 -6
  235. data/lib/tasks/update.rake +1 -0
  236. data/lib/tasks/web.rake +42 -10
  237. data/screenshots/create-app.png +0 -0
  238. data/slack-ruby-client.gemspec +11 -9
  239. data/spec/fixtures/slack/web/429_error.yml +50 -52
  240. data/spec/fixtures/slack/web/auth_test_error.yml +51 -18
  241. data/spec/fixtures/slack/web/auth_test_success.yml +50 -26
  242. data/spec/fixtures/slack/web/conversations_info.yml +167 -0
  243. data/spec/fixtures/slack/web/conversations_setTopic.yml +84 -0
  244. data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +172 -0
  245. data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +253 -0
  246. data/spec/fixtures/slack/web/paginated_users_list.yml +613 -0
  247. data/spec/fixtures/slack/web/rtm_connect.yml +307 -0
  248. data/spec/fixtures/slack/web/rtm_start.yml +771 -60
  249. data/spec/fixtures/slack/web/users_info.yml +153 -69
  250. data/spec/fixtures/slack/web/users_list.yml +102 -41
  251. data/spec/fixtures/slack/web/views_open_error.yml +83 -0
  252. data/spec/integration/integration_spec.rb +116 -48
  253. data/spec/slack/config_spec.rb +2 -0
  254. data/spec/slack/events/config_spec.rb +33 -0
  255. data/spec/slack/events/request_spec.rb +184 -0
  256. data/spec/slack/messages/formatting_spec.rb +25 -14
  257. data/spec/slack/real_time/api/message_spec.rb +6 -1
  258. data/spec/slack/real_time/api/ping_spec.rb +2 -0
  259. data/spec/slack/real_time/api/typing_spec.rb +5 -1
  260. data/spec/slack/real_time/client_spec.rb +465 -141
  261. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +21 -0
  262. data/spec/slack/real_time/concurrency/with_concurrency_spec.rb +10 -0
  263. data/spec/slack/real_time/concurrency/without_concurrency_spec.rb +10 -0
  264. data/spec/slack/real_time/event_handlers/bot_spec.rb +7 -4
  265. data/spec/slack/real_time/event_handlers/channel_spec.rb +10 -7
  266. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +3 -2
  267. data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
  268. data/spec/slack/real_time/event_handlers/im_spec.rb +9 -8
  269. data/spec/slack/real_time/event_handlers/team_spec.rb +8 -4
  270. data/spec/slack/real_time/event_handlers/user_spec.rb +7 -4
  271. data/spec/slack/real_time/rtm_connect_spec.rb +14 -0
  272. data/spec/slack/real_time/rtm_start_spec.rb +2 -1
  273. data/spec/slack/real_time/store_spec.rb +2 -1
  274. data/spec/slack/slack_spec.rb +42 -8
  275. data/spec/slack/version_spec.rb +2 -1
  276. data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
  277. data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
  278. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
  279. data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
  280. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +18 -0
  281. data/spec/slack/web/api/endpoints/admin_auth_policy_spec.rb +35 -0
  282. data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
  283. data/spec/slack/web/api/endpoints/admin_conversations_ekm_spec.rb +8 -0
  284. data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
  285. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +98 -0
  286. data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
  287. data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
  288. data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
  289. data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
  290. data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
  291. data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
  292. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
  293. data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
  294. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
  295. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +41 -0
  296. data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
  297. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  298. data/spec/slack/web/api/endpoints/apps_connections_spec.rb +8 -0
  299. data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
  300. data/spec/slack/web/api/endpoints/apps_manifest_spec.rb +36 -0
  301. data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
  302. data/spec/slack/web/api/endpoints/auth_teams_spec.rb +8 -0
  303. data/spec/slack/web/api/endpoints/bots_spec.rb +8 -0
  304. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
  305. data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
  306. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +8 -0
  307. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +11 -4
  308. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +140 -24
  309. data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
  310. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +36 -0
  311. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +22 -7
  312. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
  313. data/spec/slack/web/api/endpoints/dnd_spec.rb +4 -3
  314. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  315. data/spec/slack/web/api/endpoints/files_comments_spec.rb +3 -21
  316. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  317. data/spec/slack/web/api/endpoints/files_spec.rb +17 -5
  318. data/spec/slack/web/api/endpoints/migration_spec.rb +13 -0
  319. data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -11
  320. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +16 -0
  321. data/spec/slack/web/api/endpoints/openid_connect_spec.rb +8 -0
  322. data/spec/slack/web/api/endpoints/pins_spec.rb +1 -0
  323. data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
  324. data/spec/slack/web/api/endpoints/reminders_spec.rb +3 -2
  325. data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
  326. data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
  327. data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
  328. data/spec/slack/web/api/endpoints/team_billing_spec.rb +8 -0
  329. data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -0
  330. data/spec/slack/web/api/endpoints/team_profile_spec.rb +8 -0
  331. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  332. data/spec/slack/web/api/endpoints/tooling_tokens_spec.rb +13 -0
  333. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  334. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +3 -2
  335. data/spec/slack/web/api/endpoints/users_admin_spec.rb +18 -0
  336. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +8 -0
  337. data/spec/slack/web/api/endpoints/users_profile_spec.rb +8 -0
  338. data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
  339. data/spec/slack/web/api/error_spec.rb +7 -7
  340. data/spec/slack/web/api/errors/slack_error_spec.rb +33 -0
  341. data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
  342. data/spec/slack/web/api/mixins/conversations_spec.rb +43 -0
  343. data/spec/slack/web/api/mixins/users_spec.rb +30 -17
  344. data/spec/slack/web/api/pagination/cursor_spec.rb +98 -0
  345. data/spec/slack/web/client_spec.rb +211 -14
  346. data/spec/slack/web/faraday/request_spec.rb +80 -0
  347. data/spec/slack/web/faraday/response/raise_error_spec.rb +86 -0
  348. data/spec/spec_helper.rb +9 -2
  349. data/spec/support/queue_with_timeout.rb +6 -5
  350. data/spec/support/real_time/concurrency/mock.rb +2 -2
  351. data/spec/support/real_time/connected_client.rb +7 -2
  352. data/spec/support/real_time/event.rb +1 -0
  353. data/spec/support/token.rb +1 -0
  354. data/spec/support/vcr.rb +37 -1
  355. metadata +250 -130
  356. data/examples/hi_real_time/Gemfile +0 -5
  357. data/examples/hi_real_time/hi.gif +0 -0
  358. data/examples/hi_real_time/hi.rb +0 -37
  359. data/examples/hi_real_time_async/Gemfile +0 -5
  360. data/examples/hi_real_time_async/hi.rb +0 -29
  361. data/examples/hi_real_time_async_eventmachine/Gemfile +0 -6
  362. data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
  363. data/examples/hi_real_time_async_eventmachine/hi.rb +0 -36
  364. data/lib/slack/real_time/concurrency/celluloid.rb +0 -100
  365. data/lib/slack/real_time/concurrency/eventmachine.rb +0 -60
  366. data/lib/slack/web/api/mixins/channels.id.json +0 -20
  367. data/lib/slack/web/api/mixins/channels.id.rb +0 -26
  368. data/lib/slack/web/api/mixins/groups.id.json +0 -20
  369. data/lib/slack/web/api/mixins/groups.id.rb +0 -26
  370. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
  371. data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
  372. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -20
  373. data/screenshots/register-bot.png +0 -0
  374. data/spec/fixtures/slack/web/channels_info.yml +0 -46
  375. data/spec/fixtures/slack/web/groups_info.yml +0 -43
  376. data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -35
  377. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -50
  378. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -11
  379. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -11
  380. data/spec/slack/web/api/endpoints/im_spec.rb +0 -30
  381. data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -30
  382. data/spec/slack/web/api/mixins/channels_spec.rb +0 -31
  383. data/spec/slack/web/api/mixins/groups_spec.rb +0 -31
@@ -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
@@ -6,107 +7,145 @@ module Slack
6
7
  module Endpoints
7
8
  module Files
8
9
  #
9
- # This method deletes a file from your team.
10
+ # Deletes a file.
10
11
  #
11
12
  # @option options [file] :file
12
13
  # ID of file to delete.
13
14
  # @see https://api.slack.com/methods/files.delete
14
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files/files.delete.json
15
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.delete.json
15
16
  def files_delete(options = {})
16
17
  throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
17
18
  post('files.delete', options)
18
19
  end
19
20
 
20
21
  #
21
- # This method returns information about a file in your team.
22
+ # Change the properties of a file (undocumented)
23
+ #
24
+ # @option options [Object] :file
25
+ # ID of the file to be edited
26
+ # @option options [Object] :title
27
+ # New title of the file
28
+ # @option options [Object] :filetype
29
+ # New filetype of the file. See https://api.slack.com/types/file#file_types for a list of all supported types.
30
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/files/files.edit.json
31
+ def files_edit(options = {})
32
+ throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
33
+ throw ArgumentError.new('Required arguments :title missing') if options[:title].nil?
34
+ logger.warn('The files.edit method is undocumented.')
35
+ post('files.edit', options)
36
+ end
37
+
38
+ #
39
+ # Gets information about a file.
22
40
  #
23
41
  # @option options [file] :file
24
42
  # Specify a file by providing its ID.
43
+ # @option options [string] :cursor
44
+ # Parameter for pagination. File comments are paginated for a single file. Set cursor equal to the next_cursor attribute returned by the previous request's response_metadata. This parameter is optional, but pagination is mandatory: the default value simply fetches the first "page" of the collection of comments. See pagination for more details.
45
+ # @option options [integer] :limit
46
+ # 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.
25
47
  # @see https://api.slack.com/methods/files.info
26
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files/files.info.json
48
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.info.json
27
49
  def files_info(options = {})
28
50
  throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
29
- post('files.info', options)
51
+ if block_given?
52
+ Pagination::Cursor.new(self, :files_info, options).each do |page|
53
+ yield page
54
+ end
55
+ else
56
+ post('files.info', options)
57
+ end
30
58
  end
31
59
 
32
60
  #
33
- # This method returns a list of files within the team. It can be filtered and sliced in various ways.
61
+ # List for a team, in a channel, or from a user with applied filters.
34
62
  #
35
- # @option options [user] :user
36
- # Filter files created by a single user.
37
63
  # @option options [channel] :channel
38
64
  # Filter files appearing in a specific channel, indicated by its ID.
39
- # @option options [Object] :ts_from
65
+ # @option options [string] :files
66
+ # .
67
+ # @option options [boolean] :show_files_hidden_by_limit
68
+ # Show truncated file info for files hidden due to being too old, and the team who owns the file being over the file limit.
69
+ # @option options [string] :team_id
70
+ # encoded team id to list files in, required if org token is used.
71
+ # @option options [string] :ts_from
40
72
  # Filter files created after this timestamp (inclusive).
41
- # @option options [Object] :ts_to
73
+ # @option options [string] :ts_to
42
74
  # Filter files created before this timestamp (inclusive).
43
- # @option options [Object] :types
44
- # Filter files by type:
45
- #
46
- # all - All files
47
- # posts - Posts
48
- # snippets - Snippets
49
- # images - Image files
50
- # gdocs - Google docs
51
- # zips - Zip files
52
- # pdfs - PDF files
53
- #
54
- #
55
- # You can pass multiple values in the types argument, like types=posts,snippets.The default value is all, which does not filter the list.
56
- # .
75
+ # @option options [string] :types
76
+ # Filter files by type (see below). You can pass multiple values in the types argument, like types=spaces,snippets.The default value is all, which does not filter the list.
77
+ # @option options [user] :user
78
+ # Filter files created by a single user.
57
79
  # @see https://api.slack.com/methods/files.list
58
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files/files.list.json
80
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.list.json
59
81
  def files_list(options = {})
60
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
82
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
61
83
  options = options.merge(user: users_id(options)['user']['id']) if options[:user]
62
84
  post('files.list', options)
63
85
  end
64
86
 
65
87
  #
66
- # This method disables public/external sharing for a file.
88
+ # Revokes public/external sharing access for a file
67
89
  #
68
90
  # @option options [file] :file
69
91
  # File to revoke.
70
92
  # @see https://api.slack.com/methods/files.revokePublicURL
71
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files/files.revokePublicURL.json
93
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.revokePublicURL.json
72
94
  def files_revokePublicURL(options = {})
73
95
  throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
74
96
  post('files.revokePublicURL', options)
75
97
  end
76
98
 
77
99
  #
78
- # This method enables public/external sharing for a file.
100
+ # Share an existing file in a channel (undocumented)
101
+ #
102
+ # @option options [Object] :file
103
+ # ID of the file to be shared
104
+ # @option options [channel] :channel
105
+ # Channel to share the file in. Works with both public (channel ID) and private channels (group ID).
106
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/files/files.share.json
107
+ def files_share(options = {})
108
+ throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
109
+ throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
110
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
111
+ logger.warn('The files.share method is undocumented.')
112
+ post('files.share', options)
113
+ end
114
+
115
+ #
116
+ # Enables a file for public/external sharing.
79
117
  #
80
118
  # @option options [file] :file
81
119
  # File to share.
82
120
  # @see https://api.slack.com/methods/files.sharedPublicURL
83
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files/files.sharedPublicURL.json
121
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.sharedPublicURL.json
84
122
  def files_sharedPublicURL(options = {})
85
123
  throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
86
124
  post('files.sharedPublicURL', options)
87
125
  end
88
126
 
89
127
  #
90
- # This method allows you to create or upload an existing file.
128
+ # Uploads or creates a file.
91
129
  #
130
+ # @option options [string] :channels
131
+ # Comma-separated list of channel names or IDs where the file will be shared.
132
+ # @option options [string] :content
133
+ # File contents via a POST variable. If omitting this parameter, you must provide a file.
92
134
  # @option options [file] :file
93
135
  # File contents via multipart/form-data. If omitting this parameter, you must submit content.
94
- # @option options [Object] :content
95
- # File contents via a POST variable. If omitting this parameter, you must provide a file.
96
- # @option options [Object] :filetype
97
- # A file type identifier.
98
- # @option options [Object] :filename
136
+ # @option options [string] :filename
99
137
  # Filename of file.
100
- # @option options [Object] :title
138
+ # @option options [string] :filetype
139
+ # A file type identifier.
140
+ # @option options [string] :initial_comment
141
+ # The message text introducing the file in specified channels.
142
+ # @option options [string] :thread_ts
143
+ # Provide another message's ts value to upload this file as a reply. Never use a reply's ts value; use its parent instead.
144
+ # @option options [string] :title
101
145
  # Title of file.
102
- # @option options [Object] :initial_comment
103
- # Initial comment to add to file.
104
- # @option options [Object] :channels
105
- # Comma-separated list of channel names or IDs where the file will be shared.
106
146
  # @see https://api.slack.com/methods/files.upload
107
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files/files.upload.json
147
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.upload.json
108
148
  def files_upload(options = {})
109
- throw ArgumentError.new('Required arguments :filename missing') if options[:filename].nil?
110
149
  post('files.upload', options)
111
150
  end
112
151
  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
@@ -6,52 +7,19 @@ module Slack
6
7
  module Endpoints
7
8
  module FilesComments
8
9
  #
9
- # Add a comment to an existing file.
10
- #
11
- # @option options [file] :file
12
- # File to add a comment to.
13
- # @option options [Object] :comment
14
- # Text of the comment to add.
15
- # @see https://api.slack.com/methods/files.comments.add
16
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files.comments/files.comments.add.json
17
- def files_comments_add(options = {})
18
- throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
19
- throw ArgumentError.new('Required arguments :comment missing') if options[:comment].nil?
20
- post('files.comments.add', options)
21
- end
22
-
23
- #
24
- # Delete an existing comment on a file. Only the original author of the comment or a Team Administrator may delete a file comment.
10
+ # Deletes an existing comment on a file.
25
11
  #
26
12
  # @option options [file] :file
27
13
  # File to delete a comment from.
28
- # @option options [Object] :id
14
+ # @option options [string] :id
29
15
  # The comment to delete.
30
16
  # @see https://api.slack.com/methods/files.comments.delete
31
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files.comments/files.comments.delete.json
17
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files.comments/files.comments.delete.json
32
18
  def files_comments_delete(options = {})
33
19
  throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
34
20
  throw ArgumentError.new('Required arguments :id missing') if options[:id].nil?
35
21
  post('files.comments.delete', options)
36
22
  end
37
-
38
- #
39
- # Edit an existing comment on a file. Only the user who created a comment may make edits. Teams may configure a limited time window during which file comment edits are allowed.
40
- #
41
- # @option options [file] :file
42
- # File containing the comment to edit.
43
- # @option options [Object] :id
44
- # The comment to edit.
45
- # @option options [Object] :comment
46
- # Text of the comment to edit.
47
- # @see https://api.slack.com/methods/files.comments.edit
48
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files.comments/files.comments.edit.json
49
- def files_comments_edit(options = {})
50
- throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
51
- throw ArgumentError.new('Required arguments :id missing') if options[:id].nil?
52
- throw ArgumentError.new('Required arguments :comment missing') if options[:comment].nil?
53
- post('files.comments.edit', options)
54
- end
55
23
  end
56
24
  end
57
25
  end
@@ -0,0 +1,127 @@
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 FilesRemote
9
+ #
10
+ # Adds a file from a remote service
11
+ #
12
+ # @option options [string] :external_id
13
+ # Creator defined GUID for the file.
14
+ # @option options [string] :external_url
15
+ # URL of the remote file.
16
+ # @option options [string] :title
17
+ # Title of the file being shared.
18
+ # @option options [string] :filetype
19
+ # type of file.
20
+ # @option options [string] :indexable_file_contents
21
+ # A text file (txt, pdf, doc, etc.) containing textual search terms that are used to improve discovery of the remote file.
22
+ # @option options [string] :preview_image
23
+ # Preview of the document via multipart/form-data.
24
+ # @see https://api.slack.com/methods/files.remote.add
25
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files.remote/files.remote.add.json
26
+ def files_remote_add(options = {})
27
+ throw ArgumentError.new('Required arguments :external_id missing') if options[:external_id].nil?
28
+ throw ArgumentError.new('Required arguments :external_url missing') if options[:external_url].nil?
29
+ throw ArgumentError.new('Required arguments :title missing') if options[:title].nil?
30
+ post('files.remote.add', options)
31
+ end
32
+
33
+ #
34
+ # Retrieve information about a remote file added to Slack
35
+ #
36
+ # @option options [string] :external_id
37
+ # Creator defined GUID for the file.
38
+ # @option options [file] :file
39
+ # Specify a file by providing its ID.
40
+ # @see https://api.slack.com/methods/files.remote.info
41
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files.remote/files.remote.info.json
42
+ def files_remote_info(options = {})
43
+ post('files.remote.info', options)
44
+ end
45
+
46
+ #
47
+ # Retrieve information about a remote file added to Slack
48
+ #
49
+ # @option options [channel] :channel
50
+ # Filter files appearing in a specific channel, indicated by its ID.
51
+ # @option options [string] :cursor
52
+ # 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.
53
+ # @option options [integer] :limit
54
+ # The maximum number of items to return.
55
+ # @option options [string] :ts_from
56
+ # Filter files created after this timestamp (inclusive).
57
+ # @option options [string] :ts_to
58
+ # Filter files created before this timestamp (inclusive).
59
+ # @see https://api.slack.com/methods/files.remote.list
60
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files.remote/files.remote.list.json
61
+ def files_remote_list(options = {})
62
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
63
+ if block_given?
64
+ Pagination::Cursor.new(self, :files_remote_list, options).each do |page|
65
+ yield page
66
+ end
67
+ else
68
+ post('files.remote.list', options)
69
+ end
70
+ end
71
+
72
+ #
73
+ # Remove a remote file.
74
+ #
75
+ # @option options [string] :external_id
76
+ # Creator defined GUID for the file.
77
+ # @option options [file] :file
78
+ # Specify a file by providing its ID.
79
+ # @see https://api.slack.com/methods/files.remote.remove
80
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files.remote/files.remote.remove.json
81
+ def files_remote_remove(options = {})
82
+ post('files.remote.remove', options)
83
+ end
84
+
85
+ #
86
+ # Share a remote file into a channel.
87
+ #
88
+ # @option options [string] :channels
89
+ # Comma-separated list of channel IDs where the file will be shared.
90
+ # @option options [string] :external_id
91
+ # The globally unique identifier (GUID) for the file, as set by the app registering the file with Slack. Either this field or file or both are required.
92
+ # @option options [file] :file
93
+ # Specify a file registered with Slack by providing its ID. Either this field or external_id or both are required.
94
+ # @see https://api.slack.com/methods/files.remote.share
95
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files.remote/files.remote.share.json
96
+ def files_remote_share(options = {})
97
+ throw ArgumentError.new('Required arguments :channels missing') if options[:channels].nil?
98
+ post('files.remote.share', options)
99
+ end
100
+
101
+ #
102
+ # Updates an existing remote file.
103
+ #
104
+ # @option options [string] :external_id
105
+ # Creator defined GUID for the file.
106
+ # @option options [string] :external_url
107
+ # URL of the remote file.
108
+ # @option options [file] :file
109
+ # Specify a file by providing its ID.
110
+ # @option options [string] :filetype
111
+ # type of file.
112
+ # @option options [string] :indexable_file_contents
113
+ # File containing contents that can be used to improve searchability for the remote file.
114
+ # @option options [string] :preview_image
115
+ # Preview of the document via multipart/form-data.
116
+ # @option options [string] :title
117
+ # Title of the file being shared.
118
+ # @see https://api.slack.com/methods/files.remote.update
119
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files.remote/files.remote.update.json
120
+ def files_remote_update(options = {})
121
+ post('files.remote.update', options)
122
+ end
123
+ end
124
+ end
125
+ end
126
+ end
127
+ 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
@@ -5,241 +6,6 @@ module Slack
5
6
  module Api
6
7
  module Endpoints
7
8
  module Groups
8
- #
9
- # This method archives a private channel.
10
- #
11
- # @option options [group] :channel
12
- # Private channel to archive.
13
- # @see https://api.slack.com/methods/groups.archive
14
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.archive.json
15
- def groups_archive(options = {})
16
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
17
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
18
- post('groups.archive', options)
19
- end
20
-
21
- #
22
- # This method closes a private channel.
23
- #
24
- # @option options [group] :channel
25
- # Private channel to close.
26
- # @see https://api.slack.com/methods/groups.close
27
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.close.json
28
- def groups_close(options = {})
29
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
30
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
31
- post('groups.close', options)
32
- end
33
-
34
- #
35
- # This method creates a private channel.
36
- #
37
- # @option options [Object] :name
38
- # Name of private channel to create.
39
- # @see https://api.slack.com/methods/groups.create
40
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.create.json
41
- def groups_create(options = {})
42
- throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
43
- post('groups.create', options)
44
- end
45
-
46
- #
47
- # This method takes an existing private channel and performs the following steps:
48
- #
49
- # @option options [group] :channel
50
- # Private channel to clone and archive.
51
- # @see https://api.slack.com/methods/groups.createChild
52
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.createChild.json
53
- def groups_createChild(options = {})
54
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
55
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
56
- post('groups.createChild', options)
57
- end
58
-
59
- #
60
- # This method returns a portion of messages/events from the specified private channel.
61
- # To read the entire history for a private channel, call the method with no latest or
62
- # oldest arguments, and then continue paging using the instructions below.
63
- #
64
- # @option options [group] :channel
65
- # Private channel to fetch history for.
66
- # @option options [timestamp] :latest
67
- # End of time range of messages to include in results.
68
- # @option options [timestamp] :oldest
69
- # Start of time range of messages to include in results.
70
- # @option options [Object] :inclusive
71
- # Include messages with latest or oldest timestamp in results.
72
- # @option options [Object] :unreads
73
- # Include unread_count_display in the output?.
74
- # @see https://api.slack.com/methods/groups.history
75
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.history.json
76
- def groups_history(options = {})
77
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
78
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
79
- post('groups.history', options)
80
- end
81
-
82
- #
83
- # This method returns information about a private channel.
84
- #
85
- # @option options [group] :channel
86
- # Private channel to get info on.
87
- # @see https://api.slack.com/methods/groups.info
88
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.info.json
89
- def groups_info(options = {})
90
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
91
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
92
- post('groups.info', options)
93
- end
94
-
95
- #
96
- # This method is used to invite a user to a private channel. The calling user must be a member of the private channel.
97
- #
98
- # @option options [group] :channel
99
- # Private channel to invite user to.
100
- # @option options [user] :user
101
- # User to invite.
102
- # @see https://api.slack.com/methods/groups.invite
103
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.invite.json
104
- def groups_invite(options = {})
105
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
106
- throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
107
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
108
- options = options.merge(user: users_id(options)['user']['id']) if options[:user]
109
- post('groups.invite', options)
110
- end
111
-
112
- #
113
- # This method allows a user to remove another member from a private channel.
114
- #
115
- # @option options [group] :channel
116
- # Private channel to remove user from.
117
- # @option options [user] :user
118
- # User to remove from private channel.
119
- # @see https://api.slack.com/methods/groups.kick
120
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.kick.json
121
- def groups_kick(options = {})
122
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
123
- throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
124
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
125
- options = options.merge(user: users_id(options)['user']['id']) if options[:user]
126
- post('groups.kick', options)
127
- end
128
-
129
- #
130
- # This method is used to leave a private channel.
131
- #
132
- # @option options [group] :channel
133
- # Private channel to leave.
134
- # @see https://api.slack.com/methods/groups.leave
135
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.leave.json
136
- def groups_leave(options = {})
137
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
138
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
139
- post('groups.leave', options)
140
- end
141
-
142
- #
143
- # This method returns a list of private channels in the team that the caller is in and archived groups that the caller was in.
144
- # The list of (non-deactivated) members in each private channel is also returned.
145
- #
146
- # @option options [Object] :exclude_archived
147
- # Don't return archived private channels.
148
- # @see https://api.slack.com/methods/groups.list
149
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.list.json
150
- def groups_list(options = {})
151
- post('groups.list', options)
152
- end
153
-
154
- #
155
- # This method moves the read cursor in a private channel.
156
- #
157
- # @option options [group] :channel
158
- # Private channel to set reading cursor in.
159
- # @option options [timestamp] :ts
160
- # Timestamp of the most recently seen message.
161
- # @see https://api.slack.com/methods/groups.mark
162
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.mark.json
163
- def groups_mark(options = {})
164
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
165
- throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
166
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
167
- post('groups.mark', options)
168
- end
169
-
170
- #
171
- # This method opens a private channel.
172
- #
173
- # @option options [group] :channel
174
- # Private channel to open.
175
- # @see https://api.slack.com/methods/groups.open
176
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.open.json
177
- def groups_open(options = {})
178
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
179
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
180
- post('groups.open', options)
181
- end
182
-
183
- #
184
- # This method renames a private channel.
185
- #
186
- # @option options [group] :channel
187
- # Private channel to rename.
188
- # @option options [Object] :name
189
- # New name for private channel.
190
- # @see https://api.slack.com/methods/groups.rename
191
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.rename.json
192
- def groups_rename(options = {})
193
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
194
- throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
195
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
196
- post('groups.rename', options)
197
- end
198
-
199
- #
200
- # This method is used to change the purpose of a private channel. The calling user must be a member of the private channel.
201
- #
202
- # @option options [group] :channel
203
- # Private channel to set the purpose of.
204
- # @option options [Object] :purpose
205
- # The new purpose.
206
- # @see https://api.slack.com/methods/groups.setPurpose
207
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.setPurpose.json
208
- def groups_setPurpose(options = {})
209
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
210
- throw ArgumentError.new('Required arguments :purpose missing') if options[:purpose].nil?
211
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
212
- post('groups.setPurpose', options)
213
- end
214
-
215
- #
216
- # This method is used to change the topic of a private channel. The calling user must be a member of the private channel.
217
- #
218
- # @option options [group] :channel
219
- # Private channel to set the topic of.
220
- # @option options [Object] :topic
221
- # The new topic.
222
- # @see https://api.slack.com/methods/groups.setTopic
223
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.setTopic.json
224
- def groups_setTopic(options = {})
225
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
226
- throw ArgumentError.new('Required arguments :topic missing') if options[:topic].nil?
227
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
228
- post('groups.setTopic', options)
229
- end
230
-
231
- #
232
- # This method unarchives a private channel.
233
- #
234
- # @option options [group] :channel
235
- # Private channel to unarchive.
236
- # @see https://api.slack.com/methods/groups.unarchive
237
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.unarchive.json
238
- def groups_unarchive(options = {})
239
- throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
240
- options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
241
- post('groups.unarchive', options)
242
- end
243
9
  end
244
10
  end
245
11
  end