slack-ruby-client 0.7.9 → 0.16.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 (358) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +32 -1
  5. data/.rubocop_todo.yml +98 -49
  6. data/.travis.yml +10 -14
  7. data/CHANGELOG.md +172 -24
  8. data/CONTRIBUTING.md +17 -6
  9. data/Dangerfile +2 -0
  10. data/Gemfile +10 -4
  11. data/LICENSE.md +1 -1
  12. data/README.md +276 -54
  13. data/RELEASING.md +19 -11
  14. data/Rakefile +2 -1
  15. data/UPGRADING.md +84 -2
  16. data/bin/commands.rb +43 -1
  17. data/bin/commands/admin_analytics.rb +15 -0
  18. data/bin/commands/admin_apps.rb +40 -0
  19. data/bin/commands/admin_apps_approved.rb +17 -0
  20. data/bin/commands/admin_apps_requests.rb +16 -0
  21. data/bin/commands/admin_apps_restricted.rb +17 -0
  22. data/bin/commands/admin_barriers.rb +47 -0
  23. data/bin/commands/admin_conversations.rb +169 -0
  24. data/bin/commands/admin_conversations_ekm.rb +17 -0
  25. data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
  26. data/bin/commands/admin_conversations_whitelist.rb +37 -0
  27. data/bin/commands/admin_emoji.rb +54 -0
  28. data/bin/commands/admin_inviteRequests.rb +36 -0
  29. data/bin/commands/admin_inviteRequests_approved.rb +16 -0
  30. data/bin/commands/admin_inviteRequests_denied.rb +16 -0
  31. data/bin/commands/admin_teams.rb +27 -0
  32. data/bin/commands/admin_teams_admins.rb +16 -0
  33. data/bin/commands/admin_teams_owners.rb +16 -0
  34. data/bin/commands/admin_teams_settings.rb +64 -0
  35. data/bin/commands/admin_usergroups.rb +48 -0
  36. data/bin/commands/admin_users.rb +97 -0
  37. data/bin/commands/admin_users_session.rb +38 -0
  38. data/bin/commands/api.rb +3 -3
  39. data/bin/commands/apps.rb +15 -0
  40. data/bin/commands/apps_connections.rb +13 -0
  41. data/bin/commands/apps_event_authorizations.rb +16 -0
  42. data/bin/commands/apps_permissions.rb +23 -0
  43. data/bin/commands/apps_permissions_resources.rb +15 -0
  44. data/bin/commands/apps_permissions_scopes.rb +13 -0
  45. data/bin/commands/apps_permissions_users.rb +26 -0
  46. data/bin/commands/auth.rb +5 -4
  47. data/bin/commands/auth_teams.rb +16 -0
  48. data/bin/commands/bots.rb +4 -2
  49. data/bin/commands/calls.rb +52 -0
  50. data/bin/commands/calls_participants.rb +25 -0
  51. data/bin/commands/channels.rb +64 -43
  52. data/bin/commands/chat.rb +114 -24
  53. data/bin/commands/chat_scheduledMessages.rb +19 -0
  54. data/bin/commands/conversations.rb +196 -0
  55. data/bin/commands/dialog.rb +15 -0
  56. data/bin/commands/dnd.rb +9 -8
  57. data/bin/commands/emoji.rb +3 -2
  58. data/bin/commands/files.rb +45 -30
  59. data/bin/commands/files_comments.rb +3 -24
  60. data/bin/commands/files_remote.rb +78 -0
  61. data/bin/commands/groups.rb +53 -53
  62. data/bin/commands/im.rb +17 -13
  63. data/bin/commands/migration.rb +16 -0
  64. data/bin/commands/mpim.rb +16 -13
  65. data/bin/commands/oauth.rb +17 -2
  66. data/bin/commands/oauth_v2.rb +17 -0
  67. data/bin/commands/pins.rb +7 -10
  68. data/bin/commands/reactions.rb +17 -15
  69. data/bin/commands/reminders.rb +11 -10
  70. data/bin/commands/rtm.rb +19 -4
  71. data/bin/commands/search.rb +15 -11
  72. data/bin/commands/stars.rb +11 -8
  73. data/bin/commands/team.rb +15 -10
  74. data/bin/commands/team_profile.rb +3 -2
  75. data/bin/commands/usergroups.rb +22 -16
  76. data/bin/commands/usergroups_users.rb +7 -4
  77. data/bin/commands/users.rb +65 -37
  78. data/bin/commands/users_admin.rb +29 -0
  79. data/bin/commands/users_prefs.rb +13 -0
  80. data/bin/commands/users_profile.rb +8 -7
  81. data/bin/commands/views.rb +48 -0
  82. data/bin/commands/workflows.rb +38 -0
  83. data/bin/slack +3 -4
  84. data/examples/hi_real_time_and_web/Gemfile +1 -0
  85. data/examples/hi_real_time_and_web/hi.rb +8 -4
  86. data/examples/{hi_real_time_async_eventmachine → hi_real_time_async_async}/Gemfile +2 -1
  87. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Procfile +0 -0
  88. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/hi.rb +13 -8
  89. data/examples/hi_web/Gemfile +1 -0
  90. data/examples/hi_web/hi.rb +2 -1
  91. data/examples/new_ticket/Gemfile +1 -0
  92. data/examples/new_ticket/new_ticket.rb +2 -1
  93. data/lib/slack-ruby-client.rb +40 -26
  94. data/lib/slack.rb +1 -0
  95. data/lib/slack/config.rb +1 -0
  96. data/lib/slack/events/config.rb +32 -0
  97. data/lib/slack/events/request.rb +70 -0
  98. data/lib/slack/logger.rb +6 -5
  99. data/lib/slack/messages/formatting.rb +4 -4
  100. data/lib/slack/messages/message.rb +2 -6
  101. data/lib/slack/real_time/api/message.rb +3 -1
  102. data/lib/slack/real_time/api/message_id.rb +1 -0
  103. data/lib/slack/real_time/api/ping.rb +5 -2
  104. data/lib/slack/real_time/api/templates/event_handler.erb +1 -1
  105. data/lib/slack/real_time/api/typing.rb +3 -1
  106. data/lib/slack/real_time/client.rb +113 -32
  107. data/lib/slack/real_time/concurrency.rb +2 -2
  108. data/lib/slack/real_time/concurrency/async.rb +140 -0
  109. data/lib/slack/real_time/config.rb +20 -12
  110. data/lib/slack/real_time/models.rb +8 -7
  111. data/lib/slack/real_time/models/base.rb +2 -6
  112. data/lib/slack/real_time/models/bot.rb +1 -0
  113. data/lib/slack/real_time/models/channel.rb +1 -0
  114. data/lib/slack/real_time/models/group.rb +1 -0
  115. data/lib/slack/real_time/models/im.rb +1 -0
  116. data/lib/slack/real_time/models/team.rb +1 -0
  117. data/lib/slack/real_time/models/user.rb +1 -0
  118. data/lib/slack/real_time/socket.rb +46 -17
  119. data/lib/slack/real_time/stores.rb +4 -3
  120. data/lib/slack/real_time/stores/base.rb +5 -3
  121. data/lib/slack/real_time/stores/starter.rb +113 -72
  122. data/lib/slack/real_time/stores/store.rb +131 -88
  123. data/lib/slack/version.rb +2 -1
  124. data/lib/slack/web/api/endpoints.rb +110 -26
  125. data/lib/slack/web/api/endpoints/admin_analytics.rb +26 -0
  126. data/lib/slack/web/api/endpoints/admin_apps.rb +62 -0
  127. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
  128. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +33 -0
  129. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
  130. data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
  131. data/lib/slack/web/api/endpoints/admin_conversations.rb +260 -0
  132. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
  133. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
  134. data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +64 -0
  135. data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
  136. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
  137. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
  138. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
  139. data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
  140. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
  141. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
  142. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
  143. data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
  144. data/lib/slack/web/api/endpoints/admin_users.rb +161 -0
  145. data/lib/slack/web/api/endpoints/admin_users_session.rb +66 -0
  146. data/lib/slack/web/api/endpoints/api.rb +3 -4
  147. data/lib/slack/web/api/endpoints/apps.rb +27 -0
  148. data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
  149. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
  150. data/lib/slack/web/api/endpoints/apps_permissions.rb +36 -0
  151. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +31 -0
  152. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +21 -0
  153. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +50 -0
  154. data/lib/slack/web/api/endpoints/auth.rb +5 -4
  155. data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
  156. data/lib/slack/web/api/endpoints/bots.rb +5 -2
  157. data/lib/slack/web/api/endpoints/calls.rb +83 -0
  158. data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
  159. data/lib/slack/web/api/endpoints/channels.rb +105 -49
  160. data/lib/slack/web/api/endpoints/chat.rb +221 -40
  161. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
  162. data/lib/slack/web/api/endpoints/conversations.rb +332 -0
  163. data/lib/slack/web/api/endpoints/dialog.rb +33 -0
  164. data/lib/slack/web/api/endpoints/dnd.rb +11 -9
  165. data/lib/slack/web/api/endpoints/emoji.rb +3 -2
  166. data/lib/slack/web/api/endpoints/files.rb +75 -38
  167. data/lib/slack/web/api/endpoints/files_comments.rb +3 -38
  168. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  169. data/lib/slack/web/api/endpoints/groups.rb +76 -53
  170. data/lib/slack/web/api/endpoints/im.rb +38 -21
  171. data/lib/slack/web/api/endpoints/migration.rb +28 -0
  172. data/lib/slack/web/api/endpoints/mpim.rb +37 -22
  173. data/lib/slack/web/api/endpoints/oauth.rb +25 -4
  174. data/lib/slack/web/api/endpoints/oauth_v2.rb +30 -0
  175. data/lib/slack/web/api/endpoints/pins.rb +10 -19
  176. data/lib/slack/web/api/endpoints/presence.rb +1 -1
  177. data/lib/slack/web/api/endpoints/reactions.rb +37 -28
  178. data/lib/slack/web/api/endpoints/reminders.rb +11 -10
  179. data/lib/slack/web/api/endpoints/rtm.rb +28 -7
  180. data/lib/slack/web/api/endpoints/search.rb +21 -14
  181. data/lib/slack/web/api/endpoints/stars.rb +24 -15
  182. data/lib/slack/web/api/endpoints/team.rb +21 -13
  183. data/lib/slack/web/api/endpoints/team_profile.rb +3 -2
  184. data/lib/slack/web/api/endpoints/usergroups.rb +33 -22
  185. data/lib/slack/web/api/endpoints/usergroups_users.rb +9 -4
  186. data/lib/slack/web/api/endpoints/users.rb +78 -29
  187. data/lib/slack/web/api/endpoints/users_admin.rb +49 -0
  188. data/lib/slack/web/api/endpoints/users_prefs.rb +21 -0
  189. data/lib/slack/web/api/endpoints/users_profile.rb +11 -10
  190. data/lib/slack/web/api/endpoints/views.rb +97 -0
  191. data/lib/slack/web/api/endpoints/workflows.rb +61 -0
  192. data/lib/slack/web/api/error.rb +2 -8
  193. data/lib/slack/web/api/errors.rb +850 -0
  194. data/lib/slack/web/api/errors/internal_error.rb +14 -0
  195. data/lib/slack/web/api/errors/slack_error.rb +29 -0
  196. data/lib/slack/web/api/errors/too_many_requests_error.rb +24 -0
  197. data/lib/slack/web/api/mixins.rb +6 -4
  198. data/lib/slack/web/api/mixins/channels.id.rb +6 -7
  199. data/lib/slack/web/api/mixins/conversations.id.rb +25 -0
  200. data/lib/slack/web/api/mixins/groups.id.rb +6 -7
  201. data/lib/slack/web/api/mixins/ids.id.rb +24 -0
  202. data/lib/slack/web/api/mixins/users.id.rb +6 -7
  203. data/lib/slack/web/api/mixins/users.search.rb +39 -36
  204. data/lib/slack/web/api/patches/chat.1.patch +72 -0
  205. data/lib/slack/web/api/patches/dialog.1.open-json-support.patch +17 -0
  206. data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
  207. data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
  208. data/lib/slack/web/api/templates/command.erb +5 -3
  209. data/lib/slack/web/api/templates/commands.erb +2 -1
  210. data/lib/slack/web/api/templates/endpoints.erb +5 -3
  211. data/lib/slack/web/api/templates/errors.erb +20 -0
  212. data/lib/slack/web/api/templates/method.erb +26 -4
  213. data/lib/slack/web/api/templates/method_spec.erb +3 -2
  214. data/lib/slack/web/client.rb +2 -1
  215. data/lib/slack/web/config.rb +21 -10
  216. data/lib/slack/web/faraday/connection.rb +25 -16
  217. data/lib/slack/web/faraday/request.rb +2 -0
  218. data/lib/slack/web/faraday/response/raise_error.rb +23 -1
  219. data/lib/slack/web/faraday/response/wrap_error.rb +18 -0
  220. data/lib/slack/web/pagination/cursor.rb +52 -0
  221. data/lib/slack_ruby_client.rb +1 -0
  222. data/lib/tasks/git.rake +2 -1
  223. data/lib/tasks/real_time.rake +16 -6
  224. data/lib/tasks/update.rake +1 -0
  225. data/lib/tasks/web.rake +38 -10
  226. data/screenshots/create-app.png +0 -0
  227. data/slack-ruby-client.gemspec +9 -6
  228. data/spec/fixtures/slack/web/429_error.yml +2 -0
  229. data/spec/fixtures/slack/web/503_error.yml +14 -0
  230. data/spec/fixtures/slack/web/channels_info.yml +108 -15
  231. data/spec/fixtures/slack/web/conversations_setTopic.yml +69 -0
  232. data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +142 -0
  233. data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +208 -0
  234. data/spec/fixtures/slack/web/paginated_users_list.yml +181 -0
  235. data/spec/fixtures/slack/web/rtm_connect.yml +70 -0
  236. data/spec/fixtures/slack/web/rtm_start.yml +1 -1
  237. data/spec/fixtures/slack/web/views_open_error.yml +76 -0
  238. data/spec/integration/integration_spec.rb +116 -48
  239. data/spec/slack/config_spec.rb +2 -0
  240. data/spec/slack/events/config_spec.rb +33 -0
  241. data/spec/slack/events/request_spec.rb +183 -0
  242. data/spec/slack/messages/formatting_spec.rb +25 -14
  243. data/spec/slack/real_time/api/message_spec.rb +6 -1
  244. data/spec/slack/real_time/api/ping_spec.rb +2 -0
  245. data/spec/slack/real_time/api/typing_spec.rb +5 -1
  246. data/spec/slack/real_time/client_spec.rb +462 -134
  247. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +3 -1
  248. data/spec/slack/real_time/event_handlers/bot_spec.rb +6 -3
  249. data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -6
  250. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +3 -2
  251. data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
  252. data/spec/slack/real_time/event_handlers/im_spec.rb +4 -3
  253. data/spec/slack/real_time/event_handlers/team_spec.rb +8 -4
  254. data/spec/slack/real_time/event_handlers/user_spec.rb +5 -2
  255. data/spec/slack/real_time/rtm_connect_spec.rb +14 -0
  256. data/spec/slack/real_time/rtm_start_spec.rb +1 -0
  257. data/spec/slack/real_time/store_spec.rb +2 -1
  258. data/spec/slack/slack_spec.rb +39 -7
  259. data/spec/slack/version_spec.rb +2 -1
  260. data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
  261. data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
  262. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
  263. data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
  264. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +13 -0
  265. data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
  266. data/spec/slack/web/api/endpoints/admin_conversations_ekm_spec.rb +8 -0
  267. data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
  268. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +98 -0
  269. data/spec/slack/web/api/endpoints/admin_conversations_whitelist_spec.rb +32 -0
  270. data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
  271. data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
  272. data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
  273. data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
  274. data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
  275. data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
  276. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
  277. data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
  278. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
  279. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +21 -0
  280. data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
  281. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  282. data/spec/slack/web/api/endpoints/apps_connections_spec.rb +8 -0
  283. data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
  284. data/spec/slack/web/api/endpoints/apps_permissions_resources_spec.rb +8 -0
  285. data/spec/slack/web/api/endpoints/apps_permissions_scopes_spec.rb +8 -0
  286. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +16 -0
  287. data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +19 -0
  288. data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
  289. data/spec/slack/web/api/endpoints/auth_teams_spec.rb +8 -0
  290. data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
  291. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
  292. data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
  293. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +8 -0
  294. data/spec/slack/web/api/endpoints/conversations_spec.rb +109 -0
  295. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +13 -4
  296. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +5 -3
  297. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +140 -24
  298. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +36 -0
  299. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +2 -0
  300. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +21 -6
  301. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
  302. data/spec/slack/web/api/endpoints/dnd_spec.rb +6 -0
  303. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  304. data/spec/slack/web/api/endpoints/files_comments_spec.rb +3 -21
  305. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  306. data/spec/slack/web/api/endpoints/files_spec.rb +17 -5
  307. data/spec/slack/web/api/endpoints/im_spec.rb +5 -4
  308. data/spec/slack/web/api/endpoints/migration_spec.rb +13 -0
  309. data/spec/slack/web/api/endpoints/mpim_spec.rb +5 -4
  310. data/spec/slack/web/api/endpoints/oauth_spec.rb +5 -4
  311. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +13 -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/team_profile_spec.rb +1 -0
  319. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  320. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  321. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +3 -2
  322. data/spec/slack/web/api/endpoints/users_admin_spec.rb +18 -0
  323. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +8 -0
  324. data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
  325. data/spec/slack/web/api/endpoints/views_spec.rb +29 -0
  326. data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
  327. data/spec/slack/web/api/error_spec.rb +5 -3
  328. data/spec/slack/web/api/errors/slack_error_spec.rb +38 -0
  329. data/spec/slack/web/api/mixins/channels_spec.rb +24 -12
  330. data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
  331. data/spec/slack/web/api/mixins/conversations_spec.rb +43 -0
  332. data/spec/slack/web/api/mixins/groups_spec.rb +24 -12
  333. data/spec/slack/web/api/mixins/users_spec.rb +30 -17
  334. data/spec/slack/web/api/pagination/cursor_spec.rb +100 -0
  335. data/spec/slack/web/client_spec.rb +215 -14
  336. data/spec/slack/web/faraday/response/raise_error_spec.rb +85 -0
  337. data/spec/spec_helper.rb +8 -1
  338. data/spec/support/queue_with_timeout.rb +6 -5
  339. data/spec/support/real_time/concurrency/mock.rb +2 -2
  340. data/spec/support/real_time/connected_client.rb +13 -2
  341. data/spec/support/real_time/event.rb +1 -0
  342. data/spec/support/token.rb +1 -0
  343. data/spec/support/vcr.rb +6 -1
  344. metadata +280 -55
  345. data/examples/hi_real_time/Gemfile +0 -5
  346. data/examples/hi_real_time/hi.gif +0 -0
  347. data/examples/hi_real_time/hi.rb +0 -37
  348. data/examples/hi_real_time_async_celluloid/Gemfile +0 -6
  349. data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
  350. data/examples/hi_real_time_async_eventmachine/hi.rb +0 -36
  351. data/lib/slack/real_time/concurrency/celluloid.rb +0 -113
  352. data/lib/slack/real_time/concurrency/eventmachine.rb +0 -60
  353. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
  354. data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
  355. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -20
  356. data/screenshots/register-bot.png +0 -0
  357. data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -31
  358. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -47
