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,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  desc 'Emoji methods.'
4
5
  command 'emoji' do |g|
5
- g.desc 'This method lists the custom emoji for a team.'
6
- g.long_desc %( This method lists the custom emoji for a team. )
6
+ g.desc 'Lists custom emoji for a team.'
7
+ g.long_desc %( Lists custom emoji for a team. )
7
8
  g.command 'list' do |c|
8
9
  c.action do |_global_options, options, _args|
9
10
  puts JSON.dump($client.emoji_list(options))
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  desc 'Get info on files uploaded to Slack, upload new files to Slack.'
4
5
  command 'files' do |g|
5
- g.desc 'This method deletes a file from your team.'
6
- g.long_desc %( This method deletes a file from your team. )
6
+ g.desc 'Deletes a file.'
7
+ g.long_desc %( Deletes a file. )
7
8
  g.command 'delete' do |c|
8
9
  c.flag 'file', desc: 'ID of file to delete.'
9
10
  c.action do |_global_options, options, _args|
@@ -11,42 +12,45 @@ command 'files' do |g|
11
12
  end
12
13
  end
13
14
 
14
- g.desc 'This method returns information about a file in your team.'
15
- g.long_desc %( This method returns information about a file in your team. )
15
+ g.desc 'Change the properties of a file (undocumented)'
16
+ g.long_desc %( Change the properties of a file )
17
+ g.command 'edit' do |c|
18
+ c.flag 'file', desc: 'ID of the file to be edited'
19
+ c.flag 'title', desc: 'New title of the file'
20
+ c.flag 'filetype', desc: 'New filetype of the file. See https://api.slack.com/types/file#file_types for a list of all supported types.'
21
+ c.action do |_global_options, options, _args|
22
+ puts JSON.dump($client.files_edit(options))
23
+ end
24
+ end
25
+
26
+ g.desc 'Gets information about a file.'
27
+ g.long_desc %( Gets information about a file. )
16
28
  g.command 'info' do |c|
17
29
  c.flag 'file', desc: 'Specify a file by providing its ID.'
30
+ c.flag 'cursor', desc: "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."
31
+ c.flag 'limit', desc: "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."
18
32
  c.action do |_global_options, options, _args|
19
33
  puts JSON.dump($client.files_info(options))
20
34
  end
21
35
  end
22
36
 
23
- g.desc 'This method returns a list of files within the team. It can be filtered and sliced in various ways.'
24
- g.long_desc %( This method returns a list of files within the team. It can be filtered and sliced in various ways. )
37
+ g.desc 'List for a team, in a channel, or from a user with applied filters.'
38
+ g.long_desc %( List for a team, in a channel, or from a user with applied filters. )
25
39
  g.command 'list' do |c|
26
- c.flag 'user', desc: 'Filter files created by a single user.'
27
40
  c.flag 'channel', desc: 'Filter files appearing in a specific channel, indicated by its ID.'
41
+ c.flag 'show_files_hidden_by_limit', desc: 'Show truncated file info for files hidden due to being too old, and the team who owns the file being over the file limit.'
42
+ c.flag 'team_id', desc: 'encoded team id to list files in, required if org token is used.'
28
43
  c.flag 'ts_from', desc: 'Filter files created after this timestamp (inclusive).'
29
44
  c.flag 'ts_to', desc: 'Filter files created before this timestamp (inclusive).'
30
- c.flag 'types', desc: 'Filter files by type:
31
-
32
- all - All files
33
- spaces - Posts
34
- snippets - Snippets
35
- images - Image files
36
- gdocs - Google docs
37
- zips - Zip files
38
- pdfs - PDF files
39
-
40
-
41
- You can pass multiple values in the types argument, like types=spaces,snippets.The default value is all, which does not filter the list.
42
- .'
45
+ c.flag 'types', desc: '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.'
46
+ c.flag 'user', desc: 'Filter files created by a single user.'
43
47
  c.action do |_global_options, options, _args|
44
48
  puts JSON.dump($client.files_list(options))
45
49
  end
46
50
  end
47
51
 
48
- g.desc 'This method disables public/external sharing for a file.'
49
- g.long_desc %( This method disables public/external sharing for a file. )
52
+ g.desc 'Revokes public/external sharing access for a file'
53
+ g.long_desc %( Revokes public/external sharing access for a file )
50
54
  g.command 'revokePublicURL' do |c|
