slack-ruby-client 0.11.1 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (392) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/danger.yml +19 -0
  4. data/.github/workflows/integtest.yml +25 -0
  5. data/.github/workflows/rubocop.yml +13 -0
  6. data/.github/workflows/test.yml +34 -0
  7. data/.gitignore +6 -3
  8. data/.rubocop.yml +36 -2
  9. data/.rubocop_todo.yml +186 -54
  10. data/CHANGELOG.md +156 -31
  11. data/CONTRIBUTING.md +20 -9
  12. data/Dangerfile +2 -0
  13. data/Gemfile +27 -6
  14. data/Gemfile.danger +6 -0
  15. data/LICENSE.md +1 -1
  16. data/README.md +199 -52
  17. data/RELEASING.md +2 -2
  18. data/Rakefile +2 -1
  19. data/UPGRADING.md +89 -3
  20. data/bin/commands/admin_analytics.rb +16 -0
  21. data/bin/commands/admin_apps.rb +51 -0
  22. data/bin/commands/admin_apps_approved.rb +17 -0
  23. data/bin/commands/admin_apps_requests.rb +28 -0
  24. data/bin/commands/admin_apps_restricted.rb +17 -0
  25. data/bin/commands/admin_auth_policy.rb +39 -0
  26. data/bin/commands/admin_barriers.rb +47 -0
  27. data/bin/commands/admin_conversations.rb +170 -0
  28. data/bin/commands/admin_conversations_ekm.rb +17 -0
  29. data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
  30. data/bin/commands/admin_conversations_whitelist.rb +37 -0
  31. data/bin/commands/admin_emoji.rb +54 -0
  32. data/bin/commands/admin_inviteRequests.rb +36 -0
  33. data/bin/commands/admin_inviteRequests_approved.rb +16 -0
  34. data/bin/commands/admin_inviteRequests_denied.rb +16 -0
  35. data/bin/commands/admin_teams.rb +27 -0
  36. data/bin/commands/admin_teams_admins.rb +16 -0
  37. data/bin/commands/admin_teams_owners.rb +16 -0
  38. data/bin/commands/admin_teams_settings.rb +64 -0
  39. data/bin/commands/admin_usergroups.rb +48 -0
  40. data/bin/commands/admin_users.rb +98 -0
  41. data/bin/commands/admin_users_session.rb +78 -0
  42. data/bin/commands/admin_users_unsupportedVersions.rb +15 -0
  43. data/bin/commands/api.rb +1 -1
  44. data/bin/commands/apps.rb +15 -0
  45. data/bin/commands/apps_connections.rb +13 -0
  46. data/bin/commands/apps_event_authorizations.rb +16 -0
  47. data/bin/commands/apps_manifest.rb +52 -0
  48. data/bin/commands/apps_permissions.rb +1 -0
  49. data/bin/commands/apps_permissions_resources.rb +15 -0
  50. data/bin/commands/apps_permissions_scopes.rb +13 -0
  51. data/bin/commands/apps_permissions_users.rb +26 -0
  52. data/bin/commands/auth.rb +1 -0
  53. data/bin/commands/auth_teams.rb +16 -0
  54. data/bin/commands/bookmarks.rb +52 -0
  55. data/bin/commands/bots.rb +2 -0
  56. data/bin/commands/calls.rb +52 -0
  57. data/bin/commands/calls_participants.rb +25 -0
  58. data/bin/commands/channels.rb +1 -153
  59. data/bin/commands/chat.rb +57 -12
  60. data/bin/commands/chat_scheduledMessages.rb +19 -0
  61. data/bin/commands/conversations.rb +75 -4
  62. data/bin/commands/dialog.rb +1 -0
  63. data/bin/commands/dnd.rb +6 -3
  64. data/bin/commands/emoji.rb +1 -0
  65. data/bin/commands/files.rb +14 -19
  66. data/bin/commands/files_comments.rb +1 -21
  67. data/bin/commands/files_remote.rb +78 -0
  68. data/bin/commands/groups.rb +1 -159
  69. data/bin/commands/im.rb +1 -62
  70. data/bin/commands/migration.rb +2 -0
  71. data/bin/commands/mpim.rb +1 -58
  72. data/bin/commands/oauth.rb +4 -15
  73. data/bin/commands/oauth_v2.rb +29 -0
  74. data/bin/commands/openid_connect.rb +27 -0
  75. data/bin/commands/pins.rb +3 -6
  76. data/bin/commands/reactions.rb +5 -3
  77. data/bin/commands/reminders.rb +7 -0
  78. data/bin/commands/rtm.rb +7 -4
  79. data/bin/commands/search.rb +8 -3
  80. data/bin/commands/stars.rb +10 -6
  81. data/bin/commands/team.rb +6 -0
  82. data/bin/commands/team_billing.rb +13 -0
  83. data/bin/commands/team_preferences.rb +13 -0
  84. data/bin/commands/team_profile.rb +1 -0
  85. data/bin/commands/tooling_tokens.rb +14 -0
  86. data/bin/commands/usergroups.rb +7 -1
  87. data/bin/commands/usergroups_users.rb +3 -0
  88. data/bin/commands/users.rb +21 -6
  89. data/bin/commands/users_admin.rb +1 -0
  90. data/bin/commands/users_prefs.rb +1 -0
  91. data/bin/commands/users_profile.rb +7 -6
  92. data/bin/commands/views.rb +48 -0
  93. data/bin/commands/workflows.rb +38 -0
  94. data/bin/commands.rb +40 -5
  95. data/bin/slack +2 -3
  96. data/examples/hi_real_time_and_web/Gemfile +1 -0
  97. data/examples/hi_real_time_and_web/hi.rb +7 -3
  98. data/examples/{hi_real_time_async_eventmachine → hi_real_time_async_async}/Gemfile +2 -1
  99. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Procfile +0 -0
  100. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/hi.rb +12 -7
  101. data/examples/hi_web/Gemfile +1 -0
  102. data/examples/hi_web/hi.rb +1 -0
  103. data/examples/new_ticket/Gemfile +1 -0
  104. data/examples/new_ticket/new_ticket.rb +1 -0
  105. data/lib/slack/config.rb +2 -2
  106. data/lib/slack/events/config.rb +32 -0
  107. data/lib/slack/events/request.rb +72 -0
  108. data/lib/slack/logger.rb +6 -5
  109. data/lib/slack/messages/formatting.rb +1 -1
  110. data/lib/slack/messages/message.rb +1 -4
  111. data/lib/slack/real_time/api/message.rb +3 -1
  112. data/lib/slack/real_time/api/message_id.rb +1 -0
  113. data/lib/slack/real_time/api/ping.rb +5 -2
  114. data/lib/slack/real_time/api/typing.rb +3 -1
  115. data/lib/slack/real_time/client.rb +103 -34
  116. data/lib/slack/real_time/concurrency/async.rb +138 -0
  117. data/lib/slack/real_time/concurrency.rb +2 -2
  118. data/lib/slack/real_time/config.rb +6 -10
  119. data/lib/slack/real_time/models/base.rb +1 -4
  120. data/lib/slack/real_time/models/bot.rb +1 -0
  121. data/lib/slack/real_time/models/channel.rb +1 -0
  122. data/lib/slack/real_time/models/group.rb +1 -0
  123. data/lib/slack/real_time/models/im.rb +1 -0
  124. data/lib/slack/real_time/models/team.rb +1 -0
  125. data/lib/slack/real_time/models/user.rb +1 -0
  126. data/lib/slack/real_time/models.rb +1 -0
  127. data/lib/slack/real_time/socket.rb +45 -17
  128. data/lib/slack/real_time/stores/base.rb +5 -7
  129. data/lib/slack/real_time/stores/starter.rb +27 -3
  130. data/lib/slack/real_time/stores/store.rb +43 -25
  131. data/lib/slack/real_time/stores.rb +1 -0
  132. data/lib/slack/version.rb +2 -1
  133. data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
  134. data/lib/slack/web/api/endpoints/admin_apps.rb +78 -0
  135. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
  136. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +51 -0
  137. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
  138. data/lib/slack/web/api/endpoints/admin_auth_policy.rb +72 -0
  139. data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
  140. data/lib/slack/web/api/endpoints/admin_conversations.rb +262 -0
  141. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
  142. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
  143. data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +64 -0
  144. data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
  145. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
  146. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
  147. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
  148. data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
  149. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
  150. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
  151. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
  152. data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
  153. data/lib/slack/web/api/endpoints/admin_users.rb +163 -0
  154. data/lib/slack/web/api/endpoints/admin_users_session.rb +122 -0
  155. data/lib/slack/web/api/endpoints/admin_users_unsupportedVersions.rb +25 -0
  156. data/lib/slack/web/api/endpoints/api.rb +2 -3
  157. data/lib/slack/web/api/endpoints/apps.rb +27 -0
  158. data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
  159. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
  160. data/lib/slack/web/api/endpoints/apps_manifest.rb +77 -0
  161. data/lib/slack/web/api/endpoints/apps_permissions.rb +1 -0
  162. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +31 -0
  163. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +21 -0
  164. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +50 -0
  165. data/lib/slack/web/api/endpoints/auth.rb +2 -1
  166. data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
  167. data/lib/slack/web/api/endpoints/bookmarks.rb +86 -0
  168. data/lib/slack/web/api/endpoints/bots.rb +4 -1
  169. data/lib/slack/web/api/endpoints/calls.rb +83 -0
  170. data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
  171. data/lib/slack/web/api/endpoints/channels.rb +2 -243
  172. data/lib/slack/web/api/endpoints/chat.rb +145 -46
  173. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
  174. data/lib/slack/web/api/endpoints/conversations.rb +152 -39
  175. data/lib/slack/web/api/endpoints/dialog.rb +3 -2
  176. data/lib/slack/web/api/endpoints/dnd.rb +9 -4
  177. data/lib/slack/web/api/endpoints/emoji.rb +1 -0
  178. data/lib/slack/web/api/endpoints/files.rb +35 -28
  179. data/lib/slack/web/api/endpoints/files_comments.rb +2 -34
  180. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  181. data/lib/slack/web/api/endpoints/groups.rb +1 -243
  182. data/lib/slack/web/api/endpoints/im.rb +1 -101
  183. data/lib/slack/web/api/endpoints/migration.rb +5 -2
  184. data/lib/slack/web/api/endpoints/mpim.rb +1 -86
  185. data/lib/slack/web/api/endpoints/oauth.rb +8 -30
  186. data/lib/slack/web/api/endpoints/oauth_v2.rb +48 -0
  187. data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
  188. data/lib/slack/web/api/endpoints/pins.rb +8 -15
  189. data/lib/slack/web/api/endpoints/reactions.rb +29 -18
  190. data/lib/slack/web/api/endpoints/reminders.rb +18 -5
  191. data/lib/slack/web/api/endpoints/rtm.rb +14 -9
  192. data/lib/slack/web/api/endpoints/search.rb +30 -15
  193. data/lib/slack/web/api/endpoints/stars.rb +23 -10
  194. data/lib/slack/web/api/endpoints/team.rb +15 -4
  195. data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
  196. data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
  197. data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
  198. data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
  199. data/lib/slack/web/api/endpoints/usergroups.rb +27 -16
  200. data/lib/slack/web/api/endpoints/usergroups_users.rb +10 -5
  201. data/lib/slack/web/api/endpoints/users.rb +44 -17
  202. data/lib/slack/web/api/endpoints/users_admin.rb +1 -0
  203. data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
  204. data/lib/slack/web/api/endpoints/users_profile.rb +9 -8
  205. data/lib/slack/web/api/endpoints/views.rb +97 -0
  206. data/lib/slack/web/api/endpoints/workflows.rb +61 -0
  207. data/lib/slack/web/api/endpoints.rb +80 -12
  208. data/lib/slack/web/api/error.rb +1 -0
  209. data/lib/slack/web/api/errors/server_error.rb +37 -0
  210. data/lib/slack/web/api/errors/slack_error.rb +14 -1
  211. data/lib/slack/web/api/errors/too_many_requests_error.rb +2 -4
  212. data/lib/slack/web/api/errors.rb +1066 -0
  213. data/lib/slack/web/api/mixins/{channels.id.rb → conversations.id.rb} +4 -5
  214. data/lib/slack/web/api/mixins/ids.id.rb +3 -2
  215. data/lib/slack/web/api/mixins/users.id.rb +2 -3
  216. data/lib/slack/web/api/mixins/users.search.rb +1 -0
  217. data/lib/slack/web/api/mixins.rb +2 -2
  218. data/lib/slack/web/api/patches/chat.1.patch +70 -0
  219. data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
  220. data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
  221. data/lib/slack/web/api/templates/command.erb +1 -0
  222. data/lib/slack/web/api/templates/commands.erb +1 -0
  223. data/lib/slack/web/api/templates/endpoints.erb +2 -2
  224. data/lib/slack/web/api/templates/errors.erb +20 -0
  225. data/lib/slack/web/api/templates/method.erb +5 -1
  226. data/lib/slack/web/api/templates/method_spec.erb +2 -1
  227. data/lib/slack/web/client.rb +2 -1
  228. data/lib/slack/web/config.rb +3 -0
  229. data/lib/slack/web/faraday/connection.rb +24 -20
  230. data/lib/slack/web/faraday/request.rb +5 -1
  231. data/lib/slack/web/faraday/response/raise_error.rb +14 -7
  232. data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
  233. data/lib/slack/web/pagination/cursor.rb +7 -7
  234. data/lib/slack-ruby-client.rb +12 -5
  235. data/lib/slack.rb +1 -0
  236. data/lib/slack_ruby_client.rb +1 -0
  237. data/lib/tasks/git.rake +1 -0
  238. data/lib/tasks/real_time.rake +16 -8
  239. data/lib/tasks/update.rake +1 -0
  240. data/lib/tasks/web.rake +39 -10
  241. data/screenshots/create-app.png +0 -0
  242. data/slack-ruby-client.gemspec +7 -12
  243. data/spec/fixtures/slack/web/429_error.yml +50 -54
  244. data/spec/fixtures/slack/web/auth_test_error.yml +51 -18
  245. data/spec/fixtures/slack/web/auth_test_success.yml +50 -26
  246. data/spec/fixtures/slack/web/conversations_info.yml +167 -0
  247. data/spec/fixtures/slack/web/conversations_setTopic.yml +84 -0
  248. data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +172 -0
  249. data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +253 -0
  250. data/spec/fixtures/slack/web/paginated_users_list.yml +501 -69
  251. data/spec/fixtures/slack/web/rtm_connect.yml +267 -30
  252. data/spec/fixtures/slack/web/rtm_start.yml +771 -60
  253. data/spec/fixtures/slack/web/users_info.yml +153 -69
  254. data/spec/fixtures/slack/web/users_list.yml +102 -41
  255. data/spec/fixtures/slack/web/views_open_error.yml +83 -0
  256. data/spec/integration/integration_spec.rb +116 -48
  257. data/spec/slack/config_spec.rb +2 -0
  258. data/spec/slack/events/config_spec.rb +33 -0
  259. data/spec/slack/events/request_spec.rb +184 -0
  260. data/spec/slack/messages/formatting_spec.rb +25 -14
  261. data/spec/slack/real_time/api/message_spec.rb +6 -1
  262. data/spec/slack/real_time/api/ping_spec.rb +2 -0
  263. data/spec/slack/real_time/api/typing_spec.rb +5 -1
  264. data/spec/slack/real_time/client_spec.rb +258 -62
  265. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
  266. data/spec/slack/real_time/concurrency/with_concurrency_spec.rb +10 -0
  267. data/spec/slack/real_time/concurrency/without_concurrency_spec.rb +10 -0
  268. data/spec/slack/real_time/event_handlers/bot_spec.rb +3 -2
  269. data/spec/slack/real_time/event_handlers/channel_spec.rb +14 -11
  270. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +2 -1
  271. data/spec/slack/real_time/event_handlers/group_spec.rb +6 -5
  272. data/spec/slack/real_time/event_handlers/im_spec.rb +10 -9
  273. data/spec/slack/real_time/event_handlers/team_spec.rb +3 -1
  274. data/spec/slack/real_time/event_handlers/user_spec.rb +3 -2
  275. data/spec/slack/real_time/rtm_connect_spec.rb +2 -1
  276. data/spec/slack/real_time/rtm_start_spec.rb +2 -1
  277. data/spec/slack/real_time/store_spec.rb +4 -3
  278. data/spec/slack/slack_spec.rb +42 -8
  279. data/spec/slack/version_spec.rb +2 -1
  280. data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
  281. data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
  282. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +13 -0
  283. data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
  284. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +18 -0
  285. data/spec/slack/web/api/endpoints/admin_auth_policy_spec.rb +35 -0
  286. data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
  287. data/spec/slack/web/api/endpoints/admin_conversations_ekm_spec.rb +8 -0
  288. data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
  289. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +98 -0
  290. data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
  291. data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
  292. data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
  293. data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
  294. data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
  295. data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
  296. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
  297. data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
  298. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
  299. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +41 -0
  300. data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
  301. data/spec/slack/web/api/endpoints/admin_users_unsupportedVersions_spec.rb +8 -0
  302. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  303. data/spec/slack/web/api/endpoints/apps_connections_spec.rb +8 -0
  304. data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
  305. data/spec/slack/web/api/endpoints/apps_manifest_spec.rb +36 -0
  306. data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
  307. data/spec/slack/web/api/endpoints/auth_teams_spec.rb +8 -0
  308. data/spec/slack/web/api/endpoints/bookmarks_spec.rb +40 -0
  309. data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
  310. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
  311. data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
  312. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +8 -0
  313. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +9 -7
  314. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +131 -39
  315. data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
  316. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +16 -6
  317. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +8 -3
  318. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +103 -0
  319. data/spec/slack/web/api/endpoints/dnd_spec.rb +4 -3
  320. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  321. data/spec/slack/web/api/endpoints/files_comments_spec.rb +3 -21
  322. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  323. data/spec/slack/web/api/endpoints/files_spec.rb +5 -4
  324. data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
  325. data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -22
  326. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +16 -0
  327. data/spec/slack/web/api/endpoints/openid_connect_spec.rb +8 -0
  328. data/spec/slack/web/api/endpoints/pins_spec.rb +1 -0
  329. data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
  330. data/spec/slack/web/api/endpoints/reminders_spec.rb +3 -2
  331. data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
  332. data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
  333. data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
  334. data/spec/slack/web/api/endpoints/team_billing_spec.rb +8 -0
  335. data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -0
  336. data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
  337. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  338. data/spec/slack/web/api/endpoints/tooling_tokens_spec.rb +13 -0
  339. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  340. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +3 -2
  341. data/spec/slack/web/api/endpoints/users_admin_spec.rb +1 -0
  342. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +1 -0
  343. data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
  344. data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
  345. data/spec/slack/web/api/error_spec.rb +7 -7
  346. data/spec/slack/web/api/errors/slack_error_spec.rb +26 -7
  347. data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
  348. data/spec/slack/web/api/mixins/conversations_spec.rb +43 -0
  349. data/spec/slack/web/api/mixins/users_spec.rb +25 -14
  350. data/spec/slack/web/api/pagination/cursor_spec.rb +43 -15
  351. data/spec/slack/web/client_spec.rb +186 -19
  352. data/spec/slack/web/faraday/request_spec.rb +80 -0
  353. data/spec/slack/web/faraday/response/raise_error_spec.rb +48 -12
  354. data/spec/spec_helper.rb +9 -2
  355. data/spec/support/queue_with_timeout.rb +5 -4
  356. data/spec/support/real_time/concurrency/mock.rb +1 -0
  357. data/spec/support/real_time/connected_client.rb +6 -6
  358. data/spec/support/real_time/event.rb +1 -0
  359. data/spec/support/token.rb +1 -0
  360. data/spec/support/vcr.rb +37 -1
  361. metadata +177 -231
  362. data/.travis.yml +0 -30
  363. data/examples/hi_real_time/Gemfile +0 -5
  364. data/examples/hi_real_time/hi.gif +0 -0
  365. data/examples/hi_real_time/hi.rb +0 -37
  366. data/examples/hi_real_time_async_celluloid/Gemfile +0 -6
  367. data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
  368. data/examples/hi_real_time_async_eventmachine/hi.rb +0 -36
  369. data/lib/slack/real_time/concurrency/celluloid.rb +0 -117
  370. data/lib/slack/real_time/concurrency/eventmachine.rb +0 -60
  371. data/lib/slack/web/api/mixins/channels.id.json +0 -20
  372. data/lib/slack/web/api/mixins/groups.id.json +0 -20
  373. data/lib/slack/web/api/mixins/groups.id.rb +0 -26
  374. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
  375. data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
  376. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -21
  377. data/lib/slack/web/api/patches/chat.4.postEphemeral-attachments-support.patch +0 -17
  378. data/screenshots/register-bot.png +0 -0
  379. data/spec/fixtures/slack/web/503_error.yml +0 -14
  380. data/spec/fixtures/slack/web/channels_info.yml +0 -46
  381. data/spec/fixtures/slack/web/groups_info.yml +0 -43
  382. data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -62
  383. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -47
  384. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +0 -15
  385. data/spec/slack/web/api/endpoints/conversations_spec.rb +0 -100
  386. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -11
  387. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -11
  388. data/spec/slack/web/api/endpoints/im_spec.rb +0 -38
  389. data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -38
  390. data/spec/slack/web/api/errors/service_unavailable_spec.rb +0 -14
  391. data/spec/slack/web/api/mixins/channels_spec.rb +0 -31
  392. data/spec/slack/web/api/mixins/groups_spec.rb +0 -31
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Models
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Models
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Models
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Models
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'models/base'
2
3
  require_relative 'models/user'