@@ -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,10 +7,10 @@ module Slack
6
7
  module Endpoints
7
8
  module Emoji
8
9
  #
9
- # This method lists the custom emoji for a team.
10
+ # Lists custom emoji for a team.
10
11
  #
11
12
  # @see https://api.slack.com/methods/emoji.list
12
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/emoji/emoji.list.json
13
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/emoji/emoji.list.json
13
14
  def emoji_list(options = {})
14
15
  post('emoji.list', options)
15
16
  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,107 +7,143 @@ 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 [Object] :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 [Object] :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.
65
+ # @option options [Object] :show_files_hidden_by_limit
66
+ # Show truncated file info for files hidden due to being too old, and the team who owns the file being over the file limit.
67
+ # @option options [Object] :team_id
68
+ # encoded team id to list files in, required if org token is used.
39
69
  # @option options [Object] :ts_from
40
70
  # Filter files created after this timestamp (inclusive).
41
71
  # @option options [Object] :ts_to
42
72
  # Filter files created before this timestamp (inclusive).
43
73
  # @option options [Object] :types
44
- # Filter files by type:
45
- #
46
- # all - All files
47
- # spaces - 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=spaces,snippets.The default value is all, which does not filter the list.
56
- # .
74
+ # 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.
75
+ # @option options [user] :user
76
+ # Filter files created by a single user.
57
77
  # @see https://api.slack.com/methods/files.list