51
55
  c.flag 'file', desc: 'File to revoke.'
52
56
  c.action do |_global_options, options, _args|
@@ -54,8 +58,18 @@ You can pass multiple values in the types argument, like types=spaces,snippets.T
54
58
  end
55
59
  end
56
60
 
57
- g.desc 'This method enables public/external sharing for a file.'
58
- g.long_desc %( This method enables public/external sharing for a file. )
61
+ g.desc 'Share an existing file in a channel (undocumented)'
62
+ g.long_desc %( Share an existing file in a channel )
63
+ g.command 'share' do |c|
64
+ c.flag 'file', desc: 'ID of the file to be shared'
65
+ c.flag 'channel', desc: 'Channel to share the file in. Works with both public (channel ID) and private channels (group ID).'
66
+ c.action do |_global_options, options, _args|
67
+ puts JSON.dump($client.files_share(options))
68
+ end
69
+ end
70
+
71
+ g.desc 'Enables a file for public/external sharing.'
72
+ g.long_desc %( Enables a file for public/external sharing. )
59
73
  g.command 'sharedPublicURL' do |c|
60
74
  c.flag 'file', desc: 'File to share.'
61
75
  c.action do |_global_options, options, _args|
@@ -63,16 +77,17 @@ You can pass multiple values in the types argument, like types=spaces,snippets.T
63
77
  end
64
78
  end
65
79
 
66
- g.desc 'This method allows you to create or upload an existing file.'
67
- g.long_desc %( This method allows you to create or upload an existing file. )
80
+ g.desc 'Uploads or creates a file.'
81
+ g.long_desc %( Uploads or creates a file. )
68
82
  g.command 'upload' do |c|
69
- c.flag 'file', desc: 'File contents via multipart/form-data. If omitting this parameter, you must submit content.'
83
+ c.flag 'channels', desc: 'Comma-separated list of channel names or IDs where the file will be shared.'
70
84
  c.flag 'content', desc: 'File contents via a POST variable. If omitting this parameter, you must provide a file.'
71
- c.flag 'filetype', desc: 'A file type identifier.'
85
+ c.flag 'file', desc: 'File contents via multipart/form-data. If omitting this parameter, you must submit content.'
72
86
  c.flag 'filename', desc: 'Filename of file.'
87
+ c.flag 'filetype', desc: 'A file type identifier.'
88
+ c.flag 'initial_comment', desc: 'The message text introducing the file in specified channels.'
89
+ c.flag 'thread_ts', desc: "Provide another message's ts value to upload this file as a reply. Never use a reply's ts value; use its parent instead."
73
90
  c.flag 'title', desc: 'Title of file.'
74
- c.flag 'initial_comment', desc: 'Initial comment to add to file.'
75
- c.flag 'channels', desc: 'Comma-separated list of channel names or IDs where the file will be shared.'
76
91
  c.action do |_global_options, options, _args|
77
92
  puts JSON.dump($client.files_upload(options))
78
93
  end
@@ -1,20 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  desc 'FilesComments methods.'
4
5
  command 'files_comments' do |g|
5
- g.desc 'Add a comment to an existing file.'
6
- g.long_desc %( Add a comment to an existing file. )
7
- g.command 'add' do |c|
8
- c.flag 'file', desc: 'File to add a comment to.'
9
- c.flag 'comment', desc: 'Text of the comment to add.'
10
- c.flag 'channel', desc: 'Channel id (encoded) of which location to associate with the new comment.'
11
- c.action do |_global_options, options, _args|
12
- puts JSON.dump($client.files_comments_add(options))
13
- end
14
- end
15
-
16
- g.desc 'Delete an existing comment on a file. Only the original author of the comment or a Team Administrator may delete a file comment.'
17
- g.long_desc %( Delete an existing comment on a file. Only the original author of the comment or a Team Administrator may delete a file comment. )
6
+ g.desc 'Deletes an existing comment on a file.'
7
+ g.long_desc %( Deletes an existing comment on a file. )
18
8
  g.command 'delete' do |c|
19
9
  c.flag 'file', desc: 'File to delete a comment from.'
