slack-ruby-client 0.15.0 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -1
- data/.rubocop_todo.yml +75 -43
- data/.travis.yml +2 -4
- data/CHANGELOG.md +32 -0
- data/CONTRIBUTING.md +6 -13
- data/LICENSE.md +1 -1
- data/README.md +19 -36
- data/RELEASING.md +1 -1
- data/UPGRADING.md +56 -2
- data/bin/commands/admin_analytics.rb +16 -0
- data/bin/commands/admin_apps.rb +26 -2
- data/bin/commands/admin_apps_requests.rb +1 -0
- data/bin/commands/admin_auth_policy.rb +39 -0
- data/bin/commands/admin_barriers.rb +47 -0
- data/bin/commands/admin_conversations.rb +154 -2
- data/bin/commands/admin_conversations_ekm.rb +17 -0
- data/bin/commands/admin_conversations_restrictAccess.rb +3 -3
- data/bin/commands/admin_conversations_whitelist.rb +1 -1
- data/bin/commands/admin_emoji.rb +1 -1
- data/bin/commands/admin_teams.rb +1 -1
- data/bin/commands/admin_usergroups.rb +2 -2
- data/bin/commands/admin_users.rb +3 -2
- data/bin/commands/admin_users_session.rb +62 -0
- data/bin/commands/api.rb +0 -1
- data/bin/commands/apps_connections.rb +13 -0
- data/bin/commands/apps_event_authorizations.rb +16 -0
- data/bin/commands/apps_manifest.rb +51 -0
- data/bin/commands/auth_teams.rb +16 -0
- data/bin/commands/bots.rb +1 -0
- data/bin/commands/channels.rb +1 -155
- data/bin/commands/chat.rb +12 -7
- data/bin/commands/chat_scheduledMessages.rb +1 -0
- data/bin/commands/conversations.rb +71 -2
- data/bin/commands/dnd.rb +2 -0
- data/bin/commands/files.rb +6 -4
- data/bin/commands/files_remote.rb +2 -2
- data/bin/commands/groups.rb +1 -162
- data/bin/commands/im.rb +1 -63
- data/bin/commands/migration.rb +1 -0
- data/bin/commands/mpim.rb +1 -61
- data/bin/commands/oauth.rb +0 -13
- data/bin/commands/oauth_v2.rb +13 -1
- data/bin/commands/openid_connect.rb +27 -0
- data/bin/commands/pins.rb +2 -4
- data/bin/commands/reactions.rb +1 -0
- data/bin/commands/reminders.rb +6 -0
- data/bin/commands/rtm.rb +2 -2
- data/bin/commands/search.rb +4 -0
- data/bin/commands/stars.rb +7 -6
- data/bin/commands/team.rb +3 -0
- data/bin/commands/team_billing.rb +13 -0
- data/bin/commands/team_preferences.rb +13 -0
- data/bin/commands/tooling_tokens.rb +14 -0
- data/bin/commands/usergroups.rb +5 -0
- data/bin/commands/usergroups_users.rb +2 -0
- data/bin/commands/users.rb +4 -2
- data/bin/commands/users_profile.rb +5 -5
- data/bin/commands/views.rb +2 -2
- data/bin/commands/workflows.rb +38 -0
- data/bin/commands.rb +13 -9
- data/lib/slack/config.rb +1 -2
- data/lib/slack/events/request.rb +10 -4
- data/lib/slack/real_time/client.rb +6 -6
- data/lib/slack/real_time/concurrency/async.rb +6 -8
- data/lib/slack/real_time/concurrency.rb +0 -2
- data/lib/slack/real_time/config.rb +5 -14
- data/lib/slack/real_time/socket.rb +1 -2
- data/lib/slack/real_time/stores/base.rb +1 -6
- data/lib/slack/real_time/stores/starter.rb +6 -3
- data/lib/slack/real_time/stores/store.rb +5 -0
- data/lib/slack/version.rb +1 -1
- data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
- data/lib/slack/web/api/endpoints/admin_apps.rb +42 -6
- data/lib/slack/web/api/endpoints/admin_apps_approved.rb +2 -2
- data/lib/slack/web/api/endpoints/admin_apps_requests.rb +4 -2
- data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +2 -2
- data/lib/slack/web/api/endpoints/admin_auth_policy.rb +72 -0
- data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
- data/lib/slack/web/api/endpoints/admin_conversations.rb +233 -3
- data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +3 -3
- data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +3 -3
- data/lib/slack/web/api/endpoints/admin_emoji.rb +10 -10
- data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +7 -7
- data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +3 -3
- data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +2 -2
- data/lib/slack/web/api/endpoints/admin_teams.rb +7 -7
- data/lib/slack/web/api/endpoints/admin_teams_admins.rb +2 -2
- data/lib/slack/web/api/endpoints/admin_teams_owners.rb +2 -2
- data/lib/slack/web/api/endpoints/admin_teams_settings.rb +5 -5
- data/lib/slack/web/api/endpoints/admin_usergroups.rb +11 -11
- data/lib/slack/web/api/endpoints/admin_users.rb +23 -23
- data/lib/slack/web/api/endpoints/admin_users_session.rb +97 -3
- data/lib/slack/web/api/endpoints/api.rb +1 -3
- data/lib/slack/web/api/endpoints/apps.rb +2 -2
- data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
- data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
- data/lib/slack/web/api/endpoints/apps_manifest.rb +75 -0
- data/lib/slack/web/api/endpoints/auth.rb +1 -1
- data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
- data/lib/slack/web/api/endpoints/bots.rb +3 -1
- data/lib/slack/web/api/endpoints/calls.rb +15 -15
- data/lib/slack/web/api/endpoints/calls_participants.rb +4 -4
- data/lib/slack/web/api/endpoints/channels.rb +0 -259
- data/lib/slack/web/api/endpoints/chat.rb +65 -55
- data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +4 -2
- data/lib/slack/web/api/endpoints/conversations.rb +134 -24
- data/lib/slack/web/api/endpoints/dialog.rb +2 -2
- data/lib/slack/web/api/endpoints/dnd.rb +6 -3
- data/lib/slack/web/api/endpoints/files.rb +19 -15
- data/lib/slack/web/api/endpoints/files_comments.rb +1 -1
- data/lib/slack/web/api/endpoints/files_remote.rb +22 -22
- data/lib/slack/web/api/endpoints/groups.rb +0 -269
- data/lib/slack/web/api/endpoints/im.rb +0 -107
- data/lib/slack/web/api/endpoints/migration.rb +4 -2
- data/lib/slack/web/api/endpoints/mpim.rb +0 -102
- data/lib/slack/web/api/endpoints/oauth.rb +5 -27
- data/lib/slack/web/api/endpoints/oauth_v2.rb +24 -6
- data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
- data/lib/slack/web/api/endpoints/pins.rb +4 -9
- data/lib/slack/web/api/endpoints/reactions.rb +13 -11
- data/lib/slack/web/api/endpoints/reminders.rb +17 -5
- data/lib/slack/web/api/endpoints/rtm.rb +10 -10
- data/lib/slack/web/api/endpoints/search.rb +27 -13
- data/lib/slack/web/api/endpoints/stars.rb +11 -9
- data/lib/slack/web/api/endpoints/team.rb +11 -5
- data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
- data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
- data/lib/slack/web/api/endpoints/team_profile.rb +1 -1
- data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
- data/lib/slack/web/api/endpoints/usergroups.rb +26 -16
- data/lib/slack/web/api/endpoints/usergroups_users.rb +9 -5
- data/lib/slack/web/api/endpoints/users.rb +20 -18
- data/lib/slack/web/api/endpoints/users_profile.rb +7 -7
- data/lib/slack/web/api/endpoints/views.rb +13 -13
- data/lib/slack/web/api/endpoints/workflows.rb +61 -0
- data/lib/slack/web/api/endpoints.rb +26 -20
- data/lib/slack/web/api/errors/server_error.rb +37 -0
- data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -4
- data/lib/slack/web/api/errors.rb +394 -10
- data/lib/slack/web/api/mixins/conversations.id.rb +1 -3
- data/lib/slack/web/api/mixins/ids.id.rb +2 -2
- data/lib/slack/web/api/mixins/users.id.rb +1 -3
- data/lib/slack/web/api/mixins.rb +0 -2
- data/lib/slack/web/api/patches/chat.1.patch +6 -8
- data/lib/slack/web/api/templates/endpoints.erb +1 -2
- data/lib/slack/web/api/templates/method_spec.erb +1 -1
- data/lib/slack/web/config.rb +2 -0
- data/lib/slack/web/faraday/connection.rb +2 -2
- data/lib/slack/web/faraday/request.rb +2 -1
- data/lib/slack/web/faraday/response/raise_error.rb +12 -1
- data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
- data/lib/slack/web/pagination/cursor.rb +1 -5
- data/lib/slack-ruby-client.rb +2 -0
- data/lib/tasks/web.rake +11 -3
- data/slack-ruby-client.gemspec +2 -3
- data/spec/fixtures/slack/web/429_error.yml +50 -54
- data/spec/fixtures/slack/web/auth_test_error.yml +51 -18
- data/spec/fixtures/slack/web/auth_test_success.yml +50 -26
- data/spec/fixtures/slack/web/conversations_info.yml +167 -0
- data/spec/fixtures/slack/web/conversations_setTopic.yml +84 -0
- data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +172 -0
- data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +253 -0
- data/spec/fixtures/slack/web/paginated_users_list.yml +501 -69
- data/spec/fixtures/slack/web/rtm_connect.yml +267 -30
- data/spec/fixtures/slack/web/rtm_start.yml +771 -60
- data/spec/fixtures/slack/web/users_info.yml +153 -69
- data/spec/fixtures/slack/web/users_list.yml +102 -41
- data/spec/fixtures/slack/web/views_open_error.yml +49 -42
- data/spec/slack/events/request_spec.rb +13 -8
- data/spec/slack/real_time/client_spec.rb +35 -22
- data/spec/slack/real_time/concurrency/with_concurrency_spec.rb +10 -0
- data/spec/slack/real_time/concurrency/without_concurrency_spec.rb +10 -0
- data/spec/slack/real_time/event_handlers/bot_spec.rb +1 -1
- data/spec/slack/real_time/event_handlers/channel_spec.rb +1 -1
- data/spec/slack/real_time/event_handlers/im_spec.rb +5 -5
- data/spec/slack/real_time/event_handlers/user_spec.rb +2 -2
- data/spec/slack/real_time/rtm_connect_spec.rb +1 -1
- data/spec/slack/real_time/rtm_start_spec.rb +1 -1
- data/spec/slack/slack_spec.rb +3 -1
- data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/admin_apps_spec.rb +10 -0
- data/spec/slack/web/api/endpoints/admin_auth_policy_spec.rb +35 -0
- data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
- data/spec/slack/web/api/endpoints/{apps_permissions_scopes_spec.rb → admin_conversations_ekm_spec.rb} +1 -1
- data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +5 -5
- data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +85 -0
- data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +6 -6
- data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +10 -10
- data/spec/slack/web/api/endpoints/admin_teams_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +6 -6
- data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +28 -0
- data/spec/slack/web/api/endpoints/admin_users_spec.rb +15 -23
- data/spec/slack/web/api/endpoints/{apps_permissions_resources_spec.rb → apps_connections_spec.rb} +1 -1
- data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/apps_manifest_spec.rb +36 -0
- data/spec/slack/web/api/endpoints/apps_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/auth_teams_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/calls_participants_spec.rb +4 -4
- data/spec/slack/web/api/endpoints/calls_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +4 -6
- data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/dnd_spec.rb +0 -5
- data/spec/slack/web/api/endpoints/files_comments_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/files_remote_spec.rb +3 -3
- data/spec/slack/web/api/endpoints/files_spec.rb +4 -4
- data/spec/slack/web/api/endpoints/oauth_spec.rb +0 -11
- data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +6 -3
- data/spec/slack/web/api/endpoints/openid_connect_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/pins_spec.rb +1 -4
- data/spec/slack/web/api/endpoints/reactions_spec.rb +3 -3
- data/spec/slack/web/api/endpoints/reminders_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/team_billing_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/tooling_tokens_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +2 -2
- data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
- data/spec/slack/web/api/error_spec.rb +5 -7
- data/spec/slack/web/api/errors/slack_error_spec.rb +21 -26
- data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
- data/spec/slack/web/api/mixins/conversations_spec.rb +11 -9
- data/spec/slack/web/api/mixins/users_spec.rb +1 -1
- data/spec/slack/web/api/pagination/cursor_spec.rb +1 -3
- data/spec/slack/web/client_spec.rb +112 -16
- data/spec/slack/web/faraday/request_spec.rb +80 -0
- data/spec/slack/web/faraday/response/raise_error_spec.rb +8 -6
- data/spec/spec_helper.rb +1 -1
- data/spec/support/real_time/connected_client.rb +1 -7
- data/spec/support/vcr.rb +36 -1
- metadata +58 -155
- data/examples/hi_real_time/Gemfile +0 -6
- data/examples/hi_real_time/hi.gif +0 -0
- data/examples/hi_real_time/hi.rb +0 -41
- data/examples/hi_real_time_async_celluloid/Gemfile +0 -7
- data/examples/hi_real_time_async_celluloid/Procfile +0 -2
- data/examples/hi_real_time_async_celluloid/hi.rb +0 -39
- data/examples/hi_real_time_async_eventmachine/Gemfile +0 -7
- data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
- data/examples/hi_real_time_async_eventmachine/hi.rb +0 -39
- data/lib/slack/real_time/concurrency/celluloid.rb +0 -142
- data/lib/slack/real_time/concurrency/eventmachine.rb +0 -85
- data/lib/slack/web/api/mixins/channels.id.json +0 -20
- data/lib/slack/web/api/mixins/channels.id.rb +0 -27
- data/lib/slack/web/api/mixins/groups.id.json +0 -20
- data/lib/slack/web/api/mixins/groups.id.rb +0 -27
- data/spec/fixtures/slack/web/503_error.yml +0 -14
- data/spec/fixtures/slack/web/channels_info.yml +0 -139
- data/spec/fixtures/slack/web/groups_info.yml +0 -43
- data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -116
- data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -57
- data/spec/slack/web/api/endpoints/admin_conversations_whitelist_spec.rb +0 -32
- data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +0 -16
- data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +0 -19
- data/spec/slack/web/api/endpoints/conversations_spec.rb +0 -101
- data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -13
- data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -13
- data/spec/slack/web/api/endpoints/im_spec.rb +0 -39
- data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -39
- data/spec/slack/web/api/endpoints/views_spec.rb +0 -29
- data/spec/slack/web/api/errors/service_unavailable_spec.rb +0 -17
- data/spec/slack/web/api/mixins/channels_spec.rb +0 -43
- data/spec/slack/web/api/mixins/groups_spec.rb +0 -43
data/bin/commands.rb
CHANGED
@@ -1,13 +1,16 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
# This file was auto-generated by lib/tasks/web.rake
|
3
3
|
|
4
|
+
require 'commands/admin_analytics'
|
4
5
|
require 'commands/admin_apps'
|
5
6
|
require 'commands/admin_apps_approved'
|
6
7
|
require 'commands/admin_apps_requests'
|
7
8
|
require 'commands/admin_apps_restricted'
|
9
|
+
require 'commands/admin_auth_policy'
|
10
|
+
require 'commands/admin_barriers'
|
8
11
|
require 'commands/admin_conversations'
|
12
|
+
require 'commands/admin_conversations_ekm'
|
9
13
|
require 'commands/admin_conversations_restrictAccess'
|
10
|
-
require 'commands/admin_conversations_whitelist'
|
11
14
|
require 'commands/admin_emoji'
|
12
15
|
require 'commands/admin_inviteRequests'
|
13
16
|
require 'commands/admin_inviteRequests_approved'
|
@@ -21,15 +24,14 @@ require 'commands/admin_users'
|
|
21
24
|
require 'commands/admin_users_session'
|
22
25
|
require 'commands/api'
|
23
26
|
require 'commands/apps'
|
24
|
-
require 'commands/
|
25
|
-
require 'commands/
|
26
|
-
require 'commands/
|
27
|
-
require 'commands/apps_permissions_users'
|
27
|
+
require 'commands/apps_connections'
|
28
|
+
require 'commands/apps_event_authorizations'
|
29
|
+
require 'commands/apps_manifest'
|
28
30
|
require 'commands/auth'
|
31
|
+
require 'commands/auth_teams'
|
29
32
|
require 'commands/bots'
|
30
33
|
require 'commands/calls'
|
31
34
|
require 'commands/calls_participants'
|
32
|
-
require 'commands/channels'
|
33
35
|
require 'commands/chat'
|
34
36
|
require 'commands/chat_scheduledMessages'
|
35
37
|
require 'commands/conversations'
|
@@ -39,12 +41,10 @@ require 'commands/emoji'
|
|
39
41
|
require 'commands/files'
|
40
42
|
require 'commands/files_comments'
|
41
43
|
require 'commands/files_remote'
|
42
|
-
require 'commands/groups'
|
43
|
-
require 'commands/im'
|
44
44
|
require 'commands/migration'
|
45
|
-
require 'commands/mpim'
|
46
45
|
require 'commands/oauth'
|
47
46
|
require 'commands/oauth_v2'
|
47
|
+
require 'commands/openid_connect'
|
48
48
|
require 'commands/pins'
|
49
49
|
require 'commands/reactions'
|
50
50
|
require 'commands/reminders'
|
@@ -52,7 +52,10 @@ require 'commands/rtm'
|
|
52
52
|
require 'commands/search'
|
53
53
|
require 'commands/stars'
|
54
54
|
require 'commands/team'
|
55
|
+
require 'commands/team_billing'
|
56
|
+
require 'commands/team_preferences'
|
55
57
|
require 'commands/team_profile'
|
58
|
+
require 'commands/tooling_tokens'
|
56
59
|
require 'commands/usergroups'
|
57
60
|
require 'commands/usergroups_users'
|
58
61
|
require 'commands/users'
|
@@ -60,3 +63,4 @@ require 'commands/users_admin'
|
|
60
63
|
require 'commands/users_prefs'
|
61
64
|
require 'commands/users_profile'
|
62
65
|
require 'commands/views'
|
66
|
+
require 'commands/workflows'
|
data/lib/slack/config.rb
CHANGED
data/lib/slack/events/request.rb
CHANGED
@@ -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.
|
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.
|
30
|
+
@signature ||= http_request.get_header('HTTP_X_SLACK_SIGNATURE')
|
29
31
|
end
|
30
32
|
|
31
33
|
# Signature version.
|
@@ -35,7 +37,11 @@ module Slack
|
|
35
37
|
|
36
38
|
# Request body.
|
37
39
|
def body
|
38
|
-
@body ||=
|
40
|
+
@body ||= begin
|
41
|
+
body = http_request.body.read
|
42
|
+
http_request.body.rewind
|
43
|
+
body
|
44
|
+
end
|
39
45
|
end
|
40
46
|
|
41
47
|
# Returns true if the signature coming from Slack has expired.
|
@@ -47,7 +53,7 @@ module Slack
|
|
47
53
|
def valid?
|
48
54
|
raise MissingSigningSecret unless signing_secret
|
49
55
|
|
50
|
-
digest = OpenSSL::Digest
|
56
|
+
digest = OpenSSL::Digest.new('SHA256')
|
51
57
|
signature_basestring = [version, timestamp, body].join(':')
|
52
58
|
hex_hash = OpenSSL::HMAC.hexdigest(digest, signing_secret, signature_basestring)
|
53
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,11 +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)
|
23
|
-
attr_accessor :logger
|
20
|
+
attr_accessor :web_client, :store, :url, *Config::ATTRIBUTES
|
24
21
|
|
25
22
|
protected :store_class, :store_class=
|
26
23
|
|
@@ -134,7 +131,7 @@ module Slack
|
|
134
131
|
rescue Slack::Web::Api::Errors::SlackError => e
|
135
132
|
# stop pinging if bot was uninstalled
|
136
133
|
case e.message
|
137
|
-
when 'account_inactive', 'invalid_auth'
|
134
|
+
when 'account_inactive', 'invalid_auth'
|
138
135
|
logger.warn(to_s) { e.message }
|
139
136
|
raise e
|
140
137
|
end
|
@@ -202,6 +199,7 @@ module Slack
|
|
202
199
|
end
|
203
200
|
|
204
201
|
attr_reader :callbacks
|
202
|
+
|
205
203
|
def socket_class
|
206
204
|
concurrency::Socket
|
207
205
|
end
|
@@ -251,6 +249,8 @@ module Slack
|
|
251
249
|
end
|
252
250
|
|
253
251
|
def run_handlers(type, data)
|
252
|
+
return unless store.class.events
|
253
|
+
|
254
254
|
handlers = store.class.events[type.to_s]
|
255
255
|
handlers&.each do |handler|
|
256
256
|
store.instance_exec(data, &handler)
|
@@ -45,14 +45,12 @@ module Slack
|
|
45
45
|
@client_task&.stop
|
46
46
|
|
47
47
|
@client_task = task.async do |subtask|
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
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
|
@@ -17,7 +17,8 @@ module Slack
|
|
17
17
|
logger
|
18
18
|
].freeze
|
19
19
|
|
20
|
-
attr_accessor(*Config::ATTRIBUTES)
|
20
|
+
attr_accessor(*Config::ATTRIBUTES - [:concurrency])
|
21
|
+
attr_writer :concurrency
|
21
22
|
|
22
23
|
def reset
|
23
24
|
self.websocket_ping = 30
|
@@ -37,19 +38,9 @@ module Slack
|
|
37
38
|
private
|
38
39
|
|
39
40
|
def detect_concurrency
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
rescue LoadError, NameError
|
44
|
-
false # could not be loaded, missing dependencies
|
45
|
-
end
|
46
|
-
end
|
47
|
-
|
48
|
-
raise(
|
49
|
-
NoConcurrencyError,
|
50
|
-
'Missing concurrency. Add async-websocket, faye-websocket ' \
|
51
|
-
'or celluloid-io to your Gemfile.'
|
52
|
-
)
|
41
|
+
Slack::RealTime::Concurrency.const_get(:Async)
|
42
|
+
rescue LoadError, NameError
|
43
|
+
raise NoConcurrencyError, 'Missing concurrency. Add async-websocket to your Gemfile.'
|
53
44
|
end
|
54
45
|
end
|
55
46
|
|
@@ -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
@@ -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
|
@@ -9,32 +9,68 @@ module Slack
|
|
9
9
|
#
|
10
10
|
# Approve an app for installation on a workspace.
|
11
11
|
#
|
12
|
-
# @option options [
|
12
|
+
# @option options [string] :app_id
|
13
13
|
# The id of the app to approve.
|
14
|
-
# @option options [Object] :
|
14
|
+
# @option options [Object] :enterprise_id
|
15
|
+
# The ID of the enterprise to approve the app on.
|
16
|
+
# @option options [string] :request_id
|
15
17
|
# The id of the request to approve.
|
16
18
|
# @option options [Object] :team_id
|
17
|
-
# .
|
19
|
+
# The ID of the workspace to approve the app on.
|
18
20
|
# @see https://api.slack.com/methods/admin.apps.approve
|
19
21
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps/admin.apps.approve.json
|
20
22
|
def admin_apps_approve(options = {})
|
21
23
|
post('admin.apps.approve', options)
|
22
24
|
end
|
23
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
|
+
|
24
42
|
#
|
25
43
|
# Restrict an app for installation on a workspace.
|
26
44
|
#
|
27
|
-
# @option options [
|
45
|
+
# @option options [string] :app_id
|
28
46
|
# The id of the app to restrict.
|
29
|
-
# @option options [Object] :
|
47
|
+
# @option options [Object] :enterprise_id
|
48
|
+
# The ID of the enterprise to approve the app on.
|
49
|
+
# @option options [string] :request_id
|
30
50
|
# The id of the request to restrict.
|
31
51
|
# @option options [Object] :team_id
|
32
|
-
# .
|
52
|
+
# The ID of the workspace to approve the app on.
|
33
53
|
# @see https://api.slack.com/methods/admin.apps.restrict
|
34
54
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/admin.apps/admin.apps.restrict.json
|
35
55
|
def admin_apps_restrict(options = {})
|
36
56
|
post('admin.apps.restrict', options)
|
37
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
|
38
74
|
end
|
39
75
|
end
|
40
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 [
|
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 [
|
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
|
# .
|
@@ -9,9 +9,11 @@ module Slack
|
|
9
9
|
#
|
10
10
|
# List app requests for a team/workspace.
|
11
11
|
#
|
12
|
-
# @option options [
|
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
|
-
# @option options [Object] :
|
14
|
+
# @option options [Object] :enterprise_id
|
15
|
+
# .
|
16
|
+
# @option options [integer] :limit
|
15
17
|
# The maximum number of items to return. Must be between 1 - 1000 both inclusive.
|
16
18
|
# @option options [Object] :team_id
|
17
19
|
# .
|
@@ -9,11 +9,11 @@ module Slack
|
|
9
9
|
#
|
10
10
|
# List restricted apps for an org or workspace.
|
11
11
|
#
|
12
|
-
# @option options [
|
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 [
|
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
|
@@ -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 [array] :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 [array] :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 [string] :cursor
|
43
|
+
# Set cursor to next_cursor returned by the previous call to list items in the next page.
|
44
|
+
# @option options [integer] :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 [array] :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 [array] :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
|