3
4
  require_relative 'models/bot'
@@ -1,25 +1,24 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  class Socket
4
- attr_accessor :url
5
- attr_accessor :options
5
+ attr_accessor :url, :options
6
6
  attr_reader :driver
7
- attr_reader :logger
8
- protected :logger
9
7
 
10
8
  def initialize(url, options = {})
11
9
  @url = url
12
- @options = options
10
+ @options = options.dup
13
11
  @driver = nil
14
- @logger = options.delete(:logger) || Slack::RealTime::Config.logger || Slack::Config.logger
12
+ @logger = @options.delete(:logger) || Slack::RealTime::Config.logger || Slack::Config.logger
13
+ @last_message_at = nil
15
14
  end
16
15
 
17
16
  def send_data(message)
18
17
  logger.debug("#{self.class}##{__method__}") { message }
19
18
  case message
20
- when Numeric then driver.text(message.to_s)
21
- when String then driver.text(message)
22
- when Array then driver.binary(message)
19
+ when Numeric then @driver.text(message.to_s)
20
+ when String then @driver.text(message)
21
+ when Array then @driver.binary(message)
23
22
  else false
24
23
  end
25
24
  end
@@ -28,24 +27,31 @@ module Slack
28
27
  return if connected?
29
28
 
30
29
  connect