20
10
  c.flag 'id', desc: 'The comment to delete.'
@@ -22,15 +12,4 @@ command 'files_comments' do |g|
22
12
  puts JSON.dump($client.files_comments_delete(options))
23
13
  end
24
14
  end
25
-
26
- g.desc '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.'
27
- g.long_desc %( 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. )
28
- g.command 'edit' do |c|
29
- c.flag 'file', desc: 'File containing the comment to edit.'
30
- c.flag 'id', desc: 'The comment to edit.'
31
- c.flag 'comment', desc: 'Text of the comment to edit.'
32
- c.action do |_global_options, options, _args|
33
- puts JSON.dump($client.files_comments_edit(options))
34
- end
35
- end
36
15
  end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'FilesRemote methods.'
5
+ command 'files_remote' do |g|
6
+ g.desc 'Adds a file from a remote service'
7
+ g.long_desc %( Adds a file from a remote service )
8
+ g.command 'add' do |c|
9
+ c.flag 'external_id', desc: 'Creator defined GUID for the file.'
10
+ c.flag 'external_url', desc: 'URL of the remote file.'
11
+ c.flag 'title', desc: 'Title of the file being shared.'
12
+ c.flag 'filetype', desc: 'type of file.'
13
+ c.flag 'indexable_file_contents', desc: 'A text file (txt, pdf, doc, etc.) containing textual search terms that are used to improve discovery of the remote file.'
14
+ c.flag 'preview_image', desc: 'Preview of the document via multipart/form-data.'
15
+ c.action do |_global_options, options, _args|
16
+ puts JSON.dump($client.files_remote_add(options))
17
+ end
18
+ end
19
+
20
+ g.desc 'Retrieve information about a remote file added to Slack'
21
+ g.long_desc %( Retrieve information about a remote file added to Slack )
22
+ g.command 'info' do |c|
23
+ c.flag 'external_id', desc: 'Creator defined GUID for the file.'
24
+ c.flag 'file', desc: 'Specify a file by providing its ID.'
25
+ c.action do |_global_options, options, _args|
26
+ puts JSON.dump($client.files_remote_info(options))
27
+ end
28
+ end
29
+
30
+ g.desc 'Retrieve information about a remote file added to Slack'
31
+ g.long_desc %( Retrieve information about a remote file added to Slack )
32
+ g.command 'list' do |c|
33
+ c.flag 'channel', desc: 'Filter files appearing in a specific channel, indicated by its ID.'
34
+ c.flag 'cursor', desc: "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."
35
+ c.flag 'limit', desc: 'The maximum number of items to return.'
36
+ c.flag 'ts_from', desc: 'Filter files created after this timestamp (inclusive).'
37
+ c.flag 'ts_to', desc: 'Filter files created before this timestamp (inclusive).'
38
+ c.action do |_global_options, options, _args|
39
+ puts JSON.dump($client.files_remote_list(options))
40
+ end
41
+ end
42
+
43
+ g.desc 'Remove a remote file.'
44
+ g.long_desc %( Remove a remote file. )
45
+ g.command 'remove' do |c|
46
+ c.flag 'external_id', desc: 'Creator defined GUID for the file.'
47
+ c.flag 'file', desc: 'Specify a file by providing its ID.'
48
+ c.action do |_global_options, options, _args|
49
+ puts JSON.dump($client.files_remote_remove(options))
50
+ end
51
+ end
52
+
53
+ g.desc 'Share a remote file into a channel.'
54
+ g.long_desc %( Share a remote file into a channel. )
55
+ g.command 'share' do |c|
56
+ c.flag 'channels', desc: 'Comma-separated list of channel IDs where the file will be shared.'
57
+ c.flag 'external_id', desc: '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.'
58
+ c.flag 'file', desc: 'Specify a file registered with Slack by providing its ID. Either this field or external_id or both are required.'
59
+ c.action do |_global_options, options, _args|
60
+ puts JSON.dump($client.files_remote_share(options))
61
+ end
62
+ end
63
+
64
+ g.desc 'Updates an existing remote file.'
65
+ g.long_desc %( Updates an existing remote file. )
66
+ g.command 'update' do |c|
67
+ c.flag 'external_id', desc: 'Creator defined GUID for the file.'
68
+ c.flag 'external_url', desc: 'URL of the remote file.'
69
+ c.flag 'file', desc: 'Specify a file by providing its ID.'
70
+ c.flag 'filetype', desc: 'type of file.'
71
+ c.flag 'indexable_file_contents', desc: 'File containing contents that can be used to improve searchability for the remote file.'
72
+ c.flag 'preview_image', desc: 'Preview of the document via multipart/form-data.'
73
+ c.flag 'title', desc: 'Title of the file being shared.'
74
+ c.action do |_global_options, options, _args|
75
+ puts JSON.dump($client.files_remote_update(options))
76
+ end
77
+ end
78
+ end
@@ -1,9 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  desc "Get info on your team's private channels."
4
5
  command 'groups' do |g|