58
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files/files.list.json
78
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.list.json
59
79
  def files_list(options = {})
60
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
80
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
61
81
  options = options.merge(user: users_id(options)['user']['id']) if options[:user]
62
82
  post('files.list', options)
63
83
  end
64
84
 
65
85
  #
66
- # This method disables public/external sharing for a file.
86
+ # Revokes public/external sharing access for a file
67
87
  #
68
88
  # @option options [file] :file
69
89
  # File to revoke.
70
90
  # @see https://api.slack.com/methods/files.revokePublicURL
71
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files/files.revokePublicURL.json
91
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.revokePublicURL.json
72
92
  def files_revokePublicURL(options = {})
73
93
  throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
74
94
  post('files.revokePublicURL', options)
75
95
  end
76
96
 
77
97
  #
78
- # This method enables public/external sharing for a file.
98
+ # Share an existing file in a channel (undocumented)
99
+ #
100
+ # @option options [Object] :file
101
+ # ID of the file to be shared
102
+ # @option options [channel] :channel
103
+ # Channel to share the file in. Works with both public (channel ID) and private channels (group ID).
104
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/files/files.share.json
105
+ def files_share(options = {})
106
+ throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
107
+ throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
108
+ options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
109
+ logger.warn('The files.share method is undocumented.')
110
+ post('files.share', options)
111
+ end
112
+
113
+ #
114
+ # Enables a file for public/external sharing.
79
115
  #
