slack-ruby-client 0.11.0 → 2.7.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 +5 -5
- data/.coveralls.yml +2 -0
- data/.github/FUNDING.yml +2 -0
- data/.github/dependabot.yml +6 -0
- data/.github/workflows/integration_test.yml +45 -0
- data/.github/workflows/lint.yml +14 -0
- data/.github/workflows/pr_lint.yml +21 -0
- data/.github/workflows/test.yml +56 -0
- data/.github/workflows/update_api.yml +81 -0
- data/.gitignore +7 -3
- data/.rubocop.yml +40 -2
- data/.rubocop_todo.yml +209 -55
- data/.ruby-version +1 -0
- data/CHANGELOG.md +257 -30
- data/CONTRIBUTING.md +44 -29
- data/Dangerfile +2 -0
- data/Gemfile +28 -6
- data/Gemfile.danger +6 -0
- data/LICENSE.md +1 -1
- data/README.md +473 -134
- data/RELEASING.md +2 -2
- data/Rakefile +2 -1
- data/SECURITY.md +9 -0
- data/UPGRADING.md +117 -3
- data/bin/commands/admin_analytics.rb +22 -0
- data/bin/commands/admin_apps.rb +57 -0
- data/bin/commands/admin_apps_activities.rb +32 -0
- data/bin/commands/admin_apps_approved.rb +24 -0
- data/bin/commands/admin_apps_config.rb +31 -0
- data/bin/commands/admin_apps_requests.rb +35 -0
- data/bin/commands/admin_apps_restricted.rb +24 -0
- data/bin/commands/admin_audit_anomaly_allow.rb +29 -0
- data/bin/commands/admin_auth_policy.rb +45 -0
- data/bin/commands/admin_barriers.rb +53 -0
- data/bin/commands/admin_conversations.rb +260 -0
- data/bin/commands/admin_conversations_ekm.rb +23 -0
- data/bin/commands/admin_conversations_restrictAccess.rb +43 -0
- data/bin/commands/admin_emoji.rb +60 -0
- data/bin/commands/admin_functions.rb +23 -0
- data/bin/commands/admin_functions_permissions.rb +31 -0
- data/bin/commands/admin_inviteRequests.rb +42 -0
- data/bin/commands/admin_inviteRequests_approved.rb +22 -0
- data/bin/commands/admin_inviteRequests_denied.rb +22 -0
- data/bin/commands/admin_roles.rb +46 -0
- data/bin/commands/admin_teams.rb +33 -0
- data/bin/commands/admin_teams_admins.rb +22 -0
- data/bin/commands/admin_teams_owners.rb +22 -0
- data/bin/commands/admin_teams_settings.rb +70 -0
- data/bin/commands/admin_usergroups.rb +54 -0
- data/bin/commands/admin_users.rb +106 -0
- data/bin/commands/admin_users_session.rb +84 -0
- data/bin/commands/admin_users_unsupportedVersions.rb +21 -0
- data/bin/commands/admin_workflows.rb +42 -0
- data/bin/commands/admin_workflows_collaborators.rb +31 -0
- data/bin/commands/admin_workflows_permissions.rb +21 -0
- data/bin/commands/admin_workflows_triggers_types_permissions.rb +31 -0
- data/bin/commands/api.rb +15 -9
- data/bin/commands/apps.rb +21 -0
- data/bin/commands/apps_activities.rb +32 -0
- data/bin/commands/apps_auth_external.rb +32 -0
- data/bin/commands/apps_connections.rb +19 -0
- data/bin/commands/apps_datastore.rb +116 -0
- data/bin/commands/apps_event_authorizations.rb +22 -0
- data/bin/commands/apps_manifest.rb +58 -0
- data/bin/commands/assistant_search.rb +27 -0
- data/bin/commands/assistant_threads.rb +45 -0
- data/bin/commands/auth.rb +22 -15
- data/bin/commands/auth_teams.rb +22 -0
- data/bin/commands/bookmarks.rb +60 -0
- data/bin/commands/bots.rb +16 -8
- data/bin/commands/calls.rb +58 -0
- data/bin/commands/calls_participants.rb +31 -0
- data/bin/commands/canvases.rb +41 -0
- data/bin/commands/canvases_access.rb +34 -0
- data/bin/commands/canvases_sections.rb +21 -0
- data/bin/commands/chat.rb +158 -99
- data/bin/commands/chat_scheduledMessages.rb +25 -0
- data/bin/commands/conversations.rb +241 -157
- data/bin/commands/conversations_canvases.rb +22 -0
- data/bin/commands/conversations_externalInvitePermissions.rb +22 -0
- data/bin/commands/conversations_requestSharedInvite.rb +48 -0
- data/bin/commands/dialog.rb +16 -9
- data/bin/commands/dnd.rb +47 -38
- data/bin/commands/emoji.rb +15 -7
- data/bin/commands/files.rb +113 -87
- data/bin/commands/files_comments.rb +16 -30
- data/bin/commands/files_remote.rb +84 -0
- data/bin/commands/functions.rb +31 -0
- data/bin/commands/functions_distributions_permissions.rb +61 -0
- data/bin/commands/functions_workflows_steps.rb +23 -0
- data/bin/commands/functions_workflows_steps_responses.rb +23 -0
- data/bin/commands/migration.rb +17 -9
- data/bin/commands/oauth.rb +19 -24
- data/bin/commands/oauth_v2.rb +35 -0
- data/bin/commands/openid_connect.rb +33 -0
- data/bin/commands/pins.rb +33 -30
- data/bin/commands/reactions.rb +53 -45
- data/bin/commands/reminders.rb +54 -41
- data/bin/commands/rtm.rb +16 -22
- data/bin/commands/search.rb +44 -33
- data/bin/commands/stars.rb +39 -29
- data/bin/commands/team.rb +50 -34
- data/bin/commands/team_billing.rb +19 -0
- data/bin/commands/team_externalTeams.rb +35 -0
- data/bin/commands/team_preferences.rb +19 -0
- data/bin/commands/team_profile.rb +15 -8
- data/bin/commands/tooling_tokens.rb +20 -0
- data/bin/commands/usergroups.rb +69 -53
- data/bin/commands/usergroups_users.rb +30 -19
- data/bin/commands/users.rb +114 -84
- data/bin/commands/users_admin.rb +29 -22
- data/bin/commands/users_discoverableContacts.rb +20 -0
- data/bin/commands/users_prefs.rb +14 -7
- data/bin/commands/users_profile.rb +27 -20
- data/bin/commands/views.rb +56 -0
- data/bin/commands/workflows.rb +44 -0
- data/bin/commands/workflows_triggers_permissions.rb +60 -0
- data/bin/slack +50 -46
- data/examples/files_upload_v2/.env.example +1 -0
- data/examples/{hi_real_time → files_upload_v2}/Gemfile +2 -2
- data/examples/files_upload_v2/README.md +13 -0
- data/examples/files_upload_v2/files_upload_v2.rb +45 -0
- 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_eventmachine → hi_real_time_async_async}/Gemfile +2 -1
- data/examples/{hi_real_time_async_eventmachine → hi_real_time_async_async}/hi.rb +12 -7
- 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/examples/oauth_v2/.env.example +4 -0
- data/examples/oauth_v2/Gemfile +7 -0
- data/examples/oauth_v2/README.md +33 -0
- data/examples/oauth_v2/oauth_v2.rb +60 -0
- data/lib/slack/config.rb +2 -2
- data/lib/slack/events/config.rb +32 -0
- data/lib/slack/events/request.rb +76 -0
- data/lib/slack/logger.rb +6 -5
- data/lib/slack/messages/formatting.rb +66 -1
- data/lib/slack/messages/message.rb +1 -4
- data/lib/slack/real_time/api/message.rb +6 -3
- 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/templates/event_handler.erb +5 -1
- data/lib/slack/real_time/api/typing.rb +5 -2
- data/lib/slack/real_time/client.rb +117 -54
- data/lib/slack/real_time/concurrency/async.rb +142 -0
- data/lib/slack/real_time/concurrency.rb +2 -2
- data/lib/slack/real_time/config.rb +12 -13
- 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 +5 -0
- data/lib/slack/real_time/models/im.rb +1 -0
- data/lib/slack/real_time/models/{group.rb → mpim.rb} +2 -1
- 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/models.rb +3 -1
- data/lib/slack/real_time/socket.rb +49 -17
- data/lib/slack/real_time/stores/base.rb +28 -14
- data/lib/slack/real_time/stores/starter.rb +325 -287
- data/lib/slack/real_time/stores/store.rb +271 -186
- data/lib/slack/real_time/stores.rb +2 -7
- data/lib/slack/utils/security.rb +44 -0
- data/lib/slack/version.rb +2 -1
- data/lib/slack/web/api/endpoints/admin_analytics.rb +28 -0
- data/lib/slack/web/api/endpoints/admin_apps.rb +78 -0
- data/lib/slack/web/api/endpoints/admin_apps_activities.rb +53 -0
- data/lib/slack/web/api/endpoints/admin_apps_approved.rb +37 -0
- data/lib/slack/web/api/endpoints/admin_apps_config.rb +40 -0
- data/lib/slack/web/api/endpoints/admin_apps_requests.rb +53 -0
- data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +37 -0
- data/lib/slack/web/api/endpoints/admin_audit_anomaly_allow.rb +34 -0
- 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 +397 -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_emoji.rb +88 -0
- data/lib/slack/web/api/endpoints/admin_functions.rb +36 -0
- data/lib/slack/web/api/endpoints/admin_functions_permissions.rb +41 -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_roles.rb +73 -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 +167 -0
- data/lib/slack/web/api/endpoints/admin_users_session.rb +121 -0
- data/lib/slack/web/api/endpoints/admin_users_unsupportedVersions.rb +25 -0
- data/lib/slack/web/api/endpoints/admin_workflows.rb +67 -0
- data/lib/slack/web/api/endpoints/admin_workflows_collaborators.rb +42 -0
- data/lib/slack/web/api/endpoints/admin_workflows_permissions.rb +26 -0
- data/lib/slack/web/api/endpoints/admin_workflows_triggers_types_permissions.rb +41 -0
- data/lib/slack/web/api/endpoints/api.rb +2 -3
- data/lib/slack/web/api/endpoints/apps.rb +27 -0
- data/lib/slack/web/api/endpoints/apps_activities.rb +54 -0
- data/lib/slack/web/api/endpoints/apps_auth_external.rb +41 -0
- data/lib/slack/web/api/endpoints/apps_connections.rb +21 -0
- data/lib/slack/web/api/endpoints/apps_datastore.rb +181 -0
- data/lib/slack/web/api/endpoints/apps_event_authorizations.rb +34 -0
- data/lib/slack/web/api/endpoints/apps_manifest.rb +79 -0
- data/lib/slack/web/api/endpoints/assistant_search.rb +44 -0
- data/lib/slack/web/api/endpoints/assistant_threads.rb +68 -0
- data/lib/slack/web/api/endpoints/auth.rb +2 -1
- data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
- data/lib/slack/web/api/endpoints/bookmarks.rb +90 -0
- data/lib/slack/web/api/endpoints/bots.rb +4 -1
- 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/canvases.rb +54 -0
- data/lib/slack/web/api/endpoints/canvases_access.rb +47 -0
- data/lib/slack/web/api/endpoints/canvases_sections.rb +27 -0
- data/lib/slack/web/api/endpoints/chat.rb +172 -87
- data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
- data/lib/slack/web/api/endpoints/conversations.rb +190 -64
- data/lib/slack/web/api/endpoints/conversations_canvases.rb +28 -0
- data/lib/slack/web/api/endpoints/conversations_externalInvitePermissions.rb +31 -0
- data/lib/slack/web/api/endpoints/conversations_requestSharedInvite.rb +73 -0
- data/lib/slack/web/api/endpoints/dialog.rb +6 -10
- data/lib/slack/web/api/endpoints/dnd.rb +11 -5
- data/lib/slack/web/api/endpoints/emoji.rb +3 -0
- data/lib/slack/web/api/endpoints/files.rb +85 -36
- data/lib/slack/web/api/endpoints/files_comments.rb +4 -36
- data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
- data/lib/slack/web/api/endpoints/functions.rb +43 -0
- data/lib/slack/web/api/endpoints/functions_distributions_permissions.rb +84 -0
- data/lib/slack/web/api/endpoints/functions_workflows_steps.rb +30 -0
- data/lib/slack/web/api/endpoints/functions_workflows_steps_responses.rb +30 -0
- data/lib/slack/web/api/endpoints/migration.rb +6 -3
- data/lib/slack/web/api/endpoints/oauth.rb +10 -32
- data/lib/slack/web/api/endpoints/oauth_v2.rb +48 -0
- data/lib/slack/web/api/endpoints/openid_connect.rb +42 -0
- data/lib/slack/web/api/endpoints/pins.rb +11 -18
- data/lib/slack/web/api/endpoints/reactions.rb +31 -20
- data/lib/slack/web/api/endpoints/reminders.rb +25 -12
- data/lib/slack/web/api/endpoints/rtm.rb +4 -22
- data/lib/slack/web/api/endpoints/search.rb +33 -18
- data/lib/slack/web/api/endpoints/stars.rb +23 -10
- data/lib/slack/web/api/endpoints/team.rb +38 -7
- data/lib/slack/web/api/endpoints/team_billing.rb +21 -0
- data/lib/slack/web/api/endpoints/team_externalTeams.rb +53 -0
- data/lib/slack/web/api/endpoints/team_preferences.rb +21 -0
- data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
- data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
- data/lib/slack/web/api/endpoints/usergroups.rb +44 -25
- data/lib/slack/web/api/endpoints/usergroups_users.rb +23 -14
- data/lib/slack/web/api/endpoints/users.rb +57 -18
- data/lib/slack/web/api/endpoints/users_admin.rb +5 -2
- data/lib/slack/web/api/endpoints/users_discoverableContacts.rb +24 -0
- data/lib/slack/web/api/endpoints/users_prefs.rb +2 -0
- data/lib/slack/web/api/endpoints/users_profile.rb +11 -9
- data/lib/slack/web/api/endpoints/views.rb +86 -0
- data/lib/slack/web/api/endpoints/workflows.rb +63 -0
- data/lib/slack/web/api/endpoints/workflows_triggers_permissions.rb +87 -0
- data/lib/slack/web/api/endpoints.rb +136 -12
- data/lib/slack/web/api/error.rb +1 -0
- data/lib/slack/web/api/errors/server_error.rb +37 -0
- data/lib/slack/web/api/errors/slack_error.rb +14 -1
- data/lib/slack/web/api/errors/too_many_requests_error.rb +2 -4
- data/lib/slack/web/api/errors.rb +1396 -0
- data/lib/slack/web/api/helpers/files.rb +97 -0
- data/lib/slack/web/api/helpers.rb +13 -0
- data/lib/slack/web/api/mixins/conversations.id.rb +47 -0
- data/lib/slack/web/api/mixins/ids.id.rb +4 -3
- data/lib/slack/web/api/mixins/users.id.rb +18 -4
- data/lib/slack/web/api/mixins/users.search.rb +3 -1
- data/lib/slack/web/api/mixins.rb +2 -2
- data/lib/slack/web/api/options.rb +26 -0
- data/lib/slack/web/api/patches/.gitkeep +0 -0
- data/lib/slack/web/api/templates/command.erb +19 -12
- data/lib/slack/web/api/templates/endpoints.erb +2 -2
- data/lib/slack/web/api/templates/errors.erb +20 -0
- data/lib/slack/web/api/templates/method.erb +23 -3
- data/lib/slack/web/api/templates/method_spec.erb +40 -3
- data/lib/slack/web/client.rb +4 -1
- data/lib/slack/web/config.rb +9 -2
- data/lib/slack/web/faraday/connection.rb +11 -20
- data/lib/slack/web/faraday/options.rb +24 -0
- data/lib/slack/web/faraday/request.rb +6 -1
- data/lib/slack/web/faraday/response/raise_error.rb +14 -8
- data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
- data/lib/slack/web/pagination/cursor.rb +7 -7
- data/lib/slack-ruby-client.rb +18 -6
- data/lib/slack.rb +1 -0
- data/lib/slack_ruby_client.rb +1 -0
- data/lib/tasks/git.rake +1 -0
- data/lib/tasks/real_time.rake +51 -21
- data/lib/tasks/update.rake +1 -0
- data/lib/tasks/web.rake +43 -17
- data/slack-ruby-client.gemspec +10 -14
- metadata +191 -307
- data/.travis.yml +0 -30
- data/bin/commands/apps_permissions.rb +0 -22
- data/bin/commands/channels.rb +0 -175
- data/bin/commands/groups.rb +0 -172
- data/bin/commands/im.rb +0 -67
- data/bin/commands/mpim.rb +0 -63
- data/bin/commands.rb +0 -33
- 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/hi.rb +0 -36
- data/examples/hi_real_time_async_eventmachine/Procfile +0 -2
- data/lib/slack/real_time/concurrency/celluloid.rb +0 -117
- data/lib/slack/real_time/concurrency/eventmachine.rb +0 -60
- data/lib/slack/web/api/endpoints/apps_permissions.rb +0 -35
- data/lib/slack/web/api/endpoints/channels.rb +0 -265
- data/lib/slack/web/api/endpoints/groups.rb +0 -255
- data/lib/slack/web/api/endpoints/im.rb +0 -113
- data/lib/slack/web/api/endpoints/mpim.rb +0 -98
- data/lib/slack/web/api/endpoints/presence.rb +0 -23
- data/lib/slack/web/api/mixins/channels.id.json +0 -20
- data/lib/slack/web/api/mixins/channels.id.rb +0 -26
- data/lib/slack/web/api/mixins/groups.id.json +0 -20
- data/lib/slack/web/api/mixins/groups.id.rb +0 -26
- 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/dialog.1.open-json-support.patch +0 -17
- data/lib/slack/web/api/templates/commands.erb +0 -5
- data/screenshots/register-bot.png +0 -0
- data/spec/fixtures/slack/web/429_error.yml +0 -85
- data/spec/fixtures/slack/web/auth_test_error.yml +0 -48
- data/spec/fixtures/slack/web/auth_test_success.yml +0 -57
- data/spec/fixtures/slack/web/channels_info.yml +0 -46
- data/spec/fixtures/slack/web/groups_info.yml +0 -43
- data/spec/fixtures/slack/web/paginated_users_list.yml +0 -181
- data/spec/fixtures/slack/web/rtm_connect.yml +0 -70
- data/spec/fixtures/slack/web/rtm_start.yml +0 -104
- data/spec/fixtures/slack/web/users_info.yml +0 -130
- data/spec/fixtures/slack/web/users_list.yml +0 -72
- data/spec/integration/integration_spec.rb +0 -139
- data/spec/slack/config_spec.rb +0 -14
- data/spec/slack/messages/formatting_spec.rb +0 -43
- data/spec/slack/real_time/api/message_spec.rb +0 -15
- data/spec/slack/real_time/api/ping_spec.rb +0 -15
- data/spec/slack/real_time/api/typing_spec.rb +0 -15
- data/spec/slack/real_time/client_spec.rb +0 -425
- data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -62
- data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -47
- data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +0 -19
- data/spec/slack/real_time/event_handlers/bot_spec.rb +0 -44
- data/spec/slack/real_time/event_handlers/channel_spec.rb +0 -116
- data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +0 -15
- data/spec/slack/real_time/event_handlers/group_spec.rb +0 -90
- data/spec/slack/real_time/event_handlers/im_spec.rb +0 -47
- data/spec/slack/real_time/event_handlers/team_spec.rb +0 -62
- data/spec/slack/real_time/event_handlers/user_spec.rb +0 -63
- data/spec/slack/real_time/rtm_connect_spec.rb +0 -13
- data/spec/slack/real_time/rtm_start_spec.rb +0 -13
- data/spec/slack/real_time/store_spec.rb +0 -11
- data/spec/slack/slack_spec.rb +0 -58
- data/spec/slack/version_spec.rb +0 -7
- data/spec/slack/web/api/endpoints/api_spec.rb +0 -7
- data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +0 -15
- data/spec/slack/web/api/endpoints/bots_spec.rb +0 -7
- data/spec/slack/web/api/endpoints/conversations_spec.rb +0 -100
- data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +0 -25
- data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +0 -11
- data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +0 -105
- data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +0 -28
- data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +0 -11
- data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +0 -33
- data/spec/slack/web/api/endpoints/dnd_spec.rb +0 -12
- data/spec/slack/web/api/endpoints/emoji_spec.rb +0 -7
- data/spec/slack/web/api/endpoints/files_comments_spec.rb +0 -34
- data/spec/slack/web/api/endpoints/files_spec.rb +0 -43
- data/spec/slack/web/api/endpoints/im_spec.rb +0 -38
- data/spec/slack/web/api/endpoints/migration_spec.rb +0 -12
- data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -38
- data/spec/slack/web/api/endpoints/oauth_spec.rb +0 -29
- data/spec/slack/web/api/endpoints/pins_spec.rb +0 -22
- data/spec/slack/web/api/endpoints/reactions_spec.rb +0 -17
- data/spec/slack/web/api/endpoints/reminders_spec.rb +0 -30
- data/spec/slack/web/api/endpoints/rtm_spec.rb +0 -7
- data/spec/slack/web/api/endpoints/search_spec.rb +0 -22
- data/spec/slack/web/api/endpoints/stars_spec.rb +0 -7
- data/spec/slack/web/api/endpoints/team_profile_spec.rb +0 -7
- data/spec/slack/web/api/endpoints/team_spec.rb +0 -7
- data/spec/slack/web/api/endpoints/usergroups_spec.rb +0 -27
- data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +0 -20
- data/spec/slack/web/api/endpoints/users_admin_spec.rb +0 -17
- data/spec/slack/web/api/endpoints/users_prefs_spec.rb +0 -7
- data/spec/slack/web/api/endpoints/users_profile_spec.rb +0 -7
- data/spec/slack/web/api/error_spec.rb +0 -14
- data/spec/slack/web/api/errors/slack_error_spec.rb +0 -14
- data/spec/slack/web/api/mixins/channels_spec.rb +0 -31
- data/spec/slack/web/api/mixins/groups_spec.rb +0 -31
- data/spec/slack/web/api/mixins/users_spec.rb +0 -39
- data/spec/slack/web/api/pagination/cursor_spec.rb +0 -70
- data/spec/slack/web/client_spec.rb +0 -174
- data/spec/spec_helper.rb +0 -14
- data/spec/support/queue_with_timeout.rb +0 -34
- data/spec/support/real_time/concurrency/mock.rb +0 -30
- data/spec/support/real_time/connected_client.rb +0 -21
- data/spec/support/real_time/event.rb +0 -11
- data/spec/support/token.rb +0 -10
- data/spec/support/vcr.rb +0 -9
- /data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Procfile +0 -0
@@ -1,170 +1,104 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Slack
|
2
4
|
module RealTime
|
3
5
|
module Stores
|
4
|
-
#
|
6
|
+
# Full store with initialization logic
|
5
7
|
class Store < Base
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
8
|
+
CONVERSATION_TYPES = {
|
9
|
+
public_channels: 'public_channel',
|
10
|
+
private_channels: 'private_channel',
|
11
|
+
ims: 'im',
|
12
|
+
mpims: 'mpim'
|
13
|
+
}.freeze
|
14
|
+
|
15
|
+
attr_reader :caches
|
16
|
+
|
17
|
+
def initialize(attrs, options = {})
|
18
|
+
@teams = {}
|
19
|
+
@users = {}
|
20
|
+
@bots = {}
|
21
|
+
@public_channels = {}
|
22
|
+
@private_channels = {}
|
23
|
+
@ims = {}
|
24
|
+
@mpims = {}
|
13
25
|
|
14
|
-
def initialize(attrs)
|
15
26
|
if attrs.team
|
16
27
|
@team_id = attrs.team.id
|
17
|
-
@teams
|
18
|
-
else
|
19
|
-
@teams = {}
|
28
|
+
@teams[@team_id] = Models::Team.new(attrs.team)
|
20
29
|
end
|
21
30
|
|
22
31
|
if attrs.self
|
23
32
|
@self_id = attrs.self.id
|
24
|
-
@users
|
25
|
-
else
|
26
|
-
@users = {}
|
33
|
+
@users[@self_id] = Models::User.new(attrs.self)
|
27
34
|
end
|
28
35
|
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
36
|
+
@caches =
|
37
|
+
if options[:caches].is_a?(Array) || options[:caches].nil?
|
38
|
+
caches = options[:caches].to_a.map(&:to_sym)
|
39
|
+
unknown_caches = caches - CACHES
|
40
|
+
raise ArgumentError, "Unknown caches: #{unknown_caches.join(', ')}" unless unknown_caches.empty?
|
41
|
+
|
42
|
+
Set.new(caches).freeze
|
43
|
+
elsif options[:caches] == :all
|
44
|
+
Set.new(CACHES).freeze
|
45
|
+
else
|
46
|
+
raise ArgumentError, 'Unexpected value for option `caches`. Expects :all or an array of caches'
|
33
47
|
end
|
34
|
-
|
35
|
-
|
36
|
-
@channels = {}
|
37
|
-
if attrs.channels
|
38
|
-
attrs.channels.each do |data|
|
39
|
-
@channels[data.id] = Models::Channel.new(data)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
@bots = {}
|
44
|
-
if attrs.bots
|
45
|
-
attrs.bots.each do |data|
|
46
|
-
@bots[data.id] = Models::Bot.new(data)
|
47
|
-
end
|
48
|
-
end
|
48
|
+
end
|
49
49
|
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
@groups[data.id] = Models::Group.new(data)
|
54
|
-
end
|
55
|
-
end
|
50
|
+
def self
|
51
|
+
users[@self_id]
|
52
|
+
end
|
56
53
|
|
57
|
-
|
58
|
-
|
59
|
-
attrs.ims.each do |data|
|
60
|
-
@ims[data.id] = Models::Im.new(data)
|
61
|
-
end
|
62
|
-
end
|
54
|
+
def team
|
55
|
+
teams[@team_id]
|
63
56
|
end
|
64
57
|
|
65
58
|
### RealTime Events
|
66
59
|
|
67
|
-
# The membership of an existing User Group has changed.
|
68
|
-
# @see https://api.slack.com/events/subteam_members_changed
|
69
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/subteam_members_changed.json
|
70
|
-
# on :subteam_members_changed do |data|
|
71
|
-
|
72
|
-
# Subscribe to presence events for the specified users.
|
73
|
-
# @see https://api.slack.com/events/presence_sub
|
74
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/presence_sub.json
|
75
|
-
# on :presence_sub do |data|
|
76
|
-
|
77
|
-
# A user left a public or private channel.
|
78
|
-
# @see https://api.slack.com/events/member_left_channel
|
79
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/member_left_channel.json
|
80
|
-
# on :member_left_channel do |data|
|
81
|
-
|
82
|
-
# A user joined a public or private channel.
|
83
|
-
# @see https://api.slack.com/events/member_joined_channel
|
84
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/member_joined_channel.json
|
85
|
-
# on :member_joined_channel do |data|
|
86
|
-
|
87
|
-
# The server intends to close the connection soon..
|
88
|
-
# @see https://api.slack.com/events/goodbye
|
89
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/goodbye.json
|
90
|
-
# on :goodbye do |data|
|
91
|
-
|
92
|
-
# Verifies ownership of an Events API Request URL.
|
93
|
-
# @see https://api.slack.com/events/url_verification
|
94
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/url_verification.json
|
95
|
-
# on :url_verification do |data|
|
96
|
-
|
97
|
-
# A message was posted in a multiparty direct message channel.
|
98
|
-
# @see https://api.slack.com/events/message.mpim
|
99
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/message.mpim.json
|
100
|
-
# on :message.mpim do |data|
|
101
|
-
|
102
|
-
# A message was posted in a direct message channel.
|
103
|
-
# @see https://api.slack.com/events/message.im
|
104
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/message.im.json
|
105
|
-
# on :message.im do |data|
|
106
|
-
|
107
|
-
# A message was posted to a private channel.
|
108
|
-
# @see https://api.slack.com/events/message.groups
|
109
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/message.groups.json
|
110
|
-
# on :message.groups do |data|
|
111
|
-
|
112
|
-
# A message was posted to a channel.
|
113
|
-
# @see https://api.slack.com/events/message.channels
|
114
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/message.channels.json
|
115
|
-
# on :message.channels do |data|
|
116
|
-
|
117
|
-
# A direct message read marker was updated.
|
118
|
-
# @see https://api.slack.com/events/im_marked
|
119
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_marked.json
|
120
|
-
# on :im_marked do |data|
|
121
|
-
|
122
|
-
# Bulk updates were made to a DM channel's history.
|
123
|
-
# @see https://api.slack.com/events/im_history_changed
|
124
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_history_changed.json
|
125
|
-
# on :im_history_changed do |data|
|
126
|
-
|
127
60
|
# The list of accounts a user is signed into has changed.
|
128
61
|
# @see https://api.slack.com/events/accounts_changed
|
129
62
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/accounts_changed.json
|
130
63
|
# on :accounts_changed do |data|
|
131
64
|
|
132
|
-
#
|
65
|
+
# A bot user was added.
|
133
66
|
# @see https://api.slack.com/events/bot_added
|
134
67
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/bot_added.json
|
135
68
|
on :bot_added do |data|
|
136
|
-
|
69
|
+
bot = Models::Bot.new(data.bot)
|
70
|
+
bots[bot.id] = bot
|
137
71
|
end
|
138
72
|
|
139
|
-
#
|
73
|
+
# A bot user was changed.
|
140
74
|
# @see https://api.slack.com/events/bot_changed
|
141
75
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/bot_changed.json
|
142
76
|
on :bot_changed do |data|
|
143
77
|
bot = bots[data.bot.id]
|
144
|
-
bot
|
78
|
+
bot&.merge!(data.bot)
|
145
79
|
end
|
146
80
|
|
147
|
-
# A
|
81
|
+
# A channel was archived.
|
148
82
|
# @see https://api.slack.com/events/channel_archive
|
149
83
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/channel_archive.json
|
150
84
|
on :channel_archive do |data|
|
151
|
-
channel =
|
85
|
+
channel = public_channels[data.channel]
|
152
86
|
channel.is_archived = true if channel
|
153
87
|
end
|
154
88
|
|
155
|
-
# A
|
89
|
+
# A channel was created.
|
156
90
|
# @see https://api.slack.com/events/channel_created
|
157
91
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/channel_created.json
|
158
92
|
on :channel_created do |data|
|
159
93
|
channel = Models::Channel.new(data.channel)
|
160
|
-
|
94
|
+
public_channels[channel.id] = channel
|
161
95
|
end
|
162
96
|
|
163
|
-
# A
|
97
|
+
# A channel was deleted.
|
164
98
|
# @see https://api.slack.com/events/channel_deleted
|
165
99
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/channel_deleted.json
|
166
100
|
on :channel_deleted do |data|
|
167
|
-
|
101
|
+
public_channels.delete(data.channel)
|
168
102
|
end
|
169
103
|
|
170
104
|
# Bulk updates were made to a channel's history.
|
@@ -177,11 +111,20 @@ module Slack
|
|
177
111
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/channel_joined.json
|
178
112
|
on :channel_joined do |data|
|
179
113
|
channel_id = data.channel.id
|
180
|
-
channel
|
181
|
-
|
182
|
-
channel
|
114
|
+
if data.channel.is_private?
|
115
|
+
channel = private_channels[channel_id]
|
116
|
+
if channel
|
117
|
+
channel.merge!(data.channel)
|
118
|
+
else
|
119
|
+
private_channels[channel_id] = Models::Channel.new(data.channel)
|
120
|
+
end
|
183
121
|
else
|
184
|
-
|
122
|
+
channel = public_channels[channel_id]
|
123
|
+
if channel
|
124
|
+
channel.merge!(data.channel)
|
125
|
+
else
|
126
|
+
public_channels[channel_id] = Models::Channel.new(data.channel)
|
127
|
+
end
|
185
128
|
end
|
186
129
|
end
|
187
130
|
|
@@ -189,8 +132,8 @@ module Slack
|
|
189
132
|
# @see https://api.slack.com/events/channel_left
|
190
133
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/channel_left.json
|
191
134
|
on :channel_left do |data|
|
192
|
-
channel =
|
193
|
-
channel
|
135
|
+
channel = public_channels[data.channel]
|
136
|
+
channel&.members&.delete(self.self.id)
|
194
137
|
end
|
195
138
|
|
196
139
|
# Your channel read marker was updated.
|
@@ -198,23 +141,23 @@ module Slack
|
|
198
141
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/channel_marked.json
|
199
142
|
# on :channel_marked do |data|
|
200
143
|
|
201
|
-
# A
|
144
|
+
# A channel was renamed.
|
202
145
|
# @see https://api.slack.com/events/channel_rename
|
203
146
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/channel_rename.json
|
204
147
|
on :channel_rename do |data|
|
205
|
-
channel =
|
206
|
-
channel
|
148
|
+
channel = public_channels[data.channel.id]
|
149
|
+
channel&.merge!(data.channel)
|
207
150
|
end
|
208
151
|
|
209
|
-
# A
|
152
|
+
# A channel was unarchived.
|
210
153
|
# @see https://api.slack.com/events/channel_unarchive
|
211
154
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/channel_unarchive.json
|
212
155
|
on :channel_unarchive do |data|
|
213
|
-
channel =
|
156
|
+
channel = public_channels[data.channel]
|
214
157
|
channel.is_archived = false if channel
|
215
158
|
end
|
216
159
|
|
217
|
-
# A
|
160
|
+
# A slash command has been added or changed.
|
218
161
|
# @see https://api.slack.com/events/commands_changed
|
219
162
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/commands_changed.json
|
220
163
|
# on :commands_changed do |data|
|
@@ -222,25 +165,40 @@ module Slack
|
|
222
165
|
# Do not Disturb settings changed for the current user.
|
223
166
|
# @see https://api.slack.com/events/dnd_updated
|
224
167
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/dnd_updated.json
|
225
|
-
|
168
|
+
on :dnd_updated do |data|
|
169
|
+
self.dnd_status = data.dnd_status
|
170
|
+
end
|
226
171
|
|
227
|
-
# Do not Disturb settings changed for a
|
172
|
+
# Do not Disturb settings changed for a member.
|
228
173
|
# @see https://api.slack.com/events/dnd_updated_user
|
229
174
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/dnd_updated_user.json
|
230
|
-
|
175
|
+
on :dnd_updated_user do |data|
|
176
|
+
user = users[data.user]
|
177
|
+
user.dnd_status = data.dnd_status if user
|
178
|
+
end
|
231
179
|
|
232
|
-
# The
|
180
|
+
# The workspace email domain has changed.
|
233
181
|
# @see https://api.slack.com/events/email_domain_changed
|
234
182
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/email_domain_changed.json
|
235
183
|
on :email_domain_changed do |data|
|
236
184
|
team.email_domain = data.email_domain
|
237
185
|
end
|
238
186
|
|
239
|
-
# A
|
187
|
+
# A custom emoji has been added or changed.
|
240
188
|
# @see https://api.slack.com/events/emoji_changed
|
241
189
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/emoji_changed.json
|
242
190
|
# on :emoji_changed do |data|
|
243
191
|
|
192
|
+
# An enterprise grid migration has finished on an external workspace..
|
193
|
+
# @see https://api.slack.com/events/external_org_migration_finished
|
194
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_finished.json
|
195
|
+
# on :external_org_migration_finished do |data|
|
196
|
+
|
197
|
+
# An enterprise grid migration has started on an external workspace..
|
198
|
+
# @see https://api.slack.com/events/external_org_migration_started
|
199
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/external_org_migration_started.json
|
200
|
+
# on :external_org_migration_started do |data|
|
201
|
+
|
244
202
|
# A file was changed.
|
245
203
|
# @see https://api.slack.com/events/file_change
|
246
204
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/file_change.json
|
@@ -249,7 +207,7 @@ module Slack
|
|
249
207
|
# A file comment was added.
|
250
208
|
# @see https://api.slack.com/events/file_comment_added
|
251
209
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/file_comment_added.json
|
252
|
-
# on :file_comment_added do |data|
|
210
|
+
# on :file_comment_added do |data|
|
253
211
|
|
254
212
|
# A file comment was deleted.
|
255
213
|
# @see https://api.slack.com/events/file_comment_deleted
|
@@ -271,11 +229,6 @@ module Slack
|
|
271
229
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/file_deleted.json
|
272
230
|
# on :file_deleted do |data|
|
273
231
|
|
274
|
-
# A file was made private.
|
275
|
-
# @see https://api.slack.com/events/file_private
|
276
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/file_private.json
|
277
|
-
# on :file_private do |data|
|
278
|
-
|
279
232
|
# A file was made public.
|
280
233
|
# @see https://api.slack.com/events/file_public
|
281
234
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/file_public.json
|
@@ -291,85 +244,157 @@ module Slack
|
|
291
244
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/file_unshared.json
|
292
245
|
# on :file_unshared do |data|
|
293
246
|
|
294
|
-
#
|
247
|
+
# The server intends to close the connection soon..
|
248
|
+
# @see https://api.slack.com/events/goodbye
|
249
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/goodbye.json
|
250
|
+
# on :goodbye do |data|
|
251
|
+
|
252
|
+
# A private channel was archived.
|
295
253
|
# @see https://api.slack.com/events/group_archive
|
296
254
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_archive.json
|
297
255
|
on :group_archive do |data|
|
298
|
-
channel =
|
256
|
+
channel = private_channels[data.channel]
|
299
257
|
channel.is_archived = true if channel
|
300
258
|
end
|
301
259
|
|
302
|
-
# You closed a
|
260
|
+
# You closed a private channel.
|
303
261
|
# @see https://api.slack.com/events/group_close
|
304
262
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_close.json
|
305
263
|
on :group_close do |data|
|
306
|
-
|
264
|
+
channel = private_channels[data.channel]
|
265
|
+
channel.is_open = false if channel
|
266
|
+
end
|
267
|
+
|
268
|
+
# A private channel was deleted.
|
269
|
+
# @see https://api.slack.com/events/group_deleted
|
270
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_deleted.json
|
271
|
+
on :group_deleted do |data|
|
272
|
+
private_channels.delete(data.channel)
|
307
273
|
end
|
308
274
|
|
309
|
-
# Bulk updates were made to a
|
275
|
+
# Bulk updates were made to a private channel's history.
|
310
276
|
# @see https://api.slack.com/events/group_history_changed
|
311
277
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_history_changed.json
|
312
278
|
# on :group_history_changed do |data|
|
313
279
|
|
314
|
-
# You joined a private
|
280
|
+
# You joined a private channel.
|
315
281
|
# @see https://api.slack.com/events/group_joined
|
316
282
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_joined.json
|
317
283
|
on :group_joined do |data|
|
318
|
-
|
284
|
+
channel = Models::Channel.new(data.channel)
|
285
|
+
private_channels[channel.id] = channel
|
319
286
|
end
|
320
287
|
|
321
|
-
# You left a private
|
288
|
+
# You left a private channel.
|
322
289
|
# @see https://api.slack.com/events/group_left
|
323
290
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_left.json
|
324
291
|
on :group_left do |data|
|
325
|
-
channel
|
326
|
-
|
292
|
+
# Deleting because we can't access a private channel when we're not a member
|
293
|
+
private_channels.delete(data.channel)
|
327
294
|
end
|
328
295
|
|
329
|
-
# A private
|
296
|
+
# A private channel read marker was updated.
|
330
297
|
# @see https://api.slack.com/events/group_marked
|
331
298
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_marked.json
|
332
299
|
# on :group_marked do |data|
|
333
300
|
|
334
|
-
# You
|
301
|
+
# You created a group DM.
|
335
302
|
# @see https://api.slack.com/events/group_open
|
336
303
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_open.json
|
337
304
|
on :group_open do |data|
|
338
|
-
|
305
|
+
channel = private_channels[data.channel]
|
306
|
+
channel.is_open = true if channel
|
339
307
|
end
|
340
308
|
|
341
|
-
# A private
|
309
|
+
# A private channel was renamed.
|
342
310
|
# @see https://api.slack.com/events/group_rename
|
343
311
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_rename.json
|
344
312
|
on :group_rename do |data|
|
345
|
-
channel =
|
346
|
-
channel
|
313
|
+
channel = private_channels[data.channel.id]
|
314
|
+
channel&.merge!(data.channel)
|
347
315
|
end
|
348
316
|
|
349
|
-
# A private
|
317
|
+
# A private channel was unarchived.
|
350
318
|
# @see https://api.slack.com/events/group_unarchive
|
351
319
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/group_unarchive.json
|
352
320
|
on :group_unarchive do |data|
|
353
|
-
channel =
|
321
|
+
channel = private_channels[data.channel]
|
354
322
|
channel.is_archived = false if channel
|
355
323
|
end
|
356
324
|
|
357
|
-
#
|
325
|
+
# The client has successfully connected to the server.
|
326
|
+
# @see https://api.slack.com/events/hello
|
327
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/hello.json
|
328
|
+
on :hello do |_data, client|
|
329
|
+
# rubocop:disable Metrics/BlockNesting
|
330
|
+
if caches.include?(:teams)
|
331
|
+
team_info = client.web_client.team_info
|
332
|
+
team = Models::Team.new(team_info.team)
|
333
|
+
teams[team.id] = teams.key?(team.id) ? teams[team.id].merge(team) : team
|
334
|
+
end
|
335
|
+
|
336
|
+
if caches.include?(:users) || caches.include?(:bots)
|
337
|
+
client.web_client.users_list do |users_list|
|
338
|
+
users_list.members.each do |user_data|
|
339
|
+
if caches.include?(:users)
|
340
|
+
user = Models::User.new(user_data)
|
341
|
+
users[user.id] = users.key?(user.id) ? users[user.id].merge(user) : user
|
342
|
+
end
|
343
|
+
|
344
|
+
next unless user_data.is_bot? && caches.include?(:bots)
|
345
|
+
|
346
|
+
bot_info = client.web_client.bots_info(bot: user_data.profile.bot_id)
|
347
|
+
bot = Models::Bot.new(bot_info.bot)
|
348
|
+
bots[bot.id] = bots.key?(bot.id) ? bots[bot.id].merge(bot) : bot
|
349
|
+
end
|
350
|
+
end
|
351
|
+
end
|
352
|
+
|
353
|
+
if caches.include?(:public_channels) || caches.include?(:private_channels) ||
|
354
|
+
caches.include?(:ims) || caches.include?(:mpims)
|
355
|
+
types = CONVERSATION_TYPES.slice(*caches).values.join(',')
|
356
|
+
client.web_client.conversations_list(types: types) do |conversations|
|
357
|
+
conversations.channels.each do |channel_data|
|
358
|
+
if channel_data.is_mpim?
|
359
|
+
mpim = Models::Mpim.new(channel_data)
|
360
|
+
mpims[mpim.id] = mpims.key?(mpim.id) ? mpims[mpim.id].merge(mpim) : mpim
|
361
|
+
elsif channel_data.is_im?
|
362
|
+
im = Models::Im.new(channel_data)
|
363
|
+
ims[im.id] = ims.key?(im.id) ? ims[im.id].merge(im) : im
|
364
|
+
elsif channel_data.is_channel? || channel_data.is_group?
|
365
|
+
channel = Models::Channel.new(channel_data)
|
366
|
+
if channel.is_private?
|
367
|
+
private_channels[channel.id] =
|
368
|
+
private_channels.key?(channel.id) ? private_channels[channel.id].merge(channel) : channel
|
369
|
+
else
|
370
|
+
public_channels[channel.id] =
|
371
|
+
public_channels.key?(channel.id) ? public_channels[channel.id].merge(channel) : channel
|
372
|
+
end
|
373
|
+
end
|
374
|
+
end
|
375
|
+
end
|
376
|
+
end
|
377
|
+
# rubocop:enable Metrics/BlockNesting
|
378
|
+
end
|
379
|
+
|
380
|
+
# You closed a DM.
|
358
381
|
# @see https://api.slack.com/events/im_close
|
359
382
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_close.json
|
360
383
|
on :im_close do |data|
|
361
|
-
return unless ims
|
384
|
+
return unless ims&.key?(data.channel)
|
385
|
+
|
362
386
|
ims[data.channel].is_open = false
|
363
387
|
end
|
364
388
|
|
365
|
-
# A
|
389
|
+
# A DM was created.
|
366
390
|
# @see https://api.slack.com/events/im_created
|
367
391
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_created.json
|
368
392
|
on :im_created do |data|
|
369
|
-
|
393
|
+
im = Models::Im.new(data.channel)
|
394
|
+
ims[im.id] = im
|
370
395
|
end
|
371
396
|
|
372
|
-
# Bulk updates were made to a DM
|
397
|
+
# Bulk updates were made to a DM's history.
|
373
398
|
# @see https://api.slack.com/events/im_history_changed
|
374
399
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_history_changed.json
|
375
400
|
# on :im_history_changed do |data|
|
@@ -379,11 +404,12 @@ module Slack
|
|
379
404
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_marked.json
|
380
405
|
# on :im_marked do |data|
|
381
406
|
|
382
|
-
# You opened a
|
407
|
+
# You opened a DM.
|
383
408
|
# @see https://api.slack.com/events/im_open
|
384
409
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/im_open.json
|
385
410
|
on :im_open do |data|
|
386
|
-
return unless ims
|
411
|
+
return unless ims&.key?(data.channel)
|
412
|
+
|
387
413
|
ims[data.channel].is_open = true
|
388
414
|
end
|
389
415
|
|
@@ -394,6 +420,25 @@ module Slack
|
|
394
420
|
self.self.presence = data.presence
|
395
421
|
end
|
396
422
|
|
423
|
+
# A user joined a public channel, private channel or MPDM..
|
424
|
+
# @see https://api.slack.com/events/member_joined_channel
|
425
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/member_joined_channel.json
|
426
|
+
on :member_joined_channel do |data|
|
427
|
+
channel = public_channels[data.channel] || private_channels[data.channel]
|
428
|
+
if channel
|
429
|
+
channel.members ||= Set.new
|
430
|
+
channel.members << data.user
|
431
|
+
end
|
432
|
+
end
|
433
|
+
|
434
|
+
# A user left a public or private channel.
|
435
|
+
# @see https://api.slack.com/events/member_left_channel
|
436
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/member_left_channel.json
|
437
|
+
on :member_left_channel do |data|
|
438
|
+
channel = public_channels[data.channel] || private_channels[data.channel]
|
439
|
+
channel&.members&.delete(data.user)
|
440
|
+
end
|
441
|
+
|
397
442
|
# A pin was added to a channel.
|
398
443
|
# @see https://api.slack.com/events/pin_added
|
399
444
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/pin_added.json
|
@@ -412,7 +457,7 @@ module Slack
|
|
412
457
|
self.self.prefs[data.name] = data.value
|
413
458
|
end
|
414
459
|
|
415
|
-
# A
|
460
|
+
# A member's presence changed.
|
416
461
|
# @see https://api.slack.com/events/presence_change
|
417
462
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/presence_change.json
|
418
463
|
on :presence_change do |data|
|
@@ -420,12 +465,22 @@ module Slack
|
|
420
465
|
user.presence = data.presence if user
|
421
466
|
end
|
422
467
|
|
423
|
-
#
|
468
|
+
# Determine the current presence status for a list of users.
|
469
|
+
# @see https://api.slack.com/events/presence_query
|
470
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/presence_query.json
|
471
|
+
# on :presence_query do |data|
|
472
|
+
|
473
|
+
# Subscribe to presence events for the specified users.
|
474
|
+
# @see https://api.slack.com/events/presence_sub
|
475
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/presence_sub.json
|
476
|
+
# on :presence_sub do |data|
|
477
|
+
|
478
|
+
# A member has added an emoji reaction to an item.
|
424
479
|
# @see https://api.slack.com/events/reaction_added
|
425
480
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/reaction_added.json
|
426
481
|
# on :reaction_added do |data|
|
427
482
|
|
428
|
-
# A
|
483
|
+
# A member removed an emoji reaction.
|
429
484
|
# @see https://api.slack.com/events/reaction_removed
|
430
485
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/reaction_removed.json
|
431
486
|
# on :reaction_removed do |data|
|
@@ -435,37 +490,47 @@ module Slack
|
|
435
490
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/reconnect_url.json
|
436
491
|
# on :reconnect_url do |data|
|
437
492
|
|
438
|
-
# A
|
493
|
+
# A shared channel invite was sent to a Slack user.
|
494
|
+
# @see https://api.slack.com/events/shared_channel_invite_received
|
495
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/shared_channel_invite_received.json
|
496
|
+
# on :shared_channel_invite_received do |data|
|
497
|
+
|
498
|
+
# A member has saved an item for later or starred an item.
|
439
499
|
# @see https://api.slack.com/events/star_added
|
440
500
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/star_added.json
|
441
501
|
# on :star_added do |data|
|
442
502
|
|
443
|
-
# A
|
503
|
+
# A member has removed an item saved for later or starred an item.
|
444
504
|
# @see https://api.slack.com/events/star_removed
|
445
505
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/star_removed.json
|
446
506
|
# on :star_removed do |data|
|
447
507
|
|
448
|
-
# A
|
508
|
+
# A User Group has been added to the workspace.
|
449
509
|
# @see https://api.slack.com/events/subteam_created
|
450
510
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/subteam_created.json
|
451
511
|
# on :subteam_created do |data|
|
452
512
|
|
453
|
-
#
|
513
|
+
# The membership of an existing User Group has changed.
|
514
|
+
# @see https://api.slack.com/events/subteam_members_changed
|
515
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/subteam_members_changed.json
|
516
|
+
# on :subteam_members_changed do |data|
|
517
|
+
|
518
|
+
# You have been added to a User Group.
|
454
519
|
# @see https://api.slack.com/events/subteam_self_added
|
455
520
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/subteam_self_added.json
|
456
521
|
# on :subteam_self_added do |data|
|
457
522
|
|
458
|
-
# You have been removed from a
|
523
|
+
# You have been removed from a User Group.
|
459
524
|
# @see https://api.slack.com/events/subteam_self_removed
|
460
525
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/subteam_self_removed.json
|
461
526
|
# on :subteam_self_removed do |data|
|
462
527
|
|
463
|
-
# An existing
|
528
|
+
# An existing User Group has been updated or its members changed.
|
464
529
|
# @see https://api.slack.com/events/subteam_updated
|
465
530
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/subteam_updated.json
|
466
531
|
# on :subteam_updated do |data|
|
467
532
|
|
468
|
-
# The
|
533
|
+
# The workspace domain has changed.
|
469
534
|
# @see https://api.slack.com/events/team_domain_change
|
470
535
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/team_domain_change.json
|
471
536
|
on :team_domain_change do |data|
|
@@ -473,26 +538,27 @@ module Slack
|
|
473
538
|
team.domain = data.domain
|
474
539
|
end
|
475
540
|
|
476
|
-
# A new
|
541
|
+
# A new member has joined.
|
477
542
|
# @see https://api.slack.com/events/team_join
|
478
543
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/team_join.json
|
479
544
|
on :team_join do |data|
|
480
|
-
|
545
|
+
user = Models::User.new(data.user)
|
546
|
+
users[user.id] = user
|
481
547
|
end
|
482
548
|
|
483
|
-
# The
|
549
|
+
# The workspace is being migrated between servers.
|
484
550
|
# @see https://api.slack.com/events/team_migration_started
|
485
551
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/team_migration_started.json
|
486
552
|
# on :team_migration_started do |data|
|
487
553
|
|
488
|
-
# The
|
554
|
+
# The account billing plan has changed.
|
489
555
|
# @see https://api.slack.com/events/team_plan_change
|
490
556
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/team_plan_change.json
|
491
557
|
on :team_plan_change do |data|
|
492
558
|
team.plan = data.plan
|
493
559
|
end
|
494
560
|
|
495
|
-
# A
|
561
|
+
# A preference has been updated.
|
496
562
|
# @see https://api.slack.com/events/team_pref_change
|
497
563
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/team_pref_change.json
|
498
564
|
on :team_pref_change do |data|
|
@@ -500,34 +566,53 @@ module Slack
|
|
500
566
|
team.prefs[data.name] = data.value
|
501
567
|
end
|
502
568
|
|
503
|
-
#
|
569
|
+
# The workspace profile fields have been updated.
|
504
570
|
# @see https://api.slack.com/events/team_profile_change
|
505
571
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/team_profile_change.json
|
506
572
|
# on :team_profile_change do |data|
|
507
573
|
|
508
|
-
#
|
574
|
+
# The workspace profile fields have been deleted.
|
509
575
|
# @see https://api.slack.com/events/team_profile_delete
|
510
576
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/team_profile_delete.json
|
511
577
|
# on :team_profile_delete do |data|
|
512
578
|
|
513
|
-
#
|
579
|
+
# The workspace profile fields have been reordered.
|
514
580
|
# @see https://api.slack.com/events/team_profile_reorder
|
515
581
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/team_profile_reorder.json
|
516
582
|
# on :team_profile_reorder do |data|
|
517
583
|
|
518
|
-
# The
|
584
|
+
# The workspace name has changed.
|
519
585
|
# @see https://api.slack.com/events/team_rename
|
520
586
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/team_rename.json
|
521
587
|
on :team_rename do |data|
|
522
588
|
team.name = data.name
|
523
589
|
end
|
524
590
|
|
525
|
-
# A
|
591
|
+
# A member's data has changed.
|
526
592
|
# @see https://api.slack.com/events/user_change
|
527
593
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/user_change.json
|
528
594
|
on :user_change do |data|
|
529
|
-
|
530
|
-
|
595
|
+
user = Models::User.new(data.user)
|
596
|
+
users[user.id] = user
|
597
|
+
end
|
598
|
+
|
599
|
+
# A user's huddle status has changed.
|
600
|
+
# @see https://api.slack.com/events/user_huddle_changed
|
601
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/user_huddle_changed.json
|
602
|
+
# on :user_huddle_changed do |data|
|
603
|
+
# (handled by :user_change)
|
604
|
+
|
605
|
+
# A user's profile data has changed.
|
606
|
+
# @see https://api.slack.com/events/user_profile_changed
|
607
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/user_profile_changed.json
|
608
|
+
# on :user_profile_changed do |data|
|
609
|
+
# (handled by :user_change)
|
610
|
+
|
611
|
+
# A user's status has changed.
|
612
|
+
# @see https://api.slack.com/events/user_status_changed
|
613
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/events/user_status_changed.json
|
614
|
+
# on :user_status_changed do |data|
|
615
|
+
# (handled by :user_change)
|
531
616
|
|
532
617
|
# A channel member is typing a message.
|
533
618
|
# @see https://api.slack.com/events/user_typing
|