5
- g.desc 'This method archives a private channel.'
6
- g.long_desc %( This method archives a private channel. )
6
+ g.desc 'Archives a private channel.'
7
+ g.long_desc %( Archives a private channel. )
7
8
  g.command 'archive' do |c|
8
9
  c.flag 'channel', desc: 'Private channel to archive.'
9
10
  c.action do |_global_options, options, _args|
@@ -11,26 +12,19 @@ command 'groups' do |g|
11
12
  end
12
13
  end
13
14
 
14
- g.desc 'This method closes a private channel.'
15
- g.long_desc %( This method closes a private channel. )
16
- g.command 'close' do |c|
17
- c.flag 'channel', desc: 'Private channel to close.'
18
- c.action do |_global_options, options, _args|
19
- puts JSON.dump($client.groups_close(options))
20
- end
21
- end
22
-
23
- g.desc 'This method creates a private channel.'
24
- g.long_desc %( This method creates a private channel. )
15
+ g.desc 'Creates a private channel.'
16
+ g.long_desc %( Creates a private channel. )
25
17
  g.command 'create' do |c|
26
18
  c.flag 'name', desc: 'Name of private channel to create.'
19
+ c.flag 'team_id', desc: 'encoded team id to create the channel in, required if org token is used.'
20
+ c.flag 'validate', desc: 'Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.'
27
21
  c.action do |_global_options, options, _args|
28
22
  puts JSON.dump($client.groups_create(options))
29
23
  end
30
24
  end
31
25
 
32
- g.desc 'This method takes an existing private channel and performs the following steps:'
33
- g.long_desc %( This method takes an existing private channel and performs the following steps: )
26
+ g.desc 'Clones and archives a private channel.'
27
+ g.long_desc %( Clones and archives a private channel. )
34
28
  g.command 'createChild' do |c|
35
29
  c.flag 'channel', desc: 'Private channel to clone and archive.'
36
30
  c.action do |_global_options, options, _args|
@@ -38,30 +32,40 @@ command 'groups' do |g|
38
32
  end
39
33
  end
40
34
 
41
- g.desc 'This method returns a portion of messages/events from the specified private channel.'
42
- g.long_desc %( This method returns a portion of messages/events from the specified private channel. To read the entire history for a private channel, call the method with no latest or oldest arguments, and then continue paging using the instructions below. )
35
+ g.desc 'Fetches history of messages and events from a private channel.'
36
+ g.long_desc %( Fetches history of messages and events from a private channel. )
43
37
  g.command 'history' do |c|
44
38
  c.flag 'channel', desc: 'Private channel to fetch history for.'
39
+ c.flag 'inclusive', desc: 'Include messages with latest or oldest timestamp in results.'
45
40
  c.flag 'latest', desc: 'End of time range of messages to include in results.'
46
41
  c.flag 'oldest', desc: 'Start of time range of messages to include in results.'
47
- c.flag 'inclusive', desc: 'Include messages with latest or oldest timestamp in results.'
48
42
  c.flag 'unreads', desc: 'Include unread_count_display in the output?.'
49
43
  c.action do |_global_options, options, _args|
50
44
  puts JSON.dump($client.groups_history(options))
51
45
  end
52
46
  end
53
47
 
