slack-ruby-client 0.16.0 → 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 (234) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/danger.yml +19 -0
  3. data/.github/workflows/integtest.yml +25 -0
  4. data/.github/workflows/rubocop.yml +13 -0
  5. data/.github/workflows/test.yml +34 -0
  6. data/.gitignore +5 -3
  7. data/.rubocop.yml +6 -0
  8. data/.rubocop_todo.yml +137 -43
  9. data/CHANGELOG.md +34 -3
  10. data/CONTRIBUTING.md +4 -4
  11. data/Gemfile +18 -1
  12. data/Gemfile.danger +6 -0
  13. data/LICENSE.md +1 -1
  14. data/README.md +13 -12
  15. data/RELEASING.md +1 -1
  16. data/UPGRADING.md +42 -0
  17. data/bin/commands/admin_analytics.rb +2 -1
  18. data/bin/commands/admin_apps.rb +11 -0
  19. data/bin/commands/admin_apps_requests.rb +12 -0
  20. data/bin/commands/admin_auth_policy.rb +39 -0
  21. data/bin/commands/admin_conversations.rb +2 -1
  22. data/bin/commands/admin_conversations_restrictAccess.rb +1 -1
  23. data/bin/commands/admin_emoji.rb +2 -2
  24. data/bin/commands/admin_teams.rb +1 -1
  25. data/bin/commands/admin_users.rb +1 -0
  26. data/bin/commands/admin_users_session.rb +40 -0
  27. data/bin/commands/admin_users_unsupportedVersions.rb +15 -0
  28. data/bin/commands/apps_manifest.rb +52 -0
  29. data/bin/commands/bookmarks.rb +52 -0
  30. data/bin/commands/channels.rb +0 -157
  31. data/bin/commands/chat.rb +14 -9
  32. data/bin/commands/conversations.rb +61 -4
  33. data/bin/commands/dnd.rb +3 -1
  34. data/bin/commands/files.rb +2 -1
  35. data/bin/commands/groups.rb +0 -163
  36. data/bin/commands/im.rb +0 -62
  37. data/bin/commands/mpim.rb +0 -60
  38. data/bin/commands/oauth.rb +0 -13
  39. data/bin/commands/oauth_v2.rb +13 -1
  40. data/bin/commands/openid_connect.rb +27 -0
  41. data/bin/commands/pins.rb +2 -2
  42. data/bin/commands/reminders.rb +6 -0
  43. data/bin/commands/rtm.rb +2 -2
  44. data/bin/commands/search.rb +2 -1
  45. data/bin/commands/stars.rb +7 -6
  46. data/bin/commands/team.rb +1 -0
  47. data/bin/commands/team_billing.rb +13 -0
  48. data/bin/commands/team_preferences.rb +13 -0
  49. data/bin/commands/tooling_tokens.rb +14 -0
  50. data/bin/commands/usergroups.rb +1 -1
  51. data/bin/commands/users.rb +1 -1
  52. data/bin/commands/views.rb +1 -1
  53. data/bin/commands.rb +8 -9
  54. data/lib/slack/config.rb +1 -2
  55. data/lib/slack/events/request.rb +5 -3
  56. data/lib/slack/real_time/client.rb +6 -7
  57. data/lib/slack/real_time/concurrency/async.rb +6 -8
  58. data/lib/slack/real_time/config.rb +3 -13
  59. data/lib/slack/real_time/socket.rb +1 -2
  60. data/lib/slack/real_time/stores/base.rb +1 -6
  61. data/lib/slack/real_time/stores/starter.rb +6 -3
  62. data/lib/slack/real_time/stores/store.rb +5 -0
  63. data/lib/slack/version.rb +1 -1
  64. data/lib/slack/web/api/endpoints/admin_analytics.rb +5 -3
  65. data/lib/slack/web/api/endpoints/admin_apps.rb +21 -5
  66. data/lib/slack/web/api/endpoints/admin_apps_approved.rb +2 -2
  67. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +20 -2
  68. data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +2 -2
  69. data/lib/slack/web/api/endpoints/admin_auth_policy.rb +72 -0
  70. data/lib/slack/web/api/endpoints/admin_barriers.rb +6 -6
  71. data/lib/slack/web/api/endpoints/admin_conversations.rb +28 -26
  72. data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +4 -4
  73. data/lib/slack/web/api/endpoints/admin_emoji.rb +11 -11
  74. data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +7 -7
  75. data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +3 -3
  76. data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +2 -2
  77. data/lib/slack/web/api/endpoints/admin_teams.rb +7 -7
  78. data/lib/slack/web/api/endpoints/admin_teams_admins.rb +2 -2
  79. data/lib/slack/web/api/endpoints/admin_teams_owners.rb +2 -2
  80. data/lib/slack/web/api/endpoints/admin_teams_settings.rb +5 -5
  81. data/lib/slack/web/api/endpoints/admin_usergroups.rb +10 -10
  82. data/lib/slack/web/api/endpoints/admin_users.rb +20 -18
  83. data/lib/slack/web/api/endpoints/admin_users_session.rb +65 -9
  84. data/lib/slack/web/api/endpoints/admin_users_unsupportedVersions.rb +25 -0
  85. data/lib/slack/web/api/endpoints/api.rb +1 -1
  86. data/lib/slack/web/api/endpoints/apps.rb +2 -2
  87. data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +3 -3
  88. data/lib/slack/web/api/endpoints/apps_manifest.rb +77 -0
  89. data/lib/slack/web/api/endpoints/auth.rb +1 -1
  90. data/lib/slack/web/api/endpoints/auth_teams.rb +3 -3
  91. data/lib/slack/web/api/endpoints/bookmarks.rb +86 -0
  92. data/lib/slack/web/api/endpoints/bots.rb +2 -2
  93. data/lib/slack/web/api/endpoints/calls.rb +15 -15
  94. data/lib/slack/web/api/endpoints/calls_participants.rb +4 -4
  95. data/lib/slack/web/api/endpoints/channels.rb +0 -265
  96. data/lib/slack/web/api/endpoints/chat.rb +67 -57
  97. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +3 -3
  98. data/lib/slack/web/api/endpoints/conversations.rb +117 -27
  99. data/lib/slack/web/api/endpoints/dialog.rb +2 -2
  100. data/lib/slack/web/api/endpoints/dnd.rb +6 -3
  101. data/lib/slack/web/api/endpoints/files.rb +16 -14
  102. data/lib/slack/web/api/endpoints/files_comments.rb +1 -1
  103. data/lib/slack/web/api/endpoints/files_remote.rb +20 -20
  104. data/lib/slack/web/api/endpoints/groups.rb +0 -273
  105. data/lib/slack/web/api/endpoints/im.rb +0 -107
  106. data/lib/slack/web/api/endpoints/migration.rb +3 -3
  107. data/lib/slack/web/api/endpoints/mpim.rb +0 -102
  108. data/lib/slack/web/api/endpoints/oauth.rb +5 -27
  109. data/lib/slack/web/api/endpoints/oauth_v2.rb +24 -6
  110. data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
  111. data/lib/slack/web/api/endpoints/pins.rb +4 -4
  112. data/lib/slack/web/api/endpoints/reactions.rb +12 -12
  113. data/lib/slack/web/api/endpoints/reminders.rb +17 -5
  114. data/lib/slack/web/api/endpoints/rtm.rb +10 -10
  115. data/lib/slack/web/api/endpoints/search.rb +24 -16
  116. data/lib/slack/web/api/endpoints/stars.rb +11 -9
  117. data/lib/slack/web/api/endpoints/team.rb +10 -8
  118. data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
  119. data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
  120. data/lib/slack/web/api/endpoints/team_profile.rb +1 -1
  121. data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
  122. data/lib/slack/web/api/endpoints/usergroups.rb +19 -19
  123. data/lib/slack/web/api/endpoints/usergroups_users.rb +7 -7
  124. data/lib/slack/web/api/endpoints/users.rb +16 -16
  125. data/lib/slack/web/api/endpoints/users_profile.rb +4 -4
  126. data/lib/slack/web/api/endpoints/views.rb +12 -12
  127. data/lib/slack/web/api/endpoints/workflows.rb +9 -9
  128. data/lib/slack/web/api/endpoints.rb +16 -20
  129. data/lib/slack/web/api/errors/server_error.rb +37 -0
  130. data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -4
  131. data/lib/slack/web/api/errors.rb +232 -16
  132. data/lib/slack/web/api/mixins.rb +0 -2
  133. data/lib/slack/web/api/patches/chat.1.patch +7 -9
  134. data/lib/slack/web/api/templates/endpoints.erb +0 -2
  135. data/lib/slack/web/faraday/connection.rb +5 -5
  136. data/lib/slack/web/faraday/request.rb +4 -1
  137. data/lib/slack/web/faraday/response/raise_error.rb +2 -14
  138. data/lib/slack/web/faraday/response/wrap_error.rb +11 -5
  139. data/lib/slack/web/pagination/cursor.rb +1 -5
  140. data/lib/slack-ruby-client.rb +3 -2
  141. data/lib/tasks/real_time.rake +1 -3
  142. data/lib/tasks/web.rake +4 -0
  143. data/slack-ruby-client.gemspec +5 -14
  144. data/spec/fixtures/slack/web/429_error.yml +50 -54
  145. data/spec/fixtures/slack/web/auth_test_error.yml +51 -18
  146. data/spec/fixtures/slack/web/auth_test_success.yml +50 -26
  147. data/spec/fixtures/slack/web/conversations_info.yml +167 -0
  148. data/spec/fixtures/slack/web/conversations_setTopic.yml +42 -27
  149. data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +89 -59
  150. data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +131 -86
  151. data/spec/fixtures/slack/web/paginated_users_list.yml +501 -69
  152. data/spec/fixtures/slack/web/rtm_connect.yml +267 -30
  153. data/spec/fixtures/slack/web/rtm_start.yml +771 -60
  154. data/spec/fixtures/slack/web/users_info.yml +153 -69
  155. data/spec/fixtures/slack/web/users_list.yml +102 -41
  156. data/spec/fixtures/slack/web/views_open_error.yml +49 -42
  157. data/spec/integration/integration_spec.rb +1 -1
  158. data/spec/slack/events/request_spec.rb +7 -6
  159. data/spec/slack/real_time/client_spec.rb +37 -39
  160. data/spec/slack/real_time/concurrency/with_concurrency_spec.rb +10 -0
  161. data/spec/slack/real_time/concurrency/without_concurrency_spec.rb +10 -0
  162. data/spec/slack/real_time/event_handlers/bot_spec.rb +1 -1
  163. data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -9
  164. data/spec/slack/real_time/event_handlers/group_spec.rb +2 -2
  165. data/spec/slack/real_time/event_handlers/im_spec.rb +7 -7
  166. data/spec/slack/real_time/event_handlers/user_spec.rb +2 -2
  167. data/spec/slack/real_time/rtm_connect_spec.rb +1 -1
  168. data/spec/slack/real_time/rtm_start_spec.rb +1 -1
  169. data/spec/slack/real_time/store_spec.rb +2 -2
  170. data/spec/slack/slack_spec.rb +7 -5
  171. data/spec/slack/version_spec.rb +1 -1
  172. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +5 -0
  173. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +5 -0
  174. data/spec/slack/web/api/endpoints/admin_auth_policy_spec.rb +35 -0
  175. data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +9 -9
  176. data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +1 -1
  177. data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +6 -6
  178. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +22 -2
  179. data/spec/slack/web/api/endpoints/admin_users_spec.rb +8 -8
  180. data/spec/slack/web/api/endpoints/admin_users_unsupportedVersions_spec.rb +8 -0
  181. data/spec/slack/web/api/endpoints/apps_manifest_spec.rb +36 -0
  182. data/spec/slack/web/api/endpoints/apps_spec.rb +2 -2
  183. data/spec/slack/web/api/endpoints/bookmarks_spec.rb +40 -0
  184. data/spec/slack/web/api/endpoints/calls_participants_spec.rb +4 -4
  185. data/spec/slack/web/api/endpoints/calls_spec.rb +2 -2
  186. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +4 -6
  187. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +28 -16
  188. data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
  189. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +4 -2
  190. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +2 -2
  191. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +22 -14
  192. data/spec/slack/web/api/endpoints/dnd_spec.rb +0 -5
  193. data/spec/slack/web/api/endpoints/files_comments_spec.rb +2 -2
  194. data/spec/slack/web/api/endpoints/files_remote_spec.rb +3 -3
  195. data/spec/slack/web/api/endpoints/oauth_spec.rb +0 -11
  196. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +6 -3
  197. data/spec/slack/web/api/endpoints/{apps_permissions_scopes_spec.rb → openid_connect_spec.rb} +1 -1
  198. data/spec/slack/web/api/endpoints/reactions_spec.rb +3 -3
  199. data/spec/slack/web/api/endpoints/reminders_spec.rb +2 -2
  200. data/spec/slack/web/api/endpoints/{apps_permissions_resources_spec.rb → team_billing_spec.rb} +1 -1
  201. data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -0
  202. data/spec/slack/web/api/endpoints/tooling_tokens_spec.rb +13 -0
  203. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +2 -2
  204. data/spec/slack/web/api/error_spec.rb +5 -7
  205. data/spec/slack/web/api/errors/slack_error_spec.rb +21 -26
  206. data/spec/slack/web/api/mixins/conversations_list_spec.rb +1 -1
  207. data/spec/slack/web/api/pagination/cursor_spec.rb +8 -10
  208. data/spec/slack/web/client_spec.rb +46 -32
  209. data/spec/slack/web/faraday/request_spec.rb +80 -0
  210. data/spec/slack/web/faraday/response/raise_error_spec.rb +2 -1
  211. data/spec/spec_helper.rb +1 -1
  212. data/spec/support/real_time/connected_client.rb +2 -8
  213. data/spec/support/vcr.rb +33 -2
  214. metadata +50 -297
  215. data/.travis.yml +0 -28
  216. data/lib/slack/web/api/errors/internal_error.rb +0 -14
  217. data/lib/slack/web/api/mixins/channels.id.json +0 -20
  218. data/lib/slack/web/api/mixins/channels.id.rb +0 -25
  219. data/lib/slack/web/api/mixins/groups.id.json +0 -20
  220. data/lib/slack/web/api/mixins/groups.id.rb +0 -25
  221. data/spec/fixtures/slack/web/503_error.yml +0 -14
  222. data/spec/fixtures/slack/web/channels_info.yml +0 -139
  223. data/spec/fixtures/slack/web/groups_info.yml +0 -43
  224. data/spec/slack/web/api/endpoints/admin_conversations_whitelist_spec.rb +0 -32
  225. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +0 -16
  226. data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +0 -19
  227. data/spec/slack/web/api/endpoints/conversations_spec.rb +0 -109
  228. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -13
  229. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -13
  230. data/spec/slack/web/api/endpoints/im_spec.rb +0 -39
  231. data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -39
  232. data/spec/slack/web/api/endpoints/views_spec.rb +0 -29
  233. data/spec/slack/web/api/mixins/channels_spec.rb +0 -43
  234. data/spec/slack/web/api/mixins/groups_spec.rb +0 -43