31
- logger.debug("#{self.class}##{__method__}") { driver.class }
30
+ logger.debug("#{self.class}##{__method__}") { @driver.class }
31
+
32
+ @driver.on :message do
33
+ @last_message_at = current_time
34
+ end
32
35
 
33
- yield driver if block_given?
36
+ yield @driver if block_given?
34
37
  end
35
38
 
39
+ # Gracefully shut down the connection.
36
40
  def disconnect!
37
- driver.close
41
+ @driver.close
42
+ ensure
43
+ close
38
44
  end
39
45
 
40
46
  def connected?
41
- !driver.nil?
47
+ !@driver.nil?
42
48
  end
43
49
 
44
50
  def start_sync(client)
45
51
  thread = start_async(client)
46
- thread.join if thread
52
+ thread&.join
47
53
  rescue Interrupt
48
- thread.exit if thread
54
+ thread&.exit
49
55
  end
50
56
 
51
57
  # @return [#join]
@@ -53,12 +59,34 @@ module Slack
53
59
  raise NotImplementedError, "Expected #{self.class} to implement #{__method__}."
54
60
  end
55
61
 
62
+ def restart_async(_client, _url)
63
+ raise NotImplementedError, "Expected #{self.class} to implement #{__method__}."
64
+ end
65
+
66
+ def time_since_last_message
67
+ return 0 unless @last_message_at
68
+
69
+ current_time - @last_message_at
70
+ end
71
+
72
+ def current_time
73
+ Process.clock_gettime(Process::CLOCK_MONOTONIC)
74
+ end
75
+
56
76
  def close