54
- g.desc 'This method returns information about a private channel.'
55
- g.long_desc %( This method returns information about a private channel. )
48
+ g.desc 'This method returns the ID of a group.'
49
+ g.long_desc %( This method returns the ID of a group. )
50
+ g.command 'id' do |c|
51
+ c.flag 'channel', desc: 'Group channel to get ID for, prefixed with #.'
52
+ c.action do |_global_options, options, _args|
53
+ puts JSON.dump($client.groups_id(options))
54
+ end
55
+ end
56
+
57
+ g.desc 'Gets information about a private channel.'
58
+ g.long_desc %( Gets information about a private channel. )
56
59
  g.command 'info' do |c|
57
60
  c.flag 'channel', desc: 'Private channel to get info on.'
61
+ c.flag 'include_locale', desc: 'Set this to true to receive the locale for this group. Defaults to false.'
58
62
  c.action do |_global_options, options, _args|
59
63
  puts JSON.dump($client.groups_info(options))
60
64
  end
61
65
  end
62
66
 
63
- g.desc 'This method is used to invite a user to a private channel. The calling user must be a member of the private channel.'
64
- g.long_desc %( This method is used to invite a user to a private channel. The calling user must be a member of the private channel. )
67
+ g.desc 'Invites a user to a private channel.'
68
+ g.long_desc %( Invites a user to a private channel. )
65
69
  g.command 'invite' do |c|
66
70
  c.flag 'channel', desc: 'Private channel to invite user to.'
67
71
  c.flag 'user', desc: 'User to invite.'
@@ -70,8 +74,8 @@ command 'groups' do |g|
70
74
  end
71
75
  end
72
76
 
73
- g.desc 'This method allows a user to remove another member from a private channel.'
74
- g.long_desc %( This method allows a user to remove another member from a private channel. )
77
+ g.desc 'Removes a user from a private channel.'
78
+ g.long_desc %( Removes a user from a private channel. )
75
79
  g.command 'kick' do |c|
76
80
  c.flag 'channel', desc: 'Private channel to remove user from.'
77
81
  c.flag 'user', desc: 'User to remove from private channel.'
@@ -80,8 +84,8 @@ command 'groups' do |g|
80
84
  end
81
85
  end
82
86
 
83
- g.desc 'This method is used to leave a private channel.'
84
- g.long_desc %( This method is used to leave a private channel. )
87
+ g.desc 'Leaves a private channel.'
88
+ g.long_desc %( Leaves a private channel. )
85
89
  g.command 'leave' do |c|
86
90
  c.flag 'channel', desc: 'Private channel to leave.'
87
91
  c.action do |_global_options, options, _args|
@@ -89,27 +93,31 @@ command 'groups' do |g|
89
93
  end
90
94
  end
91
95
 
92
- g.desc 'This method returns a list of private channels in the team that the caller is in and archived groups that the caller was in.'
93
- g.long_desc %( This method returns a list of private channels in the team that the caller is in and archived groups that the caller was in. The list of (non-deactivated) members in each private channel is also returned. )
96
+ g.desc 'Lists private channels that the calling user has access to.'
97
+ g.long_desc %( Lists private channels that the calling user has access to. )
94
98
  g.command 'list' do |c|
99
+ c.flag 'cursor', desc: "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."
95
100
  c.flag 'exclude_archived', desc: "Don't return archived private channels."
101
+ c.flag 'exclude_members', desc: 'Exclude the members from each group.'
102
+ c.flag 'limit', desc: "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."
103
+ c.flag 'team_id', desc: 'encoded team id to list channels in, required if org token is used.'
96
104
  c.action do |_global_options, options, _args|
97
105
  puts JSON.dump($client.groups_list(options))
98
106
  end
99
107
  end
100
108
 
101
- g.desc 'This method moves the read cursor in a private channel.'
102
- g.long_desc %( This method moves the read cursor in a private channel. )
109
+ g.desc 'Sets the read cursor in a private channel.'
110
+ g.long_desc %( Sets the read cursor in a private channel. )
103
111
  g.command 'mark' do |c|
104
- c.flag 'channel', desc: 'Private channel to set reading cursor in.'
105
- c.flag 'ts', desc: 'Timestamp of the most recently seen message.'
112
+ c.flag 'channel', desc: 'Channel or conversation to set the read cursor for.'
113
+ c.flag 'ts', desc: 'Unique identifier of message you want marked as most recently seen in this conversation.'
106
114
  c.action do |_global_options, options, _args|