80
116
  # @option options [file] :file
81
117
  # File to share.
82
118
  # @see https://api.slack.com/methods/files.sharedPublicURL
83
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files/files.sharedPublicURL.json
119
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.sharedPublicURL.json
84
120
  def files_sharedPublicURL(options = {})
85
121
  throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
86
122
  post('files.sharedPublicURL', options)
87
123
  end
88
124
 
89
125
  #
90
- # This method allows you to create or upload an existing file.
126
+ # Uploads or creates a file.
91
127
  #
92
- # @option options [file] :file
93
- # File contents via multipart/form-data. If omitting this parameter, you must submit content.
128
+ # @option options [Object] :channels
129
+ # Comma-separated list of channel names or IDs where the file will be shared.
94
130
  # @option options [Object] :content
95
131
  # 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.
132
+ # @option options [file] :file
133
+ # File contents via multipart/form-data. If omitting this parameter, you must submit content.
98
134
  # @option options [Object] :filename
99
135
  # Filename of file.
136
+ # @option options [Object] :filetype
137
+ # A file type identifier.
138
+ # @option options [Object] :initial_comment
139
+ # The message text introducing the file in specified channels.
140
+ # @option options [Object] :thread_ts
141
+ # Provide another message's ts value to upload this file as a reply. Never use a reply's ts value; use its parent instead.
100
142
  # @option options [Object] :title
