slack-ruby-client 0.13.0 → 0.17.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.
- checksums.yaml +4 -4
- data/.github/FUNDING.yml +1 -0
- data/.gitignore +1 -0
- data/.rubocop.yml +24 -5
- data/.rubocop_todo.yml +100 -54
- data/.travis.yml +4 -8
- data/CHANGELOG.md +118 -35
- data/CONTRIBUTING.md +17 -6
- data/Dangerfile +2 -0
- data/Gemfile +10 -5
- data/LICENSE.md +1 -1
- data/README.md +185 -48
- data/Rakefile +2 -1
- data/UPGRADING.md +30 -2
- data/bin/commands.rb +32 -0
- data/bin/commands/admin_analytics.rb +16 -0
- data/bin/commands/admin_apps.rb +40 -0
- data/bin/commands/admin_apps_approved.rb +17 -0
- data/bin/commands/admin_apps_requests.rb +16 -0
- data/bin/commands/admin_apps_restricted.rb +17 -0
- data/bin/commands/admin_barriers.rb +47 -0
- data/bin/commands/admin_conversations.rb +159 -0
- data/bin/commands/admin_conversations_ekm.rb +17 -0
- data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
- data/bin/commands/admin_conversations_whitelist.rb +37 -0
- data/bin/commands/admin_emoji.rb +54 -0
- data/bin/commands/admin_inviteRequests.rb +36 -0
- data/bin/commands/admin_inviteRequests_approved.rb +16 -0
- data/bin/commands/admin_inviteRequests_denied.rb +16 -0
- data/bin/commands/admin_teams.rb +27 -0
- data/bin/commands/admin_teams_admins.rb +16 -0
- data/bin/commands/admin_teams_owners.rb +16 -0
- data/bin/commands/admin_teams_settings.rb +64 -0
- data/bin/commands/admin_usergroups.rb +48 -0
- data/bin/commands/admin_users.rb +97 -0
- data/bin/commands/admin_users_session.rb +38 -0
- data/bin/commands/api.rb +1 -1
- data/bin/commands/apps.rb +15 -0
- data/bin/commands/apps_connections.rb +13 -0
- data/bin/commands/apps_event_authorizations.rb +16 -0
- data/bin/commands/apps_permissions.rb +1 -0
- data/bin/commands/apps_permissions_resources.rb +1 -0
- data/bin/commands/apps_permissions_scopes.rb +1 -0
- data/bin/commands/apps_permissions_users.rb +1 -0
- data/bin/commands/auth.rb +1 -0
- data/bin/commands/auth_teams.rb +16 -0
- data/bin/commands/bots.rb +2 -0
- data/bin/commands/calls.rb +52 -0
- data/bin/commands/calls_participants.rb +25 -0
- data/bin/commands/channels.rb +1 -153
- data/bin/commands/chat.rb +51 -10
- data/bin/commands/chat_scheduledMessages.rb +19 -0
- data/bin/commands/conversations.rb +16 -3
- data/bin/commands/dialog.rb +1 -0
- data/bin/commands/dnd.rb +5 -2
- data/bin/commands/emoji.rb +1 -0
- data/bin/commands/files.rb +8 -17
- data/bin/commands/files_comments.rb +1 -21
- data/bin/commands/files_remote.rb +78 -0
- data/bin/commands/groups.rb +1 -161
- data/bin/commands/im.rb +1 -62
- data/bin/commands/migration.rb +2 -0
- data/bin/commands/mpim.rb +1 -60
- data/bin/commands/oauth.rb +2 -1
- data/bin/commands/oauth_v2.rb +17 -0
- data/bin/commands/pins.rb +1 -4
- data/bin/commands/reactions.rb +3 -3
- data/bin/commands/reminders.rb +1 -0
- data/bin/commands/rtm.rb +1 -0
- data/bin/commands/search.rb +4 -0
- data/bin/commands/stars.rb +1 -0
- data/bin/commands/team.rb +5 -0
- data/bin/commands/team_profile.rb +1 -0
- data/bin/commands/usergroups.rb +6 -0
- data/bin/commands/usergroups_users.rb +3 -0
- data/bin/commands/users.rb +5 -3
- data/bin/commands/users_admin.rb +1 -0
- data/bin/commands/users_prefs.rb +1 -0
- data/bin/commands/users_profile.rb +6 -5
- data/bin/commands/views.rb +48 -0
- data/bin/commands/workflows.rb +38 -0
- data/bin/slack +2 -3
- data/examples/hi_real_time_and_web/Gemfile +1 -0
- data/examples/hi_real_time_and_web/hi.rb +7 -3
- data/examples/hi_real_time_async_async/Gemfile +1 -0
- data/examples/hi_real_time_async_async/hi.rb +6 -2
- data/examples/hi_web/Gemfile +1 -0
- data/examples/hi_web/hi.rb +1 -0
- data/examples/new_ticket/Gemfile +1 -0
- data/examples/new_ticket/new_ticket.rb +1 -0
- data/lib/slack-ruby-client.rb +10 -4
- data/lib/slack.rb +1 -0
- data/lib/slack/config.rb +1 -0
- data/lib/slack/events/config.rb +32 -0
- data/lib/slack/events/request.rb +70 -0
- data/lib/slack/logger.rb +6 -5
- data/lib/slack/messages/formatting.rb +1 -0
- data/lib/slack/messages/message.rb +1 -4
- data/lib/slack/real_time/api/message.rb +3 -1
- data/lib/slack/real_time/api/message_id.rb +1 -0
- data/lib/slack/real_time/api/ping.rb +5 -2
- data/lib/slack/real_time/api/typing.rb +3 -1
- data/lib/slack/real_time/client.rb +98 -28
- data/lib/slack/real_time/concurrency.rb +1 -2
- data/lib/slack/real_time/concurrency/async.rb +79 -6
- data/lib/slack/real_time/config.rb +6 -10
- data/lib/slack/real_time/models.rb +1 -0
- data/lib/slack/real_time/models/base.rb +1 -4
- data/lib/slack/real_time/models/bot.rb +1 -0
- data/lib/slack/real_time/models/channel.rb +1 -0
- data/lib/slack/real_time/models/group.rb +1 -0
- data/lib/slack/real_time/models/im.rb +1 -0
- data/lib/slack/real_time/models/team.rb +1 -0
- data/lib/slack/real_time/models/user.rb +1 -0
- data/lib/slack/real_time/socket.rb +44 -15
- data/lib/slack/real_time/stores.rb +1 -0
- data/lib/slack/real_time/stores/base.rb +4 -1
- data/lib/slack/real_time/stores/starter.rb +11 -0
- data/lib/slack/real_time/stores/store.rb +28 -25
- data/lib/slack/version.rb +2 -1
- data/lib/slack/web/api/endpoints.rb +64 -0
- data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
- data/lib/slack/web/api/endpoints/admin_apps.rb +62 -0
- data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_apps_requests.rb +33 -0
- data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_barriers.rb +82 -0
- data/lib/slack/web/api/endpoints/admin_conversations.rb +246 -0
- data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
- data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +64 -0
- data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
- data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
- data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
- data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
- data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
- data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
- data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
- data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
- data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
- data/lib/slack/web/api/endpoints/admin_users.rb +161 -0
- data/lib/slack/web/api/endpoints/admin_users_session.rb +66 -0
- data/lib/slack/web/api/endpoints/api.rb +1 -2
- data/lib/slack/web/api/endpoints/apps.rb +27 -0
- 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_permissions.rb +1 -0
- data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +1 -0
- data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +1 -0
- data/lib/slack/web/api/endpoints/apps_permissions_users.rb +1 -0
- data/lib/slack/web/api/endpoints/auth.rb +1 -0
- data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
- data/lib/slack/web/api/endpoints/bots.rb +3 -0
- data/lib/slack/web/api/endpoints/calls.rb +83 -0
- data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
- data/lib/slack/web/api/endpoints/channels.rb +2 -243
- data/lib/slack/web/api/endpoints/chat.rb +112 -21
- data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
- data/lib/slack/web/api/endpoints/conversations.rb +40 -19
- data/lib/slack/web/api/endpoints/dialog.rb +1 -0
- data/lib/slack/web/api/endpoints/dnd.rb +7 -1
- data/lib/slack/web/api/endpoints/emoji.rb +1 -0
- data/lib/slack/web/api/endpoints/files.rb +10 -17
- data/lib/slack/web/api/endpoints/files_comments.rb +1 -33
- data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
- data/lib/slack/web/api/endpoints/groups.rb +1 -253
- data/lib/slack/web/api/endpoints/im.rb +1 -101
- data/lib/slack/web/api/endpoints/migration.rb +3 -0
- data/lib/slack/web/api/endpoints/mpim.rb +1 -96
- data/lib/slack/web/api/endpoints/oauth.rb +2 -4
- data/lib/slack/web/api/endpoints/oauth_v2.rb +30 -0
- data/lib/slack/web/api/endpoints/pins.rb +4 -11
- data/lib/slack/web/api/endpoints/reactions.rb +10 -9
- data/lib/slack/web/api/endpoints/reminders.rb +1 -0
- data/lib/slack/web/api/endpoints/rtm.rb +1 -0
- data/lib/slack/web/api/endpoints/search.rb +7 -0
- data/lib/slack/web/api/endpoints/stars.rb +3 -2
- data/lib/slack/web/api/endpoints/team.rb +9 -0
- data/lib/slack/web/api/endpoints/team_profile.rb +1 -0
- data/lib/slack/web/api/endpoints/usergroups.rb +11 -0
- data/lib/slack/web/api/endpoints/usergroups_users.rb +5 -0
- data/lib/slack/web/api/endpoints/users.rb +8 -7
- data/lib/slack/web/api/endpoints/users_admin.rb +1 -0
- data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
- data/lib/slack/web/api/endpoints/users_profile.rb +4 -3
- data/lib/slack/web/api/endpoints/views.rb +97 -0
- data/lib/slack/web/api/endpoints/workflows.rb +61 -0
- data/lib/slack/web/api/error.rb +1 -0
- data/lib/slack/web/api/errors.rb +848 -0
- data/lib/slack/web/api/errors/internal_error.rb +14 -0
- data/lib/slack/web/api/errors/slack_error.rb +14 -1
- data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -0
- data/lib/slack/web/api/mixins.rb +2 -0
- data/lib/slack/web/api/mixins/channels.id.rb +2 -3
- data/lib/slack/web/api/mixins/conversations.id.rb +25 -0
- data/lib/slack/web/api/mixins/groups.id.rb +2 -3
- data/lib/slack/web/api/mixins/ids.id.rb +3 -2
- data/lib/slack/web/api/mixins/users.id.rb +2 -3
- data/lib/slack/web/api/mixins/users.search.rb +1 -0
- data/lib/slack/web/api/patches/chat.1.patch +71 -0
- data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
- data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
- data/lib/slack/web/api/templates/command.erb +1 -0
- data/lib/slack/web/api/templates/commands.erb +1 -0
- data/lib/slack/web/api/templates/endpoints.erb +2 -0
- data/lib/slack/web/api/templates/errors.erb +20 -0
- data/lib/slack/web/api/templates/method.erb +5 -1
- data/lib/slack/web/api/templates/method_spec.erb +2 -1
- data/lib/slack/web/client.rb +2 -1
- data/lib/slack/web/config.rb +3 -0
- data/lib/slack/web/faraday/connection.rb +24 -20
- data/lib/slack/web/faraday/request.rb +1 -0
- data/lib/slack/web/faraday/response/raise_error.rb +21 -6
- data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
- data/lib/slack/web/pagination/cursor.rb +6 -2
- data/lib/slack_ruby_client.rb +1 -0
- data/lib/tasks/git.rake +1 -0
- data/lib/tasks/real_time.rake +15 -5
- data/lib/tasks/update.rake +1 -0
- data/lib/tasks/web.rake +39 -10
- data/screenshots/create-app.png +0 -0
- data/slack-ruby-client.gemspec +8 -4
- data/spec/fixtures/slack/web/channels_info.yml +108 -15
- data/spec/fixtures/slack/web/{groups_info.yml → conversations_info.yml} +4 -4
- data/spec/fixtures/slack/web/conversations_setTopic.yml +69 -0
- data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +142 -0
- data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +208 -0
- data/spec/fixtures/slack/web/views_open_error.yml +76 -0
- data/spec/integration/integration_spec.rb +116 -49
- data/spec/slack/config_spec.rb +2 -0
- data/spec/slack/events/config_spec.rb +33 -0
- data/spec/slack/events/request_spec.rb +184 -0
- data/spec/slack/messages/formatting_spec.rb +25 -13
- data/spec/slack/real_time/api/message_spec.rb +6 -1
- data/spec/slack/real_time/api/ping_spec.rb +2 -0
- data/spec/slack/real_time/api/typing_spec.rb +5 -1
- data/spec/slack/real_time/client_spec.rb +228 -30
- data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
- 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 +2 -1
- data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -6
- data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +2 -1
- data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
- data/spec/slack/real_time/event_handlers/im_spec.rb +4 -3
- data/spec/slack/real_time/event_handlers/team_spec.rb +3 -1
- data/spec/slack/real_time/event_handlers/user_spec.rb +1 -0
- data/spec/slack/real_time/rtm_connect_spec.rb +2 -1
- data/spec/slack/real_time/rtm_start_spec.rb +2 -1
- data/spec/slack/real_time/store_spec.rb +2 -1
- data/spec/slack/slack_spec.rb +37 -5
- data/spec/slack/version_spec.rb +2 -1
- data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/admin_barriers_spec.rb +38 -0
- data/spec/slack/web/api/endpoints/admin_conversations_ekm_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_conversations_restrictAccess_spec.rb +32 -0
- data/spec/slack/web/api/endpoints/admin_conversations_spec.rb +93 -0
- data/spec/slack/web/api/endpoints/admin_emoji_spec.rb +37 -0
- data/spec/slack/web/api/endpoints/admin_inviteRequests_approved_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_inviteRequests_denied_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_inviteRequests_spec.rb +18 -0
- data/spec/slack/web/api/endpoints/admin_teams_admins_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/admin_teams_owners_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/admin_teams_settings_spec.rb +53 -0
- data/spec/slack/web/api/endpoints/admin_teams_spec.rb +16 -0
- data/spec/slack/web/api/endpoints/admin_usergroups_spec.rb +37 -0
- data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +21 -0
- data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
- data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_connections_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/apps_event_authorizations_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/apps_permissions_resources_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_permissions_scopes_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +3 -2
- data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +4 -3
- data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
- data/spec/slack/web/api/endpoints/auth_teams_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/calls_participants_spec.rb +24 -0
- data/spec/slack/web/api/endpoints/calls_spec.rb +31 -0
- data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/conversations_spec.rb +21 -12
- data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +5 -1
- data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +112 -36
- data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +12 -4
- data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +6 -1
- data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
- data/spec/slack/web/api/endpoints/dnd_spec.rb +6 -0
- data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/files_comments_spec.rb +3 -21
- data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
- data/spec/slack/web/api/endpoints/files_spec.rb +5 -4
- data/spec/slack/web/api/endpoints/im_spec.rb +1 -31
- data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/mpim_spec.rb +1 -31
- data/spec/slack/web/api/endpoints/oauth_spec.rb +4 -14
- data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/pins_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
- data/spec/slack/web/api/endpoints/reminders_spec.rb +3 -2
- data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +3 -2
- data/spec/slack/web/api/endpoints/users_admin_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/users_prefs_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/workflows_spec.rb +26 -0
- data/spec/slack/web/api/error_spec.rb +4 -2
- data/spec/slack/web/api/errors/slack_error_spec.rb +26 -2
- data/spec/slack/web/api/mixins/channels_spec.rb +17 -7
- data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
- data/spec/slack/web/api/mixins/conversations_spec.rb +43 -0
- data/spec/slack/web/api/mixins/groups_spec.rb +17 -7
- data/spec/slack/web/api/mixins/users_spec.rb +17 -8
- data/spec/slack/web/api/pagination/cursor_spec.rb +40 -10
- data/spec/slack/web/client_spec.rb +166 -18
- data/spec/slack/web/faraday/response/raise_error_spec.rb +47 -12
- data/spec/spec_helper.rb +8 -1
- data/spec/support/queue_with_timeout.rb +5 -4
- data/spec/support/real_time/concurrency/mock.rb +1 -0
- data/spec/support/real_time/connected_client.rb +9 -3
- data/spec/support/real_time/event.rb +1 -0
- data/spec/support/token.rb +1 -0
- data/spec/support/vcr.rb +5 -0
- metadata +226 -52
- data/examples/hi_real_time/Gemfile +0 -5
- data/examples/hi_real_time/hi.gif +0 -0
- data/examples/hi_real_time/hi.rb +0 -37
- data/examples/hi_real_time_async_celluloid/Gemfile +0 -6
- data/examples/hi_real_time_async_celluloid/Procfile +0 -2
- data/examples/hi_real_time_async_celluloid/hi.rb +0 -35
- data/examples/hi_real_time_async_eventmachine/Gemfile +0 -6
- data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
- data/examples/hi_real_time_async_eventmachine/hi.rb +0 -35
- data/lib/slack/real_time/concurrency/celluloid.rb +0 -103
- data/lib/slack/real_time/concurrency/eventmachine.rb +0 -66
- data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
- data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
- data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -21
- data/lib/slack/web/api/patches/chat.4.postEphemeral-attachments-support.patch +0 -17
- data/lib/slack/web/api/patches/chat.5.postEphemeral-text-or-attachments.patch +0 -13
- data/screenshots/register-bot.png +0 -0
- data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -106
- data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -47
- data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -11
- data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -11
- data/spec/slack/web/api/errors/service_unavailable_spec.rb +0 -14
|
@@ -1,25 +1,25 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module RealTime
|
|
3
4
|
class Socket
|
|
4
5
|
attr_accessor :url
|
|
5
6
|
attr_accessor :options
|
|
6
7
|
attr_reader :driver
|
|
7
|
-
attr_reader :logger
|
|
8
|
-
protected :logger
|
|
9
8
|
|
|
10
9
|
def initialize(url, options = {})
|
|
11
10
|
@url = url
|
|
12
|
-
@options = options
|
|
11
|
+
@options = options.dup
|
|
13
12
|
@driver = nil
|
|
14
|
-
@logger = options.delete(:logger) || Slack::RealTime::Config.logger || Slack::Config.logger
|
|
13
|
+
@logger = @options.delete(:logger) || Slack::RealTime::Config.logger || Slack::Config.logger
|
|
14
|
+
@last_message_at = nil
|
|
15
15
|
end
|
|
16
16
|
|
|
17
17
|
def send_data(message)
|
|
18
18
|
logger.debug("#{self.class}##{__method__}") { message }
|
|
19
19
|
case message
|
|
20
|
-
when Numeric then driver.text(message.to_s)
|
|
21
|
-
when String then driver.text(message)
|
|
22
|
-
when Array then driver.binary(message)
|
|
20
|
+
when Numeric then @driver.text(message.to_s)
|
|
21
|
+
when String then @driver.text(message)
|
|
22
|
+
when Array then @driver.binary(message)
|
|
23
23
|
else false
|
|
24
24
|
end
|
|
25
25
|
end
|
|
@@ -28,24 +28,31 @@ module Slack
|
|
|
28
28
|
return if connected?
|
|
29
29
|
|
|
30
30
|
connect
|
|
31
|
-
logger.debug("#{self.class}##{__method__}") { driver.class }
|
|
31
|
+
logger.debug("#{self.class}##{__method__}") { @driver.class }
|
|
32
|
+
|
|
33
|
+
@driver.on :message do
|
|
34
|
+
@last_message_at = current_time
|
|
35
|
+
end
|
|
32
36
|
|
|
33
|
-
yield driver if block_given?
|
|
37
|
+
yield @driver if block_given?
|
|
34
38
|
end
|
|
35
39
|
|
|
40
|
+
# Gracefully shut down the connection.
|
|
36
41
|
def disconnect!
|
|
37
|
-
driver.close
|
|
42
|
+
@driver.close
|
|
43
|
+
ensure
|
|
44
|
+
close
|
|
38
45
|
end
|
|
39
46
|
|
|
40
47
|
def connected?
|
|
41
|
-
|
|
48
|
+
!@driver.nil?
|
|
42
49
|
end
|
|
43
50
|
|
|
44
51
|
def start_sync(client)
|
|
45
52
|
thread = start_async(client)
|
|
46
|
-
thread
|
|
53
|
+
thread&.join
|
|
47
54
|
rescue Interrupt
|
|
48
|
-
thread
|
|
55
|
+
thread&.exit
|
|
49
56
|
end
|
|
50
57
|
|
|
51
58
|
# @return [#join]
|
|
@@ -53,12 +60,34 @@ module Slack
|
|
|
53
60
|
raise NotImplementedError, "Expected #{self.class} to implement #{__method__}."
|
|
54
61
|
end
|
|
55
62
|
|
|
63
|
+
def restart_async(_client, _url)
|
|
64
|
+
raise NotImplementedError, "Expected #{self.class} to implement #{__method__}."
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
def time_since_last_message
|
|
68
|
+
return 0 unless @last_message_at
|
|
69
|
+
|
|
70
|
+
current_time - @last_message_at
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
def current_time
|
|
74
|
+
Process.clock_gettime(Process::CLOCK_MONOTONIC)
|
|
75
|
+
end
|
|
76
|
+
|
|
56
77
|
def close
|
|
78
|
+
# When you call `driver.emit(:close)`, it will typically end up calling `client.close`
|
|
79
|
+
# which will call `@socket.close` and end up back here. In order to break this infinite
|
|
80
|
+
# recursion, we check and set `@driver = nil` before invoking `client.close`.
|
|
81
|
+
return unless (driver = @driver)
|
|
82
|
+
|
|
57
83
|
@driver = nil
|
|
84
|
+
driver.emit(:close)
|
|
58
85
|
end
|
|
59
86
|
|
|
60
87
|
protected
|
|
61
88
|
|
|
89
|
+
attr_reader :logger
|
|
90
|
+
|
|
62
91
|
def addr
|
|
63
92
|
URI(url).host
|
|
64
93
|
end
|
|
@@ -69,9 +98,9 @@ module Slack
|
|
|
69
98
|
|
|
70
99
|
def port
|
|
71
100
|
case (uri = URI(url)).scheme
|
|
72
|
-
when 'wss'
|
|
101
|
+
when 'wss', 'https'
|
|
73
102
|
URI::HTTPS::DEFAULT_PORT
|
|
74
|
-
when 'ws', 'http'
|
|
103
|
+
when 'ws', 'http'
|
|
75
104
|
URI::HTTP::DEFAULT_PORT
|
|
76
105
|
else
|
|
77
106
|
uri.port
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module RealTime
|
|
3
4
|
module Stores
|
|
@@ -14,6 +15,16 @@ module Slack
|
|
|
14
15
|
|
|
15
16
|
### RealTime Events
|
|
16
17
|
|
|
18
|
+
# An enterprise grid migration has started on an external workspace..
|
|
19
|
+
# @see https://api.slack.com/events/external_org_migration_started
|
|
20
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_started.json
|
|
21
|
+
# on :external_org_migration_started do |data|
|
|
22
|
+
|
|
23
|
+
# An enterprise grid migration has finished on an external workspace..
|
|
24
|
+
# @see https://api.slack.com/events/external_org_migration_finished
|
|
25
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_finished.json
|
|
26
|
+
# on :external_org_migration_finished do |data|
|
|
27
|
+
|
|
17
28
|
# A private channel was deleted.
|
|
18
29
|
# @see https://api.slack.com/events/group_deleted
|
|
19
30
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_deleted.json
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module RealTime
|
|
3
4
|
module Stores
|
|
@@ -26,44 +27,44 @@ module Slack
|
|
|
26
27
|
@users = {}
|
|
27
28
|
end
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
@users[data.id] = @users.key?(data.id) ? @users[data.id].merge(user) : user
|
|
33
|
-
end
|
|
30
|
+
attrs.users&.each do |data|
|
|
31
|
+
user = Models::User.new(data)
|
|
32
|
+
@users[data.id] = @users.key?(data.id) ? @users[data.id].merge(user) : user
|
|
34
33
|
end
|
|
35
34
|
|
|
36
35
|
@channels = {}
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
@channels[data.id] = Models::Channel.new(data)
|
|
40
|
-
end
|
|
36
|
+
attrs.channels&.each do |data|
|
|
37
|
+
@channels[data.id] = Models::Channel.new(data)
|
|
41
38
|
end
|
|
42
39
|
|
|
43
40
|
@bots = {}
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
@bots[data.id] = Models::Bot.new(data)
|
|
47
|
-
end
|
|
41
|
+
attrs.bots&.each do |data|
|
|
42
|
+
@bots[data.id] = Models::Bot.new(data)
|
|
48
43
|
end
|
|
49
44
|
|
|
50
45
|
@groups = {}
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
@groups[data.id] = Models::Group.new(data)
|
|
54
|
-
end
|
|
46
|
+
attrs.groups&.each do |data|
|
|
47
|
+
@groups[data.id] = Models::Group.new(data)
|
|
55
48
|
end
|
|
56
49
|
|
|
57
50
|
@ims = {}
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
@ims[data.id] = Models::Im.new(data)
|
|
61
|
-
end
|
|
51
|
+
attrs.ims&.each do |data|
|
|
52
|
+
@ims[data.id] = Models::Im.new(data)
|
|
62
53
|
end
|
|
63
54
|
end
|
|
64
55
|
|
|
65
56
|
### RealTime Events
|
|
66
57
|
|
|
58
|
+
# An enterprise grid migration has started on an external workspace..
|
|
59
|
+
# @see https://api.slack.com/events/external_org_migration_started
|
|
60
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_started.json
|
|
61
|
+
# on :external_org_migration_started do |data|
|
|
62
|
+
|
|
63
|
+
# An enterprise grid migration has finished on an external workspace..
|
|
64
|
+
# @see https://api.slack.com/events/external_org_migration_finished
|
|
65
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_finished.json
|
|
66
|
+
# on :external_org_migration_finished do |data|
|
|
67
|
+
|
|
67
68
|
# A private channel was deleted.
|
|
68
69
|
# @see https://api.slack.com/events/group_deleted
|
|
69
70
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_deleted.json
|
|
@@ -151,7 +152,7 @@ module Slack
|
|
|
151
152
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/bot_changed.json
|
|
152
153
|
on :bot_changed do |data|
|
|
153
154
|
bot = bots[data.bot.id]
|
|
154
|
-
bot
|
|
155
|
+
bot&.merge!(data.bot)
|
|
155
156
|
end
|
|
156
157
|
|
|
157
158
|
# A team channel was archived.
|
|
@@ -333,7 +334,7 @@ module Slack
|
|
|
333
334
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_left.json
|
|
334
335
|
on :group_left do |data|
|
|
335
336
|
channel = groups[data.channel]
|
|
336
|
-
channel.members.delete(self.self.id) if channel
|
|
337
|
+
channel.members.delete(self.self.id) if channel&.key?(:members)
|
|
337
338
|
end
|
|
338
339
|
|
|
339
340
|
# A private group read marker was updated.
|
|
@@ -368,7 +369,8 @@ module Slack
|
|
|
368
369
|
# @see https://api.slack.com/events/im_close
|
|
369
370
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_close.json
|
|
370
371
|
on :im_close do |data|
|
|
371
|
-
return unless ims
|
|
372
|
+
return unless ims&.key?(data.channel)
|
|
373
|
+
|
|
372
374
|
ims[data.channel].is_open = false
|
|
373
375
|
end
|
|
374
376
|
|
|
@@ -393,7 +395,8 @@ module Slack
|
|
|
393
395
|
# @see https://api.slack.com/events/im_open
|
|
394
396
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_open.json
|
|
395
397
|
on :im_open do |data|
|
|
396
|
-
return unless ims
|
|
398
|
+
return unless ims&.key?(data.channel)
|
|
399
|
+
|
|
397
400
|
ims[data.channel].is_open = true
|
|
398
401
|
end
|
|
399
402
|
|
data/lib/slack/version.rb
CHANGED
|
@@ -1,25 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# This file was auto-generated by lib/tasks/web.rake
|
|
2
3
|
|
|
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_emoji'
|
|
14
|
+
require_relative 'endpoints/admin_inviteRequests'
|
|
15
|
+
require_relative 'endpoints/admin_inviteRequests_approved'
|
|
16
|
+
require_relative 'endpoints/admin_inviteRequests_denied'
|
|
17
|
+
require_relative 'endpoints/admin_teams'
|
|
18
|
+
require_relative 'endpoints/admin_teams_admins'
|
|
19
|
+
require_relative 'endpoints/admin_teams_owners'
|
|
20
|
+
require_relative 'endpoints/admin_teams_settings'
|
|
21
|
+
require_relative 'endpoints/admin_usergroups'
|
|
22
|
+
require_relative 'endpoints/admin_users'
|
|
23
|
+
require_relative 'endpoints/admin_users_session'
|
|
3
24
|
require_relative 'endpoints/api'
|
|
25
|
+
require_relative 'endpoints/apps'
|
|
26
|
+
require_relative 'endpoints/apps_connections'
|
|
27
|
+
require_relative 'endpoints/apps_event_authorizations'
|
|
4
28
|
require_relative 'endpoints/apps_permissions'
|
|
5
29
|
require_relative 'endpoints/apps_permissions_resources'
|
|
6
30
|
require_relative 'endpoints/apps_permissions_scopes'
|
|
7
31
|
require_relative 'endpoints/apps_permissions_users'
|
|
8
32
|
require_relative 'endpoints/auth'
|
|
33
|
+
require_relative 'endpoints/auth_teams'
|
|
9
34
|
require_relative 'endpoints/bots'
|
|
35
|
+
require_relative 'endpoints/calls'
|
|
36
|
+
require_relative 'endpoints/calls_participants'
|
|
10
37
|
require_relative 'endpoints/channels'
|
|
11
38
|
require_relative 'endpoints/chat'
|
|
39
|
+
require_relative 'endpoints/chat_scheduledMessages'
|
|
12
40
|
require_relative 'endpoints/conversations'
|
|
13
41
|
require_relative 'endpoints/dialog'
|
|
14
42
|
require_relative 'endpoints/dnd'
|
|
15
43
|
require_relative 'endpoints/emoji'
|
|
16
44
|
require_relative 'endpoints/files'
|
|
17
45
|
require_relative 'endpoints/files_comments'
|
|
46
|
+
require_relative 'endpoints/files_remote'
|
|
18
47
|
require_relative 'endpoints/groups'
|
|
19
48
|
require_relative 'endpoints/im'
|
|
20
49
|
require_relative 'endpoints/migration'
|
|
21
50
|
require_relative 'endpoints/mpim'
|
|
22
51
|
require_relative 'endpoints/oauth'
|
|
52
|
+
require_relative 'endpoints/oauth_v2'
|
|
23
53
|
require_relative 'endpoints/pins'
|
|
24
54
|
require_relative 'endpoints/reactions'
|
|
25
55
|
require_relative 'endpoints/reminders'
|
|
@@ -34,35 +64,67 @@ require_relative 'endpoints/users'
|
|
|
34
64
|
require_relative 'endpoints/users_admin'
|
|
35
65
|
require_relative 'endpoints/users_prefs'
|
|
36
66
|
require_relative 'endpoints/users_profile'
|
|
67
|
+
require_relative 'endpoints/views'
|
|
68
|
+
require_relative 'endpoints/workflows'
|
|
37
69
|
|
|
38
70
|
module Slack
|
|
39
71
|
module Web
|
|
40
72
|
module Api
|
|
41
73
|
module Endpoints
|
|
74
|
+
include Slack::Web::Api::Mixins::Conversations
|
|
42
75
|
include Slack::Web::Api::Mixins::Channels
|
|
43
76
|
include Slack::Web::Api::Mixins::Users
|
|
44
77
|
include Slack::Web::Api::Mixins::Groups
|
|
45
78
|
|
|
79
|
+
include AdminAnalytics
|
|
80
|
+
include AdminApps
|
|
81
|
+
include AdminAppsApproved
|
|
82
|
+
include AdminAppsRequests
|
|
83
|
+
include AdminAppsRestricted
|
|
84
|
+
include AdminBarriers
|
|
85
|
+
include AdminConversations
|
|
86
|
+
include AdminConversationsEkm
|
|
87
|
+
include AdminConversationsRestrictaccess
|
|
88
|
+
include AdminEmoji
|
|
89
|
+
include AdminInviterequests
|
|
90
|
+
include AdminInviterequestsApproved
|
|
91
|
+
include AdminInviterequestsDenied
|
|
92
|
+
include AdminTeams
|
|
93
|
+
include AdminTeamsAdmins
|
|
94
|
+
include AdminTeamsOwners
|
|
95
|
+
include AdminTeamsSettings
|
|
96
|
+
include AdminUsergroups
|
|
97
|
+
include AdminUsers
|
|
98
|
+
include AdminUsersSession
|
|
46
99
|
include Api
|
|
100
|
+
include Apps
|
|
101
|
+
include AppsConnections
|
|
102
|
+
include AppsEventAuthorizations
|
|
47
103
|
include AppsPermissions
|
|
48
104
|
include AppsPermissionsResources
|
|
49
105
|
include AppsPermissionsScopes
|
|
50
106
|
include AppsPermissionsUsers
|
|
51
107
|
include Auth
|
|
108
|
+
include AuthTeams
|
|
52
109
|
include Bots
|
|
110
|
+
include Calls
|
|
111
|
+
include CallsParticipants
|
|
53
112
|
include Channels
|
|
54
113
|
include Chat
|
|
114
|
+
include ChatScheduledmessages
|
|
55
115
|
include Conversations
|
|
56
116
|
include Dialog
|
|
57
117
|
include Dnd
|
|
58
118
|
include Emoji
|
|
59
119
|
include Files
|
|
60
120
|
include FilesComments
|
|
121
|
+
include FilesRemote
|
|
61
122
|
include Groups
|
|
62
123
|
include Im
|
|
63
124
|
include Migration
|
|
64
125
|
include Mpim
|
|
65
126
|
include Oauth
|
|
127
|
+
include OauthV2
|
|
66
128
|
include Pins
|
|
67
129
|
include Reactions
|
|
68
130
|
include Reminders
|
|
@@ -77,6 +139,8 @@ module Slack
|
|
|
77
139
|
include UsersAdmin
|
|
78
140
|
include UsersPrefs
|
|
79
141
|
include UsersProfile
|
|
142
|
+
include Views
|
|
143
|
+
include Workflows
|
|
80
144
|
end
|
|
81
145
|
end
|
|
82
146
|
end
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# This file was auto-generated by lib/tasks/web.rake
|
|
3
|
+
|
|
4
|
+
module Slack
|
|
5
|
+
module Web
|
|
6
|
+
module Api
|
|
7
|
+
module Endpoints
|
|
8
|
+
module AdminAnalytics
|
|
9
|
+
#
|
|
10
|
+
# Retrieve analytics data for a given date, presented as a compressed JSON file
|
|
11
|
+
#
|
|
12
|
+
# @option options [Object] :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 [Object] :date
|
|
15
|
+
# Date to retrieve the analytics data for, expressed as YYYY-MM-DD in UTC.
|
|
16
|
+
# @option options [Object] :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
|