slack-ruby-client 0.7.9 → 0.16.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (358) hide show
  1. checksums.yaml +5 -5
  2. data/.github/FUNDING.yml +1 -0
  3. data/.gitignore +2 -0
  4. data/.rubocop.yml +32 -1
  5. data/.rubocop_todo.yml +98 -49
  6. data/.travis.yml +10 -14
  7. data/CHANGELOG.md +172 -24
  8. data/CONTRIBUTING.md +17 -6
  9. data/Dangerfile +2 -0
  10. data/Gemfile +10 -4
  11. data/LICENSE.md +1 -1
  12. data/README.md +276 -54
  13. data/RELEASING.md +19 -11
  14. data/Rakefile +2 -1
  15. data/UPGRADING.md +84 -2
  16. data/bin/commands.rb +43 -1
  17. data/bin/commands/admin_analytics.rb +15 -0
  18. data/bin/commands/admin_apps.rb +40 -0
  19. data/bin/commands/admin_apps_approved.rb +17 -0
  20. data/bin/commands/admin_apps_requests.rb +16 -0
  21. data/bin/commands/admin_apps_restricted.rb +17 -0
  22. data/bin/commands/admin_barriers.rb +47 -0
  23. data/bin/commands/admin_conversations.rb +169 -0
  24. data/bin/commands/admin_conversations_ekm.rb +17 -0
  25. data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
  26. data/bin/commands/admin_conversations_whitelist.rb +37 -0
  27. data/bin/commands/admin_emoji.rb +54 -0
  28. data/bin/commands/admin_inviteRequests.rb +36 -0
  29. data/bin/commands/admin_inviteRequests_approved.rb +16 -0
  30. data/bin/commands/admin_inviteRequests_denied.rb +16 -0
  31. data/bin/commands/admin_teams.rb +27 -0
  32. data/bin/commands/admin_teams_admins.rb +16 -0
  33. data/bin/commands/admin_teams_owners.rb +16 -0
  34. data/bin/commands/admin_teams_settings.rb +64 -0
  35. data/bin/commands/admin_usergroups.rb +48 -0
  36. data/bin/commands/admin_users.rb +97 -0
  37. data/bin/commands/admin_users_session.rb +38 -0
  38. data/bin/commands/api.rb +3 -3
  39. data/bin/commands/apps.rb +15 -0
  40. data/bin/commands/apps_connections.rb +13 -0
  41. data/bin/commands/apps_event_authorizations.rb +16 -0
  42. data/bin/commands/apps_permissions.rb +23 -0
  43. data/bin/commands/apps_permissions_resources.rb +15 -0
  44. data/bin/commands/apps_permissions_scopes.rb +13 -0
  45. data/bin/commands/apps_permissions_users.rb +26 -0
  46. data/bin/commands/auth.rb +5 -4
  47. data/bin/commands/auth_teams.rb +16 -0
  48. data/bin/commands/bots.rb +4 -2
  49. data/bin/commands/calls.rb +52 -0
  50. data/bin/commands/calls_participants.rb +25 -0
  51. data/bin/commands/channels.rb +64 -43
  52. data/bin/commands/chat.rb +114 -24
  53. data/bin/commands/chat_scheduledMessages.rb +19 -0
  54. data/bin/commands/conversations.rb +196 -0
  55. data/bin/commands/dialog.rb +15 -0
  56. data/bin/commands/dnd.rb +9 -8
  57. data/bin/commands/emoji.rb +3 -2
  58. data/bin/commands/files.rb +45 -30
  59. data/bin/commands/files_comments.rb +3 -24
  60. data/bin/commands/files_remote.rb +78 -0
  61. data/bin/commands/groups.rb +53 -53
  62. data/bin/commands/im.rb +17 -13
  63. data/bin/commands/migration.rb +16 -0
  64. data/bin/commands/mpim.rb +16 -13
  65. data/bin/commands/oauth.rb +17 -2
  66. data/bin/commands/oauth_v2.rb +17 -0
  67. data/bin/commands/pins.rb +7 -10
  68. data/bin/commands/reactions.rb +17 -15
  69. data/bin/commands/reminders.rb +11 -10
  70. data/bin/commands/rtm.rb +19 -4
  71. data/bin/commands/search.rb +15 -11
  72. data/bin/commands/stars.rb +11 -8
  73. data/bin/commands/team.rb +15 -10
  74. data/bin/commands/team_profile.rb +3 -2
  75. data/bin/commands/usergroups.rb +22 -16
  76. data/bin/commands/usergroups_users.rb +7 -4
  77. data/bin/commands/users.rb +65 -37
  78. data/bin/commands/users_admin.rb +29 -0
  79. data/bin/commands/users_prefs.rb +13 -0
  80. data/bin/commands/users_profile.rb +8 -7
  81. data/bin/commands/views.rb +48 -0
  82. data/bin/commands/workflows.rb +38 -0
  83. data/bin/slack +3 -4
  84. data/examples/hi_real_time_and_web/Gemfile +1 -0
  85. data/examples/hi_real_time_and_web/hi.rb +8 -4
  86. data/examples/{hi_real_time_async_eventmachine → hi_real_time_async_async}/Gemfile +2 -1
  87. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Procfile +0 -0
  88. data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/hi.rb +13 -8
  89. data/examples/hi_web/Gemfile +1 -0
  90. data/examples/hi_web/hi.rb +2 -1
  91. data/examples/new_ticket/Gemfile +1 -0
  92. data/examples/new_ticket/new_ticket.rb +2 -1
  93. data/lib/slack-ruby-client.rb +40 -26
  94. data/lib/slack.rb +1 -0
  95. data/lib/slack/config.rb +1 -0
  96. data/lib/slack/events/config.rb +32 -0
  97. data/lib/slack/events/request.rb +70 -0
  98. data/lib/slack/logger.rb +6 -5
  99. data/lib/slack/messages/formatting.rb +4 -4
  100. data/lib/slack/messages/message.rb +2 -6
  101. data/lib/slack/real_time/api/message.rb +3 -1
  102. data/lib/slack/real_time/api/message_id.rb +1 -0
  103. data/lib/slack/real_time/api/ping.rb +5 -2
  104. data/lib/slack/real_time/api/templates/event_handler.erb +1 -1
  105. data/lib/slack/real_time/api/typing.rb +3 -1
  106. data/lib/slack/real_time/client.rb +113 -32
  107. data/lib/slack/real_time/concurrency.rb +2 -2
  108. data/lib/slack/real_time/concurrency/async.rb +140 -0
  109. data/lib/slack/real_time/config.rb +20 -12
  110. data/lib/slack/real_time/models.rb +8 -7
  111. data/lib/slack/real_time/models/base.rb +2 -6
  112. data/lib/slack/real_time/models/bot.rb +1 -0
  113. data/lib/slack/real_time/models/channel.rb +1 -0
  114. data/lib/slack/real_time/models/group.rb +1 -0
  115. data/lib/slack/real_time/models/im.rb +1 -0
  116. data/lib/slack/real_time/models/team.rb +1 -0
  117. data/lib/slack/real_time/models/user.rb +1 -0
  118. data/lib/slack/real_time/socket.rb +46 -17
  119. data/lib/slack/real_time/stores.rb +4 -3
  120. data/lib/slack/real_time/stores/base.rb +5 -3
  121. data/lib/slack/real_time/stores/starter.rb +113 -72
  122. data/lib/slack/real_time/stores/store.rb +131 -88
  123. data/lib/slack/version.rb +2 -1
  124. data/lib/slack/web/api/endpoints.rb +110 -26
  125. data/lib/slack/web/api/endpoints/admin_analytics.rb +26 -0
  126. data/lib/slack/web/api/endpoints/admin_apps.rb +62 -0
  127. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
  128. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +33 -0
  129. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
  130. data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
  131. data/lib/slack/web/api/endpoints/admin_conversations.rb +260 -0
  132. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
  133. data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
  134. data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +64 -0
  135. data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
  136. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
  137. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
  138. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
  139. data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
  140. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
  141. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
  142. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
  143. data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
  144. data/lib/slack/web/api/endpoints/admin_users.rb +161 -0
  145. data/lib/slack/web/api/endpoints/admin_users_session.rb +66 -0
  146. data/lib/slack/web/api/endpoints/api.rb +3 -4
  147. data/lib/slack/web/api/endpoints/apps.rb +27 -0
  148. data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
  149. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
  150. data/lib/slack/web/api/endpoints/apps_permissions.rb +36 -0
  151. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +31 -0
  152. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +21 -0
  153. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +50 -0
  154. data/lib/slack/web/api/endpoints/auth.rb +5 -4
  155. data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
  156. data/lib/slack/web/api/endpoints/bots.rb +5 -2
  157. data/lib/slack/web/api/endpoints/calls.rb +83 -0
  158. data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
  159. data/lib/slack/web/api/endpoints/channels.rb +105 -49
  160. data/lib/slack/web/api/endpoints/chat.rb +221 -40
  161. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
  162. data/lib/slack/web/api/endpoints/conversations.rb +332 -0
  163. data/lib/slack/web/api/endpoints/dialog.rb +33 -0
  164. data/lib/slack/web/api/endpoints/dnd.rb +11 -9
  165. data/lib/slack/web/api/endpoints/emoji.rb +3 -2
  166. data/lib/slack/web/api/endpoints/files.rb +75 -38
  167. data/lib/slack/web/api/endpoints/files_comments.rb +3 -38
  168. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  169. data/lib/slack/web/api/endpoints/groups.rb +76 -53
  170. data/lib/slack/web/api/endpoints/im.rb +38 -21
  171. data/lib/slack/web/api/endpoints/migration.rb +28 -0
  172. data/lib/slack/web/api/endpoints/mpim.rb +37 -22
  173. data/lib/slack/web/api/endpoints/oauth.rb +25 -4
  174. data/lib/slack/web/api/endpoints/oauth_v2.rb +30 -0
  175. data/lib/slack/web/api/endpoints/pins.rb +10 -19
  176. data/lib/slack/web/api/endpoints/presence.rb +1 -1
  177. data/lib/slack/web/api/endpoints/reactions.rb +37 -28
  178. data/lib/slack/web/api/endpoints/reminders.rb +11 -10
  179. data/lib/slack/web/api/endpoints/rtm.rb +28 -7
  180. data/lib/slack/web/api/endpoints/search.rb +21 -14
  181. data/lib/slack/web/api/endpoints/stars.rb +24 -15
  182. data/lib/slack/web/api/endpoints/team.rb +21 -13
  183. data/lib/slack/web/api/endpoints/team_profile.rb +3 -2
  184. data/lib/slack/web/api/endpoints/usergroups.rb +33 -22
  185. data/lib/slack/web/api/endpoints/usergroups_users.rb +9 -4
  186. data/lib/slack/web/api/endpoints/users.rb +78 -29
  187. data/lib/slack/web/api/endpoints/users_admin.rb +49 -0
  188. data/lib/slack/web/api/endpoints/users_prefs.rb +21 -0
  189. data/lib/slack/web/api/endpoints/users_profile.rb +11 -10
  190. data/lib/slack/web/api/endpoints/views.rb +97 -0
  191. data/lib/slack/web/api/endpoints/workflows.rb +61 -0
  192. data/lib/slack/web/api/error.rb +2 -8
  193. data/lib/slack/web/api/errors.rb +850 -0
  194. data/lib/slack/web/api/errors/internal_error.rb +14 -0
  195. data/lib/slack/web/api/errors/slack_error.rb +29 -0
  196. data/lib/slack/web/api/errors/too_many_requests_error.rb +24 -0
  197. data/lib/slack/web/api/mixins.rb +6 -4
  198. data/lib/slack/web/api/mixins/channels.id.rb +6 -7
  199. data/lib/slack/web/api/mixins/conversations.id.rb +25 -0
  200. data/lib/slack/web/api/mixins/groups.id.rb +6 -7
  201. data/lib/slack/web/api/mixins/ids.id.rb +24 -0
  202. data/lib/slack/web/api/mixins/users.id.rb +6 -7
  203. data/lib/slack/web/api/mixins/users.search.rb +39 -36
  204. data/lib/slack/web/api/patches/chat.1.patch +72 -0
  205. data/lib/slack/web/api/patches/dialog.1.open-json-support.patch +17 -0
  206. data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
  207. data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
  208. data/lib/slack/web/api/templates/command.erb +5 -3
  209. data/lib/slack/web/api/templates/commands.erb +2 -1
  210. data/lib/slack/web/api/templates/endpoints.erb +5 -3
  211. data/lib/slack/web/api/templates/errors.erb +20 -0
  212. data/lib/slack/web/api/templates/method.erb +26 -4
  213. data/lib/slack/web/api/templates/method_spec.erb +3 -2
  214. data/lib/slack/web/client.rb +2 -1
  215. data/lib/slack/web/config.rb +21 -10
  216. data/lib/slack/web/faraday/connection.rb +25 -16
  217. data/lib/slack/web/faraday/request.rb +2 -0
  218. data/lib/slack/web/faraday/response/raise_error.rb +23 -1
  219. data/lib/slack/web/faraday/response/wrap_error.rb +18 -0
  220. data/lib/slack/web/pagination/cursor.rb +52 -0
  221. data/lib/slack_ruby_client.rb +1 -0
  222. data/lib/tasks/git.rake +2 -1
  223. data/lib/tasks/real_time.rake +16 -6
  224. data/lib/tasks/update.rake +1 -0
  225. data/lib/tasks/web.rake +38 -10
  226. data/screenshots/create-app.png +0 -0
  227. data/slack-ruby-client.gemspec +9 -6
  228. data/spec/fixtures/slack/web/429_error.yml +2 -0
  229. data/spec/fixtures/slack/web/503_error.yml +14 -0
  230. data/spec/fixtures/slack/web/channels_info.yml +108 -15
  231. data/spec/fixtures/slack/web/conversations_setTopic.yml +69 -0
  232. data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +142 -0
  233. data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +208 -0
  234. data/spec/fixtures/slack/web/paginated_users_list.yml +181 -0
  235. data/spec/fixtures/slack/web/rtm_connect.yml +70 -0
  236. data/spec/fixtures/slack/web/rtm_start.yml +1 -1
  237. data/spec/fixtures/slack/web/views_open_error.yml +76 -0
  238. data/spec/integration/integration_spec.rb +116 -48
  239. data/spec/slack/config_spec.rb +2 -0
  240. data/spec/slack/events/config_spec.rb +33 -0
  241. data/spec/slack/events/request_spec.rb +183 -0
  242. data/spec/slack/messages/formatting_spec.rb +25 -14
  243. data/spec/slack/real_time/api/message_spec.rb +6 -1
  244. data/spec/slack/real_time/api/ping_spec.rb +2 -0
  245. data/spec/slack/real_time/api/typing_spec.rb +5 -1
  246. data/spec/slack/real_time/client_spec.rb +462 -134
  247. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +3 -1
  248. data/spec/slack/real_time/event_handlers/bot_spec.rb +6 -3
  249. data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -6
  250. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +3 -2
  251. data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
  252. data/spec/slack/real_time/event_handlers/im_spec.rb +4 -3
  253. data/spec/slack/real_time/event_handlers/team_spec.rb +8 -4
  254. data/spec/slack/real_time/event_handlers/user_spec.rb +5 -2
  255. data/spec/slack/real_time/rtm_connect_spec.rb +14 -0
  256. data/spec/slack/real_time/rtm_start_spec.rb +1 -0
  257. data/spec/slack/real_time/store_spec.rb +2 -1
  258. data/spec/slack/slack_spec.rb +39 -7
  259. data/spec/slack/version_spec.rb +2 -1
  260. data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
  261. data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
  262. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
  263. data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
  264. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +13 -0
  265. data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
  266. data/spec/slack/web/api/endpoints/admin_conversations_ekm_spec.rb +8 -0
  267. data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
  268. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +98 -0
  269. data/spec/slack/web/api/endpoints/admin_conversations_whitelist_spec.rb +32 -0
  270. data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
  271. data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
  272. data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
  273. data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
  274. data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
  275. data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
  276. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
  277. data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
  278. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
  279. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +21 -0
  280. data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
  281. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  282. data/spec/slack/web/api/endpoints/apps_connections_spec.rb +8 -0
  283. data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
  284. data/spec/slack/web/api/endpoints/apps_permissions_resources_spec.rb +8 -0
  285. data/spec/slack/web/api/endpoints/apps_permissions_scopes_spec.rb +8 -0
  286. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +16 -0
  287. data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +19 -0
  288. data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
  289. data/spec/slack/web/api/endpoints/auth_teams_spec.rb +8 -0
  290. data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
  291. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
  292. data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
  293. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +8 -0
  294. data/spec/slack/web/api/endpoints/conversations_spec.rb +109 -0
  295. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +13 -4
  296. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +5 -3
  297. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +140 -24
  298. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +36 -0
  299. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +2 -0
  300. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +21 -6
  301. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
  302. data/spec/slack/web/api/endpoints/dnd_spec.rb +6 -0
  303. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  304. data/spec/slack/web/api/endpoints/files_comments_spec.rb +3 -21
  305. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  306. data/spec/slack/web/api/endpoints/files_spec.rb +17 -5
  307. data/spec/slack/web/api/endpoints/im_spec.rb +5 -4
  308. data/spec/slack/web/api/endpoints/migration_spec.rb +13 -0
  309. data/spec/slack/web/api/endpoints/mpim_spec.rb +5 -4
  310. data/spec/slack/web/api/endpoints/oauth_spec.rb +5 -4
  311. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +13 -0
  312. data/spec/slack/web/api/endpoints/pins_spec.rb +1 -0
  313. data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
  314. data/spec/slack/web/api/endpoints/reminders_spec.rb +3 -2
  315. data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
  316. data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
  317. data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
  318. data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
  319. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  320. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  321. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +3 -2
  322. data/spec/slack/web/api/endpoints/users_admin_spec.rb +18 -0
  323. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +8 -0
  324. data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
  325. data/spec/slack/web/api/endpoints/views_spec.rb +29 -0
  326. data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
  327. data/spec/slack/web/api/error_spec.rb +5 -3
  328. data/spec/slack/web/api/errors/slack_error_spec.rb +38 -0
  329. data/spec/slack/web/api/mixins/channels_spec.rb +24 -12
  330. data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
  331. data/spec/slack/web/api/mixins/conversations_spec.rb +43 -0
  332. data/spec/slack/web/api/mixins/groups_spec.rb +24 -12
  333. data/spec/slack/web/api/mixins/users_spec.rb +30 -17
  334. data/spec/slack/web/api/pagination/cursor_spec.rb +100 -0
  335. data/spec/slack/web/client_spec.rb +215 -14
  336. data/spec/slack/web/faraday/response/raise_error_spec.rb +85 -0
  337. data/spec/spec_helper.rb +8 -1
  338. data/spec/support/queue_with_timeout.rb +6 -5
  339. data/spec/support/real_time/concurrency/mock.rb +2 -2
  340. data/spec/support/real_time/connected_client.rb +13 -2
  341. data/spec/support/real_time/event.rb +1 -0
  342. data/spec/support/token.rb +1 -0
  343. data/spec/support/vcr.rb +6 -1
  344. metadata +280 -55
  345. data/examples/hi_real_time/Gemfile +0 -5
  346. data/examples/hi_real_time/hi.gif +0 -0
  347. data/examples/hi_real_time/hi.rb +0 -37
  348. data/examples/hi_real_time_async_celluloid/Gemfile +0 -6
  349. data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
  350. data/examples/hi_real_time_async_eventmachine/hi.rb +0 -36
  351. data/lib/slack/real_time/concurrency/celluloid.rb +0 -113
  352. data/lib/slack/real_time/concurrency/eventmachine.rb +0 -60
  353. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
  354. data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
  355. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -20
  356. data/screenshots/register-bot.png +0 -0
  357. data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -31
  358. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -47