101
143
  # 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
144
  # @see https://api.slack.com/methods/files.upload
107
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files/files.upload.json
145
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/files/files.upload.json
108
146
  def files_upload(options = {})
109
- throw ArgumentError.new('Required arguments :filename missing') if options[:filename].nil?
110
147
  post('files.upload', options)
111
148
  end
112
149
  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,55 +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
- # @option options [channel] :channel
16
- # Channel id (encoded) of which location to associate with the new comment.
17
- # @see https://api.slack.com/methods/files.comments.add
18
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files.comments/files.comments.add.json
19
- def files_comments_add(options = {})
20
- throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
21
- throw ArgumentError.new('Required arguments :comment missing') if options[:comment].nil?
22
- options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
23
- post('files.comments.add', options)
24
- end
25
-
26
- #
27
- # 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.
28
11
  #
29
12
  # @option options [file] :file
30
13
  # File to delete a comment from.
31
14
  # @option options [Object] :id
32
15
  # The comment to delete.
33
16
  # @see https://api.slack.com/methods/files.comments.delete
34
- # @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
35
18
  def files_comments_delete(options = {})
36
19
  throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
37
20
  throw ArgumentError.new('Required arguments :id missing') if options[:id].nil?
38
21
  post('files.comments.delete', options)
39
22
  end
