slack-ruby-client 0.7.9 → 0.16.0

Sign up to get free protection for your applications and to get access to all the features.
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