data/lib/slack/version.rb CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
- VERSION = '0.7.9'.freeze
3
+ VERSION = '0.16.0'
3
4
  end
@@ -1,52 +1,132 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
- require 'slack/web/api/endpoints/api'
4
- require 'slack/web/api/endpoints/auth'
5
- require 'slack/web/api/endpoints/bots'
6
- require 'slack/web/api/endpoints/channels'
7
- require 'slack/web/api/endpoints/chat'
8
- require 'slack/web/api/endpoints/dnd'
9
- require 'slack/web/api/endpoints/emoji'
10
- require 'slack/web/api/endpoints/files_comments'
11
- require 'slack/web/api/endpoints/files'
12
- require 'slack/web/api/endpoints/groups'
13
- require 'slack/web/api/endpoints/im'
14
- require 'slack/web/api/endpoints/mpim'
15
- require 'slack/web/api/endpoints/oauth'
16
- require 'slack/web/api/endpoints/pins'
17
- require 'slack/web/api/endpoints/reactions'
18
- require 'slack/web/api/endpoints/reminders'
19
- require 'slack/web/api/endpoints/rtm'
20
- require 'slack/web/api/endpoints/search'
21
- require 'slack/web/api/endpoints/stars'
22
- require 'slack/web/api/endpoints/team'
23
- require 'slack/web/api/endpoints/team_profile'
24
- require 'slack/web/api/endpoints/usergroups'
25
- require 'slack/web/api/endpoints/usergroups_users'
26
- require 'slack/web/api/endpoints/users'
27
- require 'slack/web/api/endpoints/users_profile'
4
+ require_relative 'endpoints/admin_analytics'
5
+ require_relative 'endpoints/admin_apps'
6
+ require_relative 'endpoints/admin_apps_approved'
7
+ require_relative 'endpoints/admin_apps_requests'
8
+ require_relative 'endpoints/admin_apps_restricted'
9
+ require_relative 'endpoints/admin_barriers'
10
+ require_relative 'endpoints/admin_conversations'
11
+ require_relative 'endpoints/admin_conversations_ekm'
12
+ require_relative 'endpoints/admin_conversations_restrictAccess'
13
+ require_relative 'endpoints/admin_conversations_whitelist'
14
+ require_relative 'endpoints/admin_emoji'
15
+ require_relative 'endpoints/admin_inviteRequests'
16
+ require_relative 'endpoints/admin_inviteRequests_approved'
17
+ require_relative 'endpoints/admin_inviteRequests_denied'
18
+ require_relative 'endpoints/admin_teams'
19
+ require_relative 'endpoints/admin_teams_admins'
20
+ require_relative 'endpoints/admin_teams_owners'
21
+ require_relative 'endpoints/admin_teams_settings'
22
+ require_relative 'endpoints/admin_usergroups'
23
+ require_relative 'endpoints/admin_users'
24
+ require_relative 'endpoints/admin_users_session'
25
+ require_relative 'endpoints/api'
26
+ require_relative 'endpoints/apps'
27
+ require_relative 'endpoints/apps_connections'
28
+ require_relative 'endpoints/apps_event_authorizations'
29
+ require_relative 'endpoints/apps_permissions'
30
+ require_relative 'endpoints/apps_permissions_resources'
31
+ require_relative 'endpoints/apps_permissions_scopes'
32
+ require_relative 'endpoints/apps_permissions_users'
33
+ require_relative 'endpoints/auth'
34
+ require_relative 'endpoints/auth_teams'
35
+ require_relative 'endpoints/bots'
36
+ require_relative 'endpoints/calls'
37
+ require_relative 'endpoints/calls_participants'
38
+ require_relative 'endpoints/channels'
39
+ require_relative 'endpoints/chat'
40
+ require_relative 'endpoints/chat_scheduledMessages'
41
+ require_relative 'endpoints/conversations'
42
+ require_relative 'endpoints/dialog'
43
+ require_relative 'endpoints/dnd'
44
+ require_relative 'endpoints/emoji'
45
+ require_relative 'endpoints/files'
46
+ require_relative 'endpoints/files_comments'
47
+ require_relative 'endpoints/files_remote'
48
+ require_relative 'endpoints/groups'
49
+ require_relative 'endpoints/im'
50
+ require_relative 'endpoints/migration'
51
+ require_relative 'endpoints/mpim'
52
+ require_relative 'endpoints/oauth'
53
+ require_relative 'endpoints/oauth_v2'
54
+ require_relative 'endpoints/pins'
55
+ require_relative 'endpoints/reactions'
56
+ require_relative 'endpoints/reminders'
57
+ require_relative 'endpoints/rtm'
58
+ require_relative 'endpoints/search'
59
+ require_relative 'endpoints/stars'
60
+ require_relative 'endpoints/team'
61
+ require_relative 'endpoints/team_profile'
62
+ require_relative 'endpoints/usergroups'
63
+ require_relative 'endpoints/usergroups_users'
64
+ require_relative 'endpoints/users'
65
+ require_relative 'endpoints/users_admin'
66
+ require_relative 'endpoints/users_prefs'
67
+ require_relative 'endpoints/users_profile'
68
+ require_relative 'endpoints/views'
69
+ require_relative 'endpoints/workflows'
28
70
 