40
-
41
- #
42
- # 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.
43
- #
44
- # @option options [file] :file
45
- # File containing the comment to edit.
46
- # @option options [Object] :id
47
- # The comment to edit.
48
- # @option options [Object] :comment
49
- # Text of the comment to edit.
50
- # @see https://api.slack.com/methods/files.comments.edit
51
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/files.comments/files.comments.edit.json
52
- def files_comments_edit(options = {})
53
- throw ArgumentError.new('Required arguments :file missing') if options[:file].nil?
54
- throw ArgumentError.new('Required arguments :id missing') if options[:id].nil?
55
- throw ArgumentError.new('Required arguments :comment missing') if options[:comment].nil?
56
- post('files.comments.edit', options)
57
- end
58
23
  end
59
24
  end
60
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 [Object] :external_id
13
+ # Creator defined GUID for the file.
14
+ # @option options [Object] :external_url
15
+ # URL of the remote file.
16
+ # @option options [Object] :title
17
+ # Title of the file being shared.
18
+ # @option options [Object] :filetype
19
+ # type of file.
20
+ # @option options [Object] :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 [Object] :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 [Object] :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 [Object] :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 [Object] :limit
54
+ # The maximum number of items to return.
55
+ # @option options [Object] :ts_from
56
+ # Filter files created after this timestamp (inclusive).
57
+ # @option options [Object] :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 [Object] :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 [Object] :channels
89
+ # Comma-separated list of channel IDs where the file will be shared.
90
+ # @option options [Object] :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 [Object] :external_id
105
+ # Creator defined GUID for the file.
106
+ # @option options [Object] :external_url
107
+ # URL of the remote file.
108
+ # @option options [file] :file
109
+ # Specify a file by providing its ID.
110
+ # @option options [Object] :filetype
111
+ # type of file.
112
+ # @option options [Object] :indexable_file_contents
113
+ # File containing contents that can be used to improve searchability for the remote file.
114
+ # @option options [Object] :preview_image
115
+ # Preview of the document via multipart/form-data.
116
+ # @option options [Object] :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
@@ -6,254 +7,276 @@ module Slack
6
7
  module Endpoints
7
8
  module Groups
8
9
  #
9
- # This method archives a private channel.
10
+ # Archives a private channel.
10
11
  #
11
12
  # @option options [group] :channel
12
13
  # Private channel to archive.
13
14
  # @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
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.archive.json
15
16
  def groups_archive(options = {})
16
17
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
17
18
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
19
+ logger.warn('groups.archive: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.archive.')
18
20
  post('groups.archive', options)
19
21
  end
20
22
 
21
23
  #
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.
24
+ # Creates a private channel.
36
25
  #
37
26
  # @option options [Object] :name
38
27
  # Name of private channel to create.
28
+ # @option options [Object] :team_id
29
+ # encoded team id to create the channel in, required if org token is used.
30
+ # @option options [Object] :validate
31
+ # Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
39
32
  # @see https://api.slack.com/methods/groups.create
40
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.create.json
33
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.create.json
41
34
  def groups_create(options = {})
42
35
  throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
36
+ logger.warn('groups.create: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.create.')
43
37
  post('groups.create', options)
44
38
  end
45
39
 
46
40
  #
47
- # This method takes an existing private channel and performs the following steps:
41
+ # Clones and archives a private channel.
48
42
  #
49
43
  # @option options [group] :channel
50
44
  # Private channel to clone and archive.
51
45
  # @see https://api.slack.com/methods/groups.createChild