107
115
  puts JSON.dump($client.groups_mark(options))
108
116
  end
109
117
  end
110
118
 
111
- g.desc 'This method opens a private channel.'
112
- g.long_desc %( This method opens a private channel. )
119
+ g.desc 'Opens a private channel.'
120
+ g.long_desc %( Opens a private channel. )
113
121
  g.command 'open' do |c|
114
122
  c.flag 'channel', desc: 'Private channel to open.'
115
123
  c.action do |_global_options, options, _args|
@@ -117,18 +125,19 @@ command 'groups' do |g|
117
125
  end
118
126
  end
119
127
 
120
- g.desc 'This method renames a private channel.'
121
- g.long_desc %( This method renames a private channel. )
128
+ g.desc 'Renames a private channel.'
129
+ g.long_desc %( Renames a private channel. )
122
130
  g.command 'rename' do |c|
123
131
  c.flag 'channel', desc: 'Private channel to rename.'
124
132
  c.flag 'name', desc: 'New name for private channel.'
133
+ c.flag 'validate', desc: 'Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.'
125
134
  c.action do |_global_options, options, _args|
126
135
  puts JSON.dump($client.groups_rename(options))
127
136
  end
128
137
  end
129
138
 
130
- g.desc 'This method returns an entire thread (a message plus all the messages in reply to it).'
131
- g.long_desc %( This method returns an entire thread (a message plus all the messages in reply to it). )
139
+ g.desc 'Retrieve a thread of messages posted to a private channel'
140
+ g.long_desc %( Retrieve a thread of messages posted to a private channel )
132
141
  g.command 'replies' do |c|
133
142
  c.flag 'channel', desc: 'Private channel to fetch thread from.'
134
143
  c.flag 'thread_ts', desc: "Unique identifier of a thread's parent message."
@@ -137,8 +146,8 @@ command 'groups' do |g|
137
146
  end
138
147
  end
139
148
 
140
- g.desc 'This method is used to change the purpose of a private channel. The calling user must be a member of the private channel.'
141
- g.long_desc %( This method is used to change the purpose of a private channel. The calling user must be a member of the private channel. )
149
+ g.desc 'Sets the purpose for a private channel.'
150
+ g.long_desc %( Sets the purpose for a private channel. )
142
151
  g.command 'setPurpose' do |c|
143
152
  c.flag 'channel', desc: 'Private channel to set the purpose of.'
144
153
  c.flag 'purpose', desc: 'The new purpose.'
@@ -147,8 +156,8 @@ command 'groups' do |g|
147
156
  end
148
157
  end
149
158
 
150
- g.desc 'This method is used to change the topic of a private channel. The calling user must be a member of the private channel.'
151
- g.long_desc %( This method is used to change the topic of a private channel. The calling user must be a member of the private channel. )
159
+ g.desc 'Sets the topic for a private channel.'
160
+ g.long_desc %( Sets the topic for a private channel. )
152
161
  g.command 'setTopic' do |c|
153
162
  c.flag 'channel', desc: 'Private channel to set the topic of.'
154
163
  c.flag 'topic', desc: 'The new topic.'
@@ -157,21 +166,12 @@ command 'groups' do |g|
157
166
  end
158
167
  end
159
168
 
160
- g.desc 'This method unarchives a private channel.'
161
- g.long_desc %( This method unarchives a private channel. )
169
+ g.desc 'Unarchives a private channel.'
170
+ g.long_desc %( Unarchives a private channel. )
162
171
  g.command 'unarchive' do |c|
163
172
  c.flag 'channel', desc: 'Private channel to unarchive.'
164
173
  c.action do |_global_options, options, _args|
165
174
  puts JSON.dump($client.groups_unarchive(options))
166
175
  end
167
176
  end
168
-
169
- g.desc 'This method returns the ID of a group.'
170
- g.long_desc %( This method returns the ID of a group. )
171
- g.command 'id' do |c|
172
- c.flag 'channel', desc: 'Group channel to get ID for, prefixed with #.'
173
- c.action do |_global_options, options, _args|
174
- puts JSON.dump($client.groups_id(options))
175
- end
176
- end
177
177
  end