77
+ # When you call `driver.emit(:close)`, it will typically end up calling `client.close`
78
+ # which will call `@socket.close` and end up back here. In order to break this infinite
79
+ # recursion, we check and set `@driver = nil` before invoking `client.close`.
80
+ return unless (driver = @driver)
81
+
57
82
  @driver = nil
83
+ driver.emit(:close)
58
84
  end
59
85
 
60
86
  protected
61
87
 
88
+ attr_reader :logger
89
+
62
90
  def addr
63
91
  URI(url).host
64
92
  end
@@ -69,9 +97,9 @@ module Slack
69
97
 
70
98
  def port
71
99
  case (uri = URI(url)).scheme
72
- when 'wss'.freeze, 'https'.freeze
100
+ when 'wss', 'https'
73
101
  URI::HTTPS::DEFAULT_PORT
74
- when 'ws', 'http'.freeze
102
+ when 'ws', 'http'
75
103
  URI::HTTP::DEFAULT_PORT
76
104
  else
77
105
  uri.port
@@ -1,16 +1,14 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Stores
4
5
  # Doesn't store anything.
5
6
  class Base
6
- class_attribute :events
7
+ class << self
8
+ attr_accessor :events
9
+ end
7
10
 
8
- attr_accessor :users
9
- attr_accessor :bots
10
- attr_accessor :channels
11
- attr_accessor :groups
12
- attr_accessor :teams
13
- attr_accessor :ims
11
+ attr_accessor :users, :bots, :channels, :groups, :teams, :ims
14
12
 