52
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.createChild.json
46
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.createChild.json
53
47
  def groups_createChild(options = {})
54
48
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
55
49
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
50
+ logger.warn('groups.createChild: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: .')
56
51
  post('groups.createChild', options)
57
52
  end
58
53
 
59
54
  #
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.
55
+ # Fetches history of messages and events from a private channel.
63
56
  #
64
57
  # @option options [group] :channel
65
58
  # Private channel to fetch history for.
59
+ # @option options [Object] :inclusive
60
+ # Include messages with latest or oldest timestamp in results.
66
61
  # @option options [timestamp] :latest
67
62
  # End of time range of messages to include in results.
68
63
  # @option options [timestamp] :oldest
69
64
  # 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
65
  # @option options [Object] :unreads
73
66
  # Include unread_count_display in the output?.
74
67
  # @see https://api.slack.com/methods/groups.history
75
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.history.json
68
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.history.json
76
69
  def groups_history(options = {})
77
70
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
78
71
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
72
+ logger.warn('groups.history: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.history.')
79
73
  post('groups.history', options)
80
74
  end
81
75
 
82
76
  #
83
- # This method returns information about a private channel.
77
+ # Gets information about a private channel.
84
78
  #
85
79
  # @option options [group] :channel
86
80
  # Private channel to get info on.
81
+ # @option options [Object] :include_locale
82
+ # Set this to true to receive the locale for this group. Defaults to false.
87
83
  # @see https://api.slack.com/methods/groups.info
88
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.info.json
84
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.info.json
89
85
  def groups_info(options = {})
90
86
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
91
87
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
88
+ logger.warn('groups.info: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.info.')
92
89
  post('groups.info', options)
93
90
  end
94
91
 
95
92
  #
96
- # This method is used to invite a user to a private channel. The calling user must be a member of the private channel.
93
+ # Invites a user to a private channel.
97
94
  #
98
95
  # @option options [group] :channel
99
96
  # Private channel to invite user to.
100
97
  # @option options [user] :user
101
98
  # User to invite.
102
99
  # @see https://api.slack.com/methods/groups.invite
103
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.invite.json
100
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.invite.json
104
101
  def groups_invite(options = {})
105
102
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
106
103
  throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
107
104
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
108
105
  options = options.merge(user: users_id(options)['user']['id']) if options[:user]
106
+ logger.warn('groups.invite: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.invite.')
109
107
  post('groups.invite', options)
110
108
  end
111
109
 
112
110
  #
113
- # This method allows a user to remove another member from a private channel.
111
+ # Removes a user from a private channel.
114
112
  #
115
113
  # @option options [group] :channel
116
114
  # Private channel to remove user from.
117
115
  # @option options [user] :user
118
116
  # User to remove from private channel.
119
117
  # @see https://api.slack.com/methods/groups.kick
120
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.kick.json
118
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.kick.json
121
119
  def groups_kick(options = {})
122
120
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
123
121
  throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
124
122
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
125
123
  options = options.merge(user: users_id(options)['user']['id']) if options[:user]
124
+ logger.warn('groups.kick: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.kick.')
126
125
  post('groups.kick', options)
127
126
  end
128
127
 
129
128
  #
130
- # This method is used to leave a private channel.
129
+ # Leaves a private channel.
131
130
  #
132
131
  # @option options [group] :channel
133
132
  # Private channel to leave.
134
133
  # @see https://api.slack.com/methods/groups.leave
135
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.leave.json
134
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.leave.json
136
135
  def groups_leave(options = {})
137
136
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
138
137
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
138
+ logger.warn('groups.leave: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.leave.')
139
139
  post('groups.leave', options)
140
140
  end
141
141
 
142
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.
143
+ # Lists private channels that the calling user has access to.
145
144
  #
145
+ # @option options [Object] :cursor
146
+ # Parameter for pagination. 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. See pagination for more details.
146
147
  # @option options [Object] :exclude_archived
147
148
  # Don't return archived private channels.
149
+ # @option options [Object] :exclude_members
150
+ # Exclude the members from each group.
151
+ # @option options [Object] :limit
152
+ # 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.
153
+ # @option options [Object] :team_id
154
+ # encoded team id to list channels in, required if org token is used.
148
155
  # @see https://api.slack.com/methods/groups.list
149
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.list.json
156
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.list.json
150
157
  def groups_list(options = {})
151
- post('groups.list', options)
158
+ logger.warn('groups.list: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.list, users.conversations.')
159
+ if block_given?
160
+ Pagination::Cursor.new(self, :groups_list, options).each do |page|
161
+ yield page
162
+ end
163
+ else
164
+ post('groups.list', options)
165
+ end
152
166
  end
153
167
 
154
168
  #
155
- # This method moves the read cursor in a private channel.
169
+ # Sets the read cursor in a private channel.
156
170
  #
157
171
  # @option options [group] :channel