29
71
  module Slack
30
72
  module Web
31
73
  module Api
32
74
  module Endpoints
75
+ include Slack::Web::Api::Mixins::Conversations
33
76
  include Slack::Web::Api::Mixins::Channels
34
77
  include Slack::Web::Api::Mixins::Users
35
78
  include Slack::Web::Api::Mixins::Groups
36
79
 
80
+ include AdminAnalytics
81
+ include AdminApps
82
+ include AdminAppsApproved
83
+ include AdminAppsRequests
84
+ include AdminAppsRestricted
85
+ include AdminBarriers
86
+ include AdminConversations
87
+ include AdminConversationsEkm
88
+ include AdminConversationsRestrictaccess
89
+ include AdminConversationsWhitelist
90
+ include AdminEmoji
91
+ include AdminInviterequests
92
+ include AdminInviterequestsApproved
93
+ include AdminInviterequestsDenied
94
+ include AdminTeams
95
+ include AdminTeamsAdmins
96
+ include AdminTeamsOwners
97
+ include AdminTeamsSettings
98
+ include AdminUsergroups
99
+ include AdminUsers
100
+ include AdminUsersSession
37
101
  include Api
102
+ include Apps
103
+ include AppsConnections
104
+ include AppsEventAuthorizations
105
+ include AppsPermissions
106
+ include AppsPermissionsResources
107
+ include AppsPermissionsScopes
108
+ include AppsPermissionsUsers
38
109
  include Auth