15
13
  def self
16
14
  nil
@@ -1,11 +1,10 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Stores
4
5
  # Only stores initial information.
5
6
  class Starter < Base
6
- attr_reader :self
7
-
8
- attr_reader :team
7
+ attr_reader :self, :team
9
8
 
10
9
  def initialize(attrs)
11
10
  @team = Models::Team.new(attrs.team)
@@ -14,6 +13,31 @@ module Slack
14
13
 
15
14
  ### RealTime Events
16
15
 
16
+ # A shared channel invite was sent to a Slack user.
17
+ # @see https://api.slack.com/events/shared_channel_invite_received
18
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/shared_channel_invite_received.json
19
+ # on :shared_channel_invite_received do |data|
20
+
21
+ # An enterprise grid migration has started on an external workspace..
22
+ # @see https://api.slack.com/events/external_org_migration_started
23
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_started.json
24
+ # on :external_org_migration_started do |data|
25
+
26
+ # An enterprise grid migration has finished on an external workspace..
27
+ # @see https://api.slack.com/events/external_org_migration_finished
28
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_finished.json
29
+ # on :external_org_migration_finished do |data|
30
+
31
+ # A private channel was deleted.
32
+ # @see https://api.slack.com/events/group_deleted
33
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_deleted.json
34
+ # on :group_deleted do |data|
35
+
36
+ # Determine the current presence status for a list of users.
37
+ # @see https://api.slack.com/events/presence_query
38
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/presence_query.json
39
+ # on :presence_query do |data|
40
+
17
41
  # The membership of an existing User Group has changed.