@@ -3,8 +3,8 @@
3
3
 
4
4
  desc 'Stars methods.'
5
5
  command 'stars' do |g|
6
- g.desc 'Adds a star to an item.'
7
- g.long_desc %( Adds a star to an item. )
6
+ g.desc 'Save an item for later. Formerly known as _adding a star_.'
7
+ g.long_desc %( Save an item for later. Formerly known as _adding a star_. )
8
8
  g.command 'add' do |c|
9
9
  c.flag 'channel', desc: 'Channel to add star to, or channel where the message to add star to was posted (used with timestamp).'
10
10
  c.flag 'file', desc: 'File to add star to.'
@@ -15,18 +15,19 @@ command 'stars' do |g|
15
15
  end
16
16
  end
17
17
 
18
- g.desc 'Lists stars for a user.'
19
- g.long_desc %( Lists stars for a user. )
18
+ g.desc "List a user's saved items, formerly known as _stars_."
19
+ g.long_desc %( List a user's saved items, formerly known as _stars_. )
20
20
  g.command 'list' do |c|
21
21
  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."
22
22
  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."
23
+ c.flag 'team_id', desc: 'encoded team id to list stars in, required if org token is used.'
23
24
  c.action do |_global_options, options, _args|
24
25
  puts JSON.dump($client.stars_list(options))
25
26
  end
26
27
  end
27
28
 
28
- g.desc 'Removes a star from an item.'
29
- g.long_desc %( Removes a star from an item. )
29
+ g.desc 'Removes a saved item (star) from an item.'
30
+ g.long_desc %( Removes a saved item (star) from an item. )
30
31
  g.command 'remove' do |c|
31
32
  c.flag 'channel', desc: 'Channel to remove star from, or channel where the message to remove star from was posted (used with timestamp).'
32
33
  c.flag 'file', desc: 'File to remove star from.'
data/bin/commands/team.rb CHANGED
@@ -26,6 +26,7 @@ command 'team' do |g|
26
26
  g.desc 'Gets information about the current team.'
27
27
  g.long_desc %( Gets information about the current team. )
28
28
  g.command 'info' do |c|
29
+ c.flag 'domain', desc: 'Query by domain instead of team (only when team is null). This only works for domains in the same enterprise as the querying team token. This also expects the domain to belong to a team and not the enterprise itself.'
29
30
  c.flag 'team', desc: 'Team to get info on, if omitted, will return information about the current team. Will only return team that the authenticated token is allowed to see through external shared channels.'
30
31
  c.action do |_global_options, options, _args|
31
32
  puts JSON.dump($client.team_info(options))
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'TeamBilling methods.'
5
+ command 'team_billing' do |g|
6
+ g.desc "Reads a workspace's billing plan information."
7
+ g.long_desc %( Reads a workspace's billing plan information. )
8
+ g.command 'info' do |c|
9
+ c.action do |_global_options, options, _args|
10
+ puts JSON.dump($client.team_billing_info(options))
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'TeamPreferences methods.'
5
+ command 'team_preferences' do |g|
6
+ g.desc "Retrieve a list of a workspace's team preferences."
7
+ g.long_desc %( Retrieve a list of a workspace's team preferences. )
8
+ g.command 'list' do |c|
9
+ c.action do |_global_options, options, _args|
10
+ puts JSON.dump($client.team_preferences_list(options))
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,14 @@
1
+ # frozen_string_literal: true
2
+ # This file was auto-generated by lib/tasks/web.rake
3
+
4
+ desc 'ToolingTokens methods.'
5
+ command 'tooling_tokens' do |g|
6
+ g.desc 'Exchanges a refresh token for a new app configuration token.'
7
+ g.long_desc %( Exchanges a refresh token for a new app configuration token. )
8
+ g.command 'rotate' do |c|
9
+ c.flag 'refresh_token', desc: 'The xoxe refresh token that was issued along with the old app configuration token.'
10
+ c.action do |_global_options, options, _args|
11
+ puts JSON.dump($client.tooling_tokens_rotate(options))
12
+ end
13
+ end
14
+ end
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  # This file was auto-generated by lib/tasks/web.rake
3
3
 
4
- desc "Get info on your team's User Groups."
4
+ desc 'Usergroups methods.'
5
5
  command 'usergroups' do |g|
6
6
  g.desc 'Create a User Group'
7
7
  g.long_desc %( Create a User Group )
@@ -1,7 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
  # This file was auto-generated by lib/tasks/web.rake
3
3
 
4
- desc 'Get info on members of your Slack team.'
4
+ desc 'Users methods.'
5
5
  command 'users' do |g|
6
6
  g.desc 'List conversations the calling user may access.'
7
7
  g.long_desc %( List conversations the calling user may access. )
@@ -39,8 +39,8 @@ command 'views' do |g|
39
39
  g.command 'update' do |c|
40
40
  c.flag 'view', desc: 'A view object. This must be a JSON-encoded string.'
41
41
  c.flag 'external_id', desc: 'A unique identifier of the view set by the developer. Must be unique for all views on a team. Max length of 255 characters. Either view_id or external_id is required.'
42
- c.flag 'hash', desc: 'A string that represents view state to protect against possible race conditions.'
43
42
  c.flag 'view_id', desc: 'A unique identifier of the view to be updated. Either view_id or external_id is required.'
43
+ c.flag 'hash', desc: 'A string that represents view state to protect against possible race conditions.'
44
44
  c.action do |_global_options, options, _args|
45
45
  puts JSON.dump($client.views_update(options))
46
46
  end
data/bin/commands.rb CHANGED
@@ -6,11 +6,11 @@ require 'commands/admin_apps'
6
6
  require 'commands/admin_apps_approved'
7
7
  require 'commands/admin_apps_requests'
8
8
  require 'commands/admin_apps_restricted'
9
+ require 'commands/admin_auth_policy'
9
10
  require 'commands/admin_barriers'
10
11
  require 'commands/admin_conversations'
11
12
  require 'commands/admin_conversations_ekm'
12
13
  require 'commands/admin_conversations_restrictAccess'
13
- require 'commands/admin_conversations_whitelist'
14
14
  require 'commands/admin_emoji'
15
15
  require 'commands/admin_inviteRequests'
16
16
  require 'commands/admin_inviteRequests_approved'
@@ -22,20 +22,18 @@ require 'commands/admin_teams_settings'
22
22
  require 'commands/admin_usergroups'
23
23
  require 'commands/admin_users'
24
24
  require 'commands/admin_users_session'
25
+ require 'commands/admin_users_unsupportedVersions'
25
26
  require 'commands/api'
26
27
  require 'commands/apps'
27
28
  require 'commands/apps_connections'
28
29
  require 'commands/apps_event_authorizations'
29
- require 'commands/apps_permissions'
30
- require 'commands/apps_permissions_resources'
31
- require 'commands/apps_permissions_scopes'
32
- require 'commands/apps_permissions_users'
30
+ require 'commands/apps_manifest'
33
31
  require 'commands/auth'
34
32
  require 'commands/auth_teams'
33
+ require 'commands/bookmarks'
35
34
  require 'commands/bots'
36
35
  require 'commands/calls'
37
36
  require 'commands/calls_participants'
38
- require 'commands/channels'
39
37
  require 'commands/chat'
40
38
  require 'commands/chat_scheduledMessages'
41
39
  require 'commands/conversations'
@@ -45,12 +43,10 @@ require 'commands/emoji'
45
43
  require 'commands/files'
46
44
  require 'commands/files_comments'
47
45
  require 'commands/files_remote'
48
- require 'commands/groups'
49
- require 'commands/im'
50
46
  require 'commands/migration'
51
- require 'commands/mpim'
52
47
  require 'commands/oauth'
53
48
  require 'commands/oauth_v2'
49
+ require 'commands/openid_connect'
54
50
  require 'commands/pins'
55
51
  require 'commands/reactions'
56
52
  require 'commands/reminders'
@@ -58,7 +54,10 @@ require 'commands/rtm'
58
54
  require 'commands/search'
59
55
  require 'commands/stars'
60
56
  require 'commands/team'
57
+ require 'commands/team_billing'
58
+ require 'commands/team_preferences'
61
59
  require 'commands/team_profile'
60
+ require 'commands/tooling_tokens'
62
61
  require 'commands/usergroups'
63
62
  require 'commands/usergroups_users'
64
63
  require 'commands/users'
data/lib/slack/config.rb CHANGED
@@ -3,8 +3,7 @@ module Slack
3
3
  module Config
4
4
  extend self
5
5
 
6
- attr_accessor :token
7
- attr_accessor :logger
6
+ attr_accessor :token, :logger
8
7
 
9
8
  def reset
10
9
  self.token = nil
@@ -3,7 +3,9 @@ module Slack
3
3
  module Events
4
4
  class Request
5
5
  class MissingSigningSecret < StandardError; end
6
+
6
7
  class TimestampExpired < StandardError; end
8
+
7
9
  class InvalidSignature < StandardError; end
8
10
 
9
11
  attr_reader :http_request,
@@ -19,13 +21,13 @@ module Slack
19
21
 
20
22
  # Request timestamp.
21
23
  def timestamp
22
- @timestamp ||= http_request.headers['X-Slack-Request-Timestamp']
24
+ @timestamp ||= http_request.get_header('HTTP_X_SLACK_REQUEST_TIMESTAMP')
23
25
  end
24
26
 
25
27
  # The signature is created by combining the signing secret with the body of the request
26
28
  # Slack is sending using a standard HMAC-SHA256 keyed hash.
27
29
  def signature
28
- @signature ||= http_request.headers['X-Slack-Signature']
30
+ @signature ||= http_request.get_header('HTTP_X_SLACK_SIGNATURE')
29
31
  end
30
32
 
31
33
  # Signature version.
@@ -51,7 +53,7 @@ module Slack
51
53
  def valid?
52
54
  raise MissingSigningSecret unless signing_secret
53
55
 
54
- digest = OpenSSL::Digest::SHA256.new
56
+ digest = OpenSSL::Digest.new('SHA256')
55
57
  signature_basestring = [version, timestamp, body].join(':')
56
58
  hex_hash = OpenSSL::HMAC.hexdigest(digest, signing_secret, signature_basestring)
57
59
  computed_signature = [version, hex_hash].join('=')
@@ -3,6 +3,7 @@ module Slack
3
3
  module RealTime
4
4
  class Client
5
5
  class ClientNotStartedError < StandardError; end
6
+
6
7
  class ClientAlreadyStartedError < StandardError; end
7
8
 
8
9
  include Api::MessageId
@@ -16,10 +17,7 @@ module Slack
16
17
  attr_accessor :events
17
18
  end
18
19
 
19
- attr_accessor :web_client
20
- attr_accessor :store
21
- attr_accessor :url
22
- attr_accessor(*Config::ATTRIBUTES)
20
+ attr_accessor :web_client, :store, :url, *Config::ATTRIBUTES
23
21
 
24
22
  protected :store_class, :store_class=
25
23
 
@@ -46,7 +44,7 @@ module Slack
46
44
 
47
45
  # Start RealTime client and block until it disconnects.
48
46
  def start!(&block)
49
- @callback = block if block_given?
47
+ @callback = block if block
50
48
  build_socket
51
49
  @socket.start_sync(self)
52
50
  end
@@ -54,7 +52,7 @@ module Slack
54
52
  # Start RealTime client and return immediately.
55
53
  # The RealTime::Client will run in the background.
56
54
  def start_async(&block)
57
- @callback = block if block_given?
55
+ @callback = block if block
58
56
  build_socket
59
57
  @socket.start_async(self)
60
58
  end
@@ -133,7 +131,7 @@ module Slack
133
131
  rescue Slack::Web::Api::Errors::SlackError => e
134
132
  # stop pinging if bot was uninstalled
135
133
  case e.message
136
- when 'account_inactive', 'invalid_auth' then
134
+ when 'account_inactive', 'invalid_auth'
137
135
  logger.warn(to_s) { e.message }
138
136
  raise e
139
137
  end
@@ -201,6 +199,7 @@ module Slack
201
199
  end
202
200
 
203
201
  attr_reader :callbacks
202
+
204
203
  def socket_class
205
204
  concurrency::Socket
206
205
  end
@@ -45,14 +45,12 @@ module Slack
45
45
  @client_task&.stop
46
46
 
47
47
  @client_task = task.async do |subtask|
48
- begin
49
- subtask.annotate "#{client} run-loop"
50
- client.run_loop
51
- rescue ::Async::Wrapper::Cancelled => e
52
- # Will get restarted by ping worker.
53
- rescue StandardError => e
54
- client.logger.error(subtask.to_s) { e.message }
55
- end
48
+ subtask.annotate "#{client} run-loop"
49
+ client.run_loop
50
+ rescue ::Async::Wrapper::Cancelled => e
51
+ # Will get restarted by ping worker.
52
+ rescue StandardError => e
53
+ client.logger.error(subtask.to_s) { e.message }
56
54
  end
57
55
 
58
56
  @restart.wait
@@ -38,19 +38,9 @@ module Slack
38
38
  private
39
39
 
40
40
  def detect_concurrency
41
- %i[Async].each do |concurrency|
42
- begin
43
- return Slack::RealTime::Concurrency.const_get(concurrency)
44
- rescue LoadError, NameError
45
- false # could not be loaded, missing dependencies
46
- end
47
- end
48
-
49
- raise(
50
- NoConcurrencyError,
51
- 'Missing concurrency. Add async-websocket or faye-websocket ' \
52
- 'to your Gemfile.'
53
- )
41
+ Slack::RealTime::Concurrency.const_get(:Async)
42
+ rescue LoadError, NameError
43
+ raise NoConcurrencyError, 'Missing concurrency. Add async-websocket to your Gemfile.'
54
44
  end
55
45
  end
56
46
 
@@ -2,8 +2,7 @@
2
2
  module Slack
3
3
  module RealTime
4
4
  class Socket
5
- attr_accessor :url
6
- attr_accessor :options
5
+ attr_accessor :url, :options
7
6
  attr_reader :driver
8
7
 
9
8
  def initialize(url, options = {})
@@ -8,12 +8,7 @@ module Slack
8
8
  attr_accessor :events
9
9
  end
10
10
 
11
- attr_accessor :users
12
- attr_accessor :bots
13
- attr_accessor :channels
14
- attr_accessor :groups
15
- attr_accessor :teams
16
- attr_accessor :ims
11
+ attr_accessor :users, :bots, :channels, :groups, :teams, :ims
17
12
 
18
13
  def self
19
14
  nil
@@ -4,9 +4,7 @@ module Slack
4
4
  module Stores
5
5
  # Only stores initial information.
6
6
  class Starter < Base
7
- attr_reader :self
8
-
9
- attr_reader :team
7
+ attr_reader :self, :team
10
8
 
11
9
  def initialize(attrs)
12
10
  @team = Models::Team.new(attrs.team)
@@ -15,6 +13,11 @@ module Slack
15
13
 
16
14
  ### RealTime Events
17
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
+
18
21
  # An enterprise grid migration has started on an external workspace..
19
22
  # @see https://api.slack.com/events/external_org_migration_started
20
23
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_started.json
@@ -55,6 +55,11 @@ module Slack
55
55
 
56
56
  ### RealTime Events
57
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
+
58
63
  # An enterprise grid migration has started on an external workspace..
59
64
  # @see https://api.slack.com/events/external_org_migration_started
60
65
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_started.json
data/lib/slack/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Slack
3
- VERSION = '0.16.0'
3
+ VERSION = '1.1.0'
4
4
  end
@@ -9,10 +9,12 @@ module Slack
9
9
  #
10
10
  # Retrieve analytics data for a given date, presented as a compressed JSON file
11
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
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
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.
16
18
  # @see https://api.slack.com/methods/admin.analytics.getFile
17
19
  # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.analytics/admin.analytics.getFile.json
18
20
  def admin_analytics_getFile(options = {})
@@ -9,11 +9,11 @@ module Slack
9
9
  #
10
10
  # Approve an app for installation on a workspace.
11
11
  #
12
- # @option options [Object] :app_id
12
+ # @option options [string] :app_id
13
13
  # The id of the app to approve.
14
14
  # @option options [Object] :enterprise_id
15
15
  # The ID of the enterprise to approve the app on.
16
- # @option options [Object] :request_id
16
+ # @option options [string] :request_id
17
17
  # The id of the request to approve.
18
18
  # @option options [Object] :team_id
19
19
  # The ID of the workspace to approve the app on.
@@ -26,7 +26,7 @@ module Slack
26
26
  #
27
27
  # Clear an app resolution
28
28
  #
29
- # @option options [Object] :app_id
29
+ # @option options [string] :app_id
30
30
  # The id of the app whose resolution you want to clear/undo.
31
31
  # @option options [Object] :enterprise_id
32
32
  # The enterprise to clear the app resolution from.
@@ -42,11 +42,11 @@ module Slack
42
42
  #
43
43
  # Restrict an app for installation on a workspace.
44
44
  #
45
- # @option options [Object] :app_id
45
+ # @option options [string] :app_id
46
46
  # The id of the app to restrict.
47
47
  # @option options [Object] :enterprise_id
48
48
  # The ID of the enterprise to approve the app on.
49
- # @option options [Object] :request_id
49
+ # @option options [string] :request_id
50
50
  # The id of the request to restrict.
51
51
  # @option options [Object] :team_id
52
52
  # The ID of the workspace to approve the app on.
@@ -55,6 +55,22 @@ module Slack
55
55
  def admin_apps_restrict(options = {})
56
56
  post('admin.apps.restrict', options)
57
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
58
74
  end
59
75
  end
60
76
  end
@@ -9,11 +9,11 @@ module Slack
9
9
  #
10
10
  # List approved apps for an org or workspace.
11
11
  #
12
- # @option options [Object] :cursor
12
+ # @option options [string] :cursor
13
13
  # Set cursor to next_cursor returned by the previous call to list items in the next page.
14
14
  # @option options [Object] :enterprise_id
15
15
  # .
16
- # @option options [Object] :limit
16
+ # @option options [integer] :limit
17
17
  # The maximum number of items to return. Must be between 1 - 1000 both inclusive.
18
18
  # @option options [Object] :team_id
19
19
  # .
@@ -6,12 +6,30 @@ module Slack
6
6
  module Api
7
7
  module Endpoints
8
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
+
9
25
  #
10
26
  # List app requests for a team/workspace.
11
27
  #
12
- # @option options [Object] :cursor
28
+ # @option options [string] :cursor
13
29
  # Set cursor to next_cursor returned by the previous call to list items in the next page.
14
- # @option options [Object] :limit
30
+ # @option options [Object] :enterprise_id
31
+ # .
32
+ # @option options [integer] :limit
15
33
  # The maximum number of items to return. Must be between 1 - 1000 both inclusive.
16
34
  # @option options [Object] :team_id
17
35
  # .
@@ -9,11 +9,11 @@ module Slack
9
9
  #
10
10
  # List restricted apps for an org or workspace.
11
11
  #
12
- # @option options [Object] :cursor
12
+ # @option options [string] :cursor
13
13
  # Set cursor to next_cursor returned by the previous call to list items in the next page.
14
14
  # @option options [Object] :enterprise_id
15
15
  # .
16
- # @option options [Object] :limit
16
+ # @option options [integer] :limit
17
17
  # The maximum number of items to return. Must be between 1 - 1000 both inclusive.
18
18
  # @option options [Object] :team_id
19
19
  # .
@@ -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