110
+ include AuthTeams
39
111
  include Bots
112
+ include Calls
113
+ include CallsParticipants
40
114
  include Channels
41
115
  include Chat
116
+ include ChatScheduledmessages
117
+ include Conversations
118
+ include Dialog
42
119
  include Dnd
43
120
  include Emoji
44
- include FilesComments
45
121
  include Files
122
+ include FilesComments
123
+ include FilesRemote
46
124
  include Groups
47
125
  include Im
126
+ include Migration
48
127
  include Mpim
49
128
  include Oauth
129
+ include OauthV2
50
130
  include Pins
51
131
  include Reactions
52
132
  include Reminders
@@ -58,7 +138,11 @@ module Slack
58
138
  include Usergroups
59
139
  include UsergroupsUsers
60
140
  include Users
141
+ include UsersAdmin
142
+ include UsersPrefs
61
143
  include UsersProfile
144
+ include Views
145
+ include Workflows
62
146
  end
63
147
  end
64
148
  end
@@ -0,0 +1,26 @@
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 [Object] :type
13
+ # The type of analytics to retrieve. The options are currently limited to member.
14
+ # @option options [Object] :date
15
+ # Date to retrieve the analytics data for, expressed as YYYY-MM-DD in UTC.
16
+ # @see https://api.slack.com/methods/admin.analytics.getFile
17
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.analytics/admin.analytics.getFile.json
18
+ def admin_analytics_getFile(options = {})
19
+ throw ArgumentError.new('Required arguments :type missing') if options[:type].nil?
20
+ post('admin.analytics.getFile', options)
21
+ end
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
@@ -0,0 +1,62 @@
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 [Object] :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 [Object] :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 [Object] :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 [Object] :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 [Object] :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
+ end
59
+ end
60
+ end
61
+ end
62
+ 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 [Object] :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 [Object] :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,33 @@
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
+ # List app requests for a team/workspace.
11
+ #
12
+ # @option options [Object] :cursor
13
+ # Set cursor to next_cursor returned by the previous call to list items in the next page.
14
+ # @option options [Object] :limit
15
+ # The maximum number of items to return. Must be between 1 - 1000 both inclusive.
16
+ # @option options [Object] :team_id
17
+ # .
18
+ # @see https://api.slack.com/methods/admin.apps.requests.list
19
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps.requests/admin.apps.requests.list.json
20
+ def admin_apps_requests_list(options = {})
21
+ if block_given?
22
+ Pagination::Cursor.new(self, :admin_apps_requests_list, options).each do |page|
23
+ yield page
24
+ end
25
+ else
26
+ post('admin.apps.requests.list', options)
27
+ end
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
33
+ 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 [Object] :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 [Object] :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,82 @@
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 AdminBarriers
9
+ #
10
+ # Create an Information Barrier
11
+ #
12
+ # @option options [Object] :barriered_from_usergroup_ids
13
+ # A list of IDP Groups ids that the primary usergroup is to be barriered from.
14
+ # @option options [Object] :primary_usergroup_id
15
+ # The id of the primary IDP Group.
16
+ # @option options [Object] :restricted_subjects
17
+ # What kind of interactions are blocked by this barrier? For v1, we only support a list of all 3, eg im, mpim, call.
18
+ # @see https://api.slack.com/methods/admin.barriers.create
19
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.barriers/admin.barriers.create.json
20
+ def admin_barriers_create(options = {})
21
+ throw ArgumentError.new('Required arguments :barriered_from_usergroup_ids missing') if options[:barriered_from_usergroup_ids].nil?
22
+ throw ArgumentError.new('Required arguments :primary_usergroup_id missing') if options[:primary_usergroup_id].nil?
23
+ throw ArgumentError.new('Required arguments :restricted_subjects missing') if options[:restricted_subjects].nil?
24
+ post('admin.barriers.create', options)
25
+ end
26
+
27
+ #
28
+ # Delete an existing Information Barrier
29
+ #
30
+ # @option options [Object] :barrier_id
31
+ # The ID of the barrier you're trying to delete.
32
+ # @see https://api.slack.com/methods/admin.barriers.delete
33
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.barriers/admin.barriers.delete.json
34
+ def admin_barriers_delete(options = {})
35
+ throw ArgumentError.new('Required arguments :barrier_id missing') if options[:barrier_id].nil?
36
+ post('admin.barriers.delete', options)
37
+ end
38
+
39
+ #
40
+ # Get all Information Barriers for your organization
41
+ #
42
+ # @option options [Object] :cursor
43
+ # Set cursor to next_cursor returned by the previous call to list items in the next page.
44
+ # @option options [Object] :limit
45
+ # The maximum number of items to return. Must be between 1 - 1000 both inclusive.
46
+ # @see https://api.slack.com/methods/admin.barriers.list
47
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.barriers/admin.barriers.list.json
48
+ def admin_barriers_list(options = {})
49
+ if block_given?
50
+ Pagination::Cursor.new(self, :admin_barriers_list, options).each do |page|
51
+ yield page
52
+ end
53
+ else
54
+ post('admin.barriers.list', options)
55
+ end
56
+ end
57
+
58
+ #
59
+ # Update an existing Information Barrier
60
+ #
61
+ # @option options [Object] :barrier_id
62
+ # The ID of the barrier you're trying to modify.
63
+ # @option options [Object] :barriered_from_usergroup_ids
64
+ # A list of IDP Groups ids that the primary usergroup is to be barriered from.
65
+ # @option options [Object] :primary_usergroup_id
66
+ # The id of the primary IDP Group.
67
+ # @option options [Object] :restricted_subjects
68
+ # What kind of interactions are blocked by this barrier? For v1, we only support a list of all 3, eg im, mpim, call.
69
+ # @see https://api.slack.com/methods/admin.barriers.update
70
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.barriers/admin.barriers.update.json
71
+ def admin_barriers_update(options = {})
72
+ throw ArgumentError.new('Required arguments :barrier_id missing') if options[:barrier_id].nil?
73
+ throw ArgumentError.new('Required arguments :barriered_from_usergroup_ids missing') if options[:barriered_from_usergroup_ids].nil?
74
+ throw ArgumentError.new('Required arguments :primary_usergroup_id missing') if options[:primary_usergroup_id].nil?
75
+ throw ArgumentError.new('Required arguments :restricted_subjects missing') if options[:restricted_subjects].nil?
76
+ post('admin.barriers.update', options)
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
82
+ end