18
42
  # @see https://api.slack.com/events/subteam_members_changed
19
43
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/subteam_members_changed.json
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module RealTime
3
4
  module Stores
@@ -26,44 +27,59 @@ module Slack
26
27
  @users = {}
27
28
  end
28
29
 
29
- if attrs.users
30
- attrs.users.each do |data|
31
- user = Models::User.new(data)
32
- @users[data.id] = @users.key?(data.id) ? @users[data.id].merge(user) : user
33
- end
30
+ attrs.users&.each do |data|
31
+ user = Models::User.new(data)
32
+ @users[data.id] = @users.key?(data.id) ? @users[data.id].merge(user) : user
34
33
  end
35
34
 
36
35
  @channels = {}
37
- if attrs.channels
38
- attrs.channels.each do |data|
39
- @channels[data.id] = Models::Channel.new(data)
40
- end
36
+ attrs.channels&.each do |data|
37
+ @channels[data.id] = Models::Channel.new(data)
41
38
  end
42
39
 
43
40
  @bots = {}
44
- if attrs.bots
45
- attrs.bots.each do |data|
46
- @bots[data.id] = Models::Bot.new(data)
47
- end
41
+ attrs.bots&.each do |data|
42
+ @bots[data.id] = Models::Bot.new(data)
48
43
  end
49
44
 
50
45
  @groups = {}
51
- if attrs.groups
52
- attrs.groups.each do |data|
53
- @groups[data.id] = Models::Group.new(data)
54
- end
46
+ attrs.groups&.each do |data|
47
+ @groups[data.id] = Models::Group.new(data)
55
48
  end
56
49
 
57
50
  @ims = {}
58
- if attrs.ims
59
- attrs.ims.each do |data|
60
- @ims[data.id] = Models::Im.new(data)
61
- end
51
+ attrs.ims&.each do |data|
52
+ @ims[data.id] = Models::Im.new(data)
62
53
  end
63
54
  end
64
55
 
65
56
  ### RealTime Events
66
57
 
58
+ # A shared channel invite was sent to a Slack user.
59
+ # @see https://api.slack.com/events/shared_channel_invite_received
60
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/shared_channel_invite_received.json
61
+ # on :shared_channel_invite_received do |data|
62
+
63
+ # An enterprise grid migration has started on an external workspace..
64
+ # @see https://api.slack.com/events/external_org_migration_started
65
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_started.json
66
+ # on :external_org_migration_started do |data|
67
+
68
+ # An enterprise grid migration has finished on an external workspace..
69
+ # @see https://api.slack.com/events/external_org_migration_finished
70
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_finished.json
71
+ # on :external_org_migration_finished do |data|
72
+
73
+ # A private channel was deleted.
74
+ # @see https://api.slack.com/events/group_deleted
75
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_deleted.json
76
+ # on :group_deleted do |data|
77
+
78
+ # Determine the current presence status for a list of users.
79
+ # @see https://api.slack.com/events/presence_query
80
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/presence_query.json
81
+ # on :presence_query do |data|
82
+
67
83
  # The membership of an existing User Group has changed.
68
84
  # @see https://api.slack.com/events/subteam_members_changed
69
85
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/subteam_members_changed.json
@@ -141,7 +157,7 @@ module Slack
141
157
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/bot_changed.json
142
158
  on :bot_changed do |data|
143
159
  bot = bots[data.bot.id]
144
- bot.merge!(data.bot) if bot
160
+ bot&.merge!(data.bot)
145
161
  end
146
162
 
147
163
  # A team channel was archived.
@@ -323,7 +339,7 @@ module Slack
323
339
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_left.json
324
340
  on :group_left do |data|
325
341
  channel = groups[data.channel]
326
- channel.members.delete(self.self.id) if channel && channel.key?(:members)
342
+ channel.members.delete(self.self.id) if channel&.key?(:members)
327
343
  end
328
344
 
329
345
  # A private group read marker was updated.
@@ -358,7 +374,8 @@ module Slack
358
374
  # @see https://api.slack.com/events/im_close
359
375
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_close.json
360
376
  on :im_close do |data|
361
- return unless ims && ims.key?(data.channel)
377
+ return unless ims&.key?(data.channel)
378
+
362
379
  ims[data.channel].is_open = false
363
380
  end
364
381
 
@@ -383,7 +400,8 @@ module Slack
383
400
  # @see https://api.slack.com/events/im_open
384
401
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_open.json
385
402
  on :im_open do |data|
386
- return unless ims && ims.key?(data.channel)
403
+ return unless ims&.key?(data.channel)
404
+
387
405
  ims[data.channel].is_open = true
388
406
  end
389
407
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'stores/base'
2
3
  require_relative 'stores/starter'
3
4
  require_relative 'stores/store'