158
- # Private channel to set reading cursor in.
172
+ # Channel or conversation to set the read cursor for.
159
173
  # @option options [timestamp] :ts
160
- # Timestamp of the most recently seen message.
174
+ # Unique identifier of message you want marked as most recently seen in this conversation.
161
175
  # @see https://api.slack.com/methods/groups.mark
162
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.mark.json
176
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.mark.json
163
177
  def groups_mark(options = {})
164
178
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
165
179
  throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
166
180
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
181
+ logger.warn('groups.mark: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.mark.')
167
182
  post('groups.mark', options)
168
183
  end
169
184
 
170
185
  #
171
- # This method opens a private channel.
186
+ # Opens a private channel.
172
187
  #
173
188
  # @option options [group] :channel
174
189
  # Private channel to open.
175
190
  # @see https://api.slack.com/methods/groups.open
176
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.open.json
191
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.open.json
177
192
  def groups_open(options = {})
178
193
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
179
194
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
195
+ logger.warn('groups.open: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: .')
180
196
  post('groups.open', options)
181
197
  end
182
198
 
183
199
  #
184
- # This method renames a private channel.
200
+ # Renames a private channel.
185
201
  #
186
202
  # @option options [group] :channel
187
203
  # Private channel to rename.
188
204
  # @option options [Object] :name
189
205
  # New name for private channel.
206
+ # @option options [Object] :validate
207
+ # Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
190
208
  # @see https://api.slack.com/methods/groups.rename
191
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.rename.json
209
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.rename.json
192
210
  def groups_rename(options = {})
193
211
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
194
212
  throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
195
213
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
214
+ logger.warn('groups.rename: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.rename.')
196
215
  post('groups.rename', options)
197
216
  end
198
217
 
199
218
  #
200
- # This method returns an entire thread (a message plus all the messages in reply to it).
219
+ # Retrieve a thread of messages posted to a private channel
201
220
  #
202
221
  # @option options [group] :channel
203
222
  # Private channel to fetch thread from.
204
223
  # @option options [Object] :thread_ts
205
224
  # Unique identifier of a thread's parent message.
206
225
  # @see https://api.slack.com/methods/groups.replies
207
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.replies.json
226
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.replies.json
208
227
  def groups_replies(options = {})
209
228
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
210
229
  throw ArgumentError.new('Required arguments :thread_ts missing') if options[:thread_ts].nil?
211
230
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
231
+ logger.warn('groups.replies: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.replies.')
212
232
  post('groups.replies', options)
213
233
  end
214
234
 
215
235
  #
216
- # This method is used to change the purpose of a private channel. The calling user must be a member of the private channel.
236
+ # Sets the purpose for a private channel.
217
237
  #
218
238
  # @option options [group] :channel
219
239
  # Private channel to set the purpose of.
220
240
  # @option options [Object] :purpose
221
241
  # The new purpose.
222
242
  # @see https://api.slack.com/methods/groups.setPurpose
223
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.setPurpose.json
243
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.setPurpose.json
224
244
  def groups_setPurpose(options = {})
225
245
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
226
246
  throw ArgumentError.new('Required arguments :purpose missing') if options[:purpose].nil?
227
247
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
248
+ logger.warn('groups.setPurpose: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.setPurpose.')
228
249
  post('groups.setPurpose', options)
229
250
  end
230
251
 
231
252
  #
232
- # This method is used to change the topic of a private channel. The calling user must be a member of the private channel.
253
+ # Sets the topic for a private channel.
233
254
  #
234
255
  # @option options [group] :channel
235
256
  # Private channel to set the topic of.
236
257
  # @option options [Object] :topic
237
258
  # The new topic.
238
259
  # @see https://api.slack.com/methods/groups.setTopic
239
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.setTopic.json
260
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.setTopic.json
240
261
  def groups_setTopic(options = {})
241
262
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
242
263
  throw ArgumentError.new('Required arguments :topic missing') if options[:topic].nil?
243
264
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
265
+ logger.warn('groups.setTopic: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.setTopic.')
244
266
  post('groups.setTopic', options)
245
267
  end
246
268
 
247
269
  #
248
- # This method unarchives a private channel.
270
+ # Unarchives a private channel.
249
271
  #
250
272
  # @option options [group] :channel
251
273
  # Private channel to unarchive.
252
274
  # @see https://api.slack.com/methods/groups.unarchive
253
- # @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups/groups.unarchive.json
275
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/groups/groups.unarchive.json
254
276
  def groups_unarchive(options = {})
255
277
  throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
256
278
  options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
279
+ logger.warn('groups.unarchive: This method is deprecated. It will stop functioning in February 2021 and will not work with newly created apps after June 10th, 2020. Alternative methods: conversations.unarchive.')
257
280
  post('groups.unarchive', options)
258
281
  end
259
282
  end