data/lib/slack/version.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
- VERSION = '0.11.1'.freeze
3
+ VERSION = '1.1.0'
3
4
  end
@@ -0,0 +1,28 @@
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 AdminAnalytics
9
+ #
10
+ # Retrieve analytics data for a given date, presented as a compressed JSON file
11
+ #
12
+ # @option options [string] :type
13
+ # The type of analytics to retrieve. The options are currently limited to member (for grid member analytics) and public_channel (for public channel analytics).
14
+ # @option options [date] :date
15
+ # Date to retrieve the analytics data for, expressed as YYYY-MM-DD in UTC.
16
+ # @option options [boolean] :metadata_only
17
+ # Retrieve metadata for the type of analytics indicated. Can be used only with type set to public_channel analytics. See detail below. Omit the date parameter when using this argument.
18
+ # @see https://api.slack.com/methods/admin.analytics.getFile
19
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.analytics/admin.analytics.getFile.json
20
+ def admin_analytics_getFile(options = {})
21
+ throw ArgumentError.new('Required arguments :type missing') if options[:type].nil?
22
+ post('admin.analytics.getFile', options)
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,78 @@
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 AdminApps
9
+ #
10
+ # Approve an app for installation on a workspace.
11
+ #
12
+ # @option options [string] :app_id
13
+ # The id of the app to approve.
14
+ # @option options [Object] :enterprise_id
15
+ # The ID of the enterprise to approve the app on.
16
+ # @option options [string] :request_id
17
+ # The id of the request to approve.
18
+ # @option options [Object] :team_id
19
+ # The ID of the workspace to approve the app on.
20
+ # @see https://api.slack.com/methods/admin.apps.approve
21
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps/admin.apps.approve.json
22
+ def admin_apps_approve(options = {})
23
+ post('admin.apps.approve', options)
24
+ end
25
+
26
+ #
27
+ # Clear an app resolution
28
+ #
29
+ # @option options [string] :app_id
30
+ # The id of the app whose resolution you want to clear/undo.
31
+ # @option options [Object] :enterprise_id
32
+ # The enterprise to clear the app resolution from.
33
+ # @option options [Object] :team_id
34
+ # The workspace to clear the app resolution from.
35
+ # @see https://api.slack.com/methods/admin.apps.clearResolution
36
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps/admin.apps.clearResolution.json
37
+ def admin_apps_clearResolution(options = {})
38
+ throw ArgumentError.new('Required arguments :app_id missing') if options[:app_id].nil?
39
+ post('admin.apps.clearResolution', options)
40
+ end
41
+
42
+ #
43
+ # Restrict an app for installation on a workspace.
44
+ #
45
+ # @option options [string] :app_id
46
+ # The id of the app to restrict.
47
+ # @option options [Object] :enterprise_id
48
+ # The ID of the enterprise to approve the app on.
49
+ # @option options [string] :request_id
50
+ # The id of the request to restrict.
51
+ # @option options [Object] :team_id
52
+ # The ID of the workspace to approve the app on.
53
+ # @see https://api.slack.com/methods/admin.apps.restrict
54
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps/admin.apps.restrict.json
55
+ def admin_apps_restrict(options = {})
56
+ post('admin.apps.restrict', options)
57
+ end
58
+
59
+ #
60
+ # Uninstall an app from one or many workspaces, or an entire enterprise organization.
61
+ #
62
+ # @option options [string] :app_id
63
+ # The ID of the app to uninstall.
64
+ # @option options [string] :enterprise_id
65
+ # The enterprise to completely uninstall the application from (across all workspaces). With an org-level token, this or team_ids is required.
66
+ # @option options [string] :team_ids
67
+ # IDs of the teams to uninstall from (max 100). With an org-level token, this or enterprise_id is required.
68
+ # @see https://api.slack.com/methods/admin.apps.uninstall
69
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps/admin.apps.uninstall.json
70
+ def admin_apps_uninstall(options = {})
71
+ throw ArgumentError.new('Required arguments :app_id missing') if options[:app_id].nil?
72
+ post('admin.apps.uninstall', options)
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,35 @@
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 AdminAppsApproved
9
+ #
10
+ # List approved apps for an org or workspace.
11
+ #
12
+ # @option options [string] :cursor
13
+ # Set cursor to next_cursor returned by the previous call to list items in the next page.
14
+ # @option options [Object] :enterprise_id
15
+ # .
16
+ # @option options [integer] :limit
17
+ # The maximum number of items to return. Must be between 1 - 1000 both inclusive.
18
+ # @option options [Object] :team_id
19
+ # .
20
+ # @see https://api.slack.com/methods/admin.apps.approved.list
21
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps.approved/admin.apps.approved.list.json
22
+ def admin_apps_approved_list(options = {})
23
+ if block_given?
24
+ Pagination::Cursor.new(self, :admin_apps_approved_list, options).each do |page|
25
+ yield page
26
+ end
27
+ else
28
+ post('admin.apps.approved.list', options)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,51 @@
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 AdminAppsRequests
9
+ #
10
+ # Cancel approval request for team
11
+ #
12
+ # @option options [string] :request_id
13
+ # The id of the request to cancel.
14
+ # @option options [Object] :enterprise_id
15
+ # The ID of the enterprise where this request belongs.
16
+ # @option options [Object] :team_id
17
+ # The ID of the workspace where this request belongs.
18
+ # @see https://api.slack.com/methods/admin.apps.requests.cancel
19
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps.requests/admin.apps.requests.cancel.json
20
+ def admin_apps_requests_cancel(options = {})
21
+ throw ArgumentError.new('Required arguments :request_id missing') if options[:request_id].nil?
22
+ post('admin.apps.requests.cancel', options)
23
+ end
24
+
25
+ #
26
+ # List app requests for a team/workspace.
27
+ #
28
+ # @option options [string] :cursor
29
+ # Set cursor to next_cursor returned by the previous call to list items in the next page.
30
+ # @option options [Object] :enterprise_id
31
+ # .
32
+ # @option options [integer] :limit
33
+ # The maximum number of items to return. Must be between 1 - 1000 both inclusive.
34
+ # @option options [Object] :team_id
35
+ # .
36
+ # @see https://api.slack.com/methods/admin.apps.requests.list
37
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps.requests/admin.apps.requests.list.json
38
+ def admin_apps_requests_list(options = {})
39
+ if block_given?
40
+ Pagination::Cursor.new(self, :admin_apps_requests_list, options).each do |page|
41
+ yield page
42
+ end
43
+ else
44
+ post('admin.apps.requests.list', options)
45
+ end
46
+ end
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
@@ -0,0 +1,35 @@
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 AdminAppsRestricted
9
+ #
10
+ # List restricted apps for an org or workspace.
11
+ #
12
+ # @option options [string] :cursor
13
+ # Set cursor to next_cursor returned by the previous call to list items in the next page.
14
+ # @option options [Object] :enterprise_id
15
+ # .
16
+ # @option options [integer] :limit
17
+ # The maximum number of items to return. Must be between 1 - 1000 both inclusive.
18
+ # @option options [Object] :team_id
19
+ # .
20
+ # @see https://api.slack.com/methods/admin.apps.restricted.list
21
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps.restricted/admin.apps.restricted.list.json
22
+ def admin_apps_restricted_list(options = {})
23
+ if block_given?
24
+ Pagination::Cursor.new(self, :admin_apps_restricted_list, options).each do |page|
25
+ yield page
26
+ end
27
+ else
28
+ post('admin.apps.restricted.list', options)
29
+ end
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,72 @@
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 AdminAuthPolicy
9
+ #
10
+ # Assign entities to a particular authentication policy.
11
+ #
12
+ # @option options [array] :entity_ids
13
+ # Array of IDs to assign to the policy.
14
+ # @option options [Object] :entity_type
15
+ # The type of entity to assign to the policy. Currently, USER is supported.
16
+ # @option options [string] :policy_name
17
+ # The name of the authentication policy to assign the entities to. Currently, email_password is the only policy that may be used with this method.
18
+ # @see https://api.slack.com/methods/admin.auth.policy.assignEntities
19
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.auth.policy/admin.auth.policy.assignEntities.json
20
+ def admin_auth_policy_assignEntities(options = {})
21
+ throw ArgumentError.new('Required arguments :entity_ids missing') if options[:entity_ids].nil?
22
+ throw ArgumentError.new('Required arguments :entity_type missing') if options[:entity_type].nil?
23
+ throw ArgumentError.new('Required arguments :policy_name missing') if options[:policy_name].nil?
24
+ post('admin.auth.policy.assignEntities', options)
25
+ end
26
+
27
+ #
28
+ # Fetch all the entities assigned to a particular authentication policy by name.
29
+ #
30
+ # @option options [string] :policy_name
31
+ # The name of the policy to fetch entities for. Currently, email_password is the only policy that may be used with this method.
32
+ # @option options [string] :cursor
33
+ # Set cursor to next_cursor returned by the previous call to list items in the next page.
34
+ # @option options [Object] :entity_type
35
+ # The type of entity to assign to the policy. Currently, USER is supported.
36
+ # @option options [integer] :limit
37
+ # The maximum number of items to return. Must be between 1 and 1000, both inclusive.
38
+ # @see https://api.slack.com/methods/admin.auth.policy.getEntities
39
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.auth.policy/admin.auth.policy.getEntities.json
40
+ def admin_auth_policy_getEntities(options = {})
41
+ throw ArgumentError.new('Required arguments :policy_name missing') if options[:policy_name].nil?
42
+ if block_given?
43
+ Pagination::Cursor.new(self, :admin_auth_policy_getEntities, options).each do |page|
44
+ yield page
45
+ end
46
+ else
47
+ post('admin.auth.policy.getEntities', options)
48
+ end
49
+ end
50
+
51
+ #
52
+ # Remove specified entities from a specified authentication policy.
53
+ #
54
+ # @option options [array] :entity_ids
55
+ # Encoded IDs of the entities you'd like to remove from the policy.
56
+ # @option options [Object] :entity_type
57
+ # The type of entity to assign to the policy. Currently, USER is supported.
58
+ # @option options [string] :policy_name
59
+ # The name of the policy to remove entities from. Currently, email_password is the only policy that may be used with this method.
60
+ # @see https://api.slack.com/methods/admin.auth.policy.removeEntities
61
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.auth.policy/admin.auth.policy.removeEntities.json
62
+ def admin_auth_policy_removeEntities(options = {})
63
+ throw ArgumentError.new('Required arguments :entity_ids missing') if options[:entity_ids].nil?
64
+ throw ArgumentError.new('Required arguments :entity_type missing') if options[:entity_type].nil?
65
+ throw ArgumentError.new('Required arguments :policy_name missing') if options[:policy_name].nil?
66
+ post('admin.auth.policy.removeEntities', options)
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
72
+ end