slack-ruby-client 0.13.1 → 2.0.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/.github/workflows/integration_test.yml +26 -0
- data/.github/workflows/lint.yml +14 -0
- data/.github/workflows/pr_lint.yml +21 -0
- data/.github/workflows/test.yml +36 -0
- data/.gitignore +5 -3
- data/.rubocop.yml +34 -5
- data/.rubocop_todo.yml +180 -46
- data/.ruby-version +1 -0
- data/CHANGELOG.md +119 -2
- data/CONTRIBUTING.md +23 -11
- data/Dangerfile +2 -0
- data/Gemfile +22 -5
- data/Gemfile.danger +6 -0
- data/LICENSE.md +1 -1
- data/README.md +236 -101
- data/RELEASING.md +2 -2
- data/Rakefile +2 -1
- data/UPGRADING.md +100 -2
- data/bin/commands/admin_analytics.rb +16 -0
- data/bin/commands/admin_apps.rb +51 -0
- data/bin/commands/admin_apps_approved.rb +17 -0
- data/bin/commands/admin_apps_requests.rb +28 -0
- data/bin/commands/admin_apps_restricted.rb +17 -0
- data/bin/commands/admin_audit_anomaly_allow.rb +23 -0
- data/bin/commands/admin_auth_policy.rb +39 -0
- data/bin/commands/admin_barriers.rb +47 -0
- data/bin/commands/admin_conversations.rb +171 -0
- data/bin/commands/admin_conversations_ekm.rb +17 -0
- data/bin/commands/admin_conversations_restrictAccess.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 +98 -0
- data/bin/commands/admin_users_session.rb +78 -0
- data/bin/commands/admin_users_unsupportedVersions.rb +15 -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_manifest.rb +52 -0
- data/bin/commands/auth.rb +1 -0
- data/bin/commands/auth_teams.rb +16 -0
- data/bin/commands/bookmarks.rb +53 -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/chat.rb +61 -14
- data/bin/commands/chat_scheduledMessages.rb +19 -0
- data/bin/commands/conversations.rb +82 -10
- data/bin/commands/dialog.rb +1 -0
- data/bin/commands/dnd.rb +6 -3
- data/bin/commands/emoji.rb +1 -0
- data/bin/commands/files.rb +34 -18
- data/bin/commands/files_comments.rb +1 -21
- data/bin/commands/files_remote.rb +78 -0
- data/bin/commands/migration.rb +2 -0
- data/bin/commands/oauth.rb +2 -14
- data/bin/commands/oauth_v2.rb +29 -0
- data/bin/commands/openid_connect.rb +27 -0
- data/bin/commands/pins.rb +3 -6
- data/bin/commands/reactions.rb +3 -3
- data/bin/commands/reminders.rb +7 -0
- data/bin/commands/rtm.rb +1 -15
- data/bin/commands/search.rb +6 -1
- data/bin/commands/stars.rb +8 -6
- data/bin/commands/team.rb +6 -0
- data/bin/commands/team_billing.rb +13 -0
- data/bin/commands/team_preferences.rb +13 -0
- data/bin/commands/team_profile.rb +1 -0
- data/bin/commands/tooling_tokens.rb +14 -0
- data/bin/commands/usergroups.rb +7 -1
- data/bin/commands/usergroups_users.rb +3 -0
- data/bin/commands/users.rb +6 -4
- 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 +50 -0
- data/bin/commands/workflows.rb +38 -0
- data/bin/commands.rb +41 -8
- data/bin/slack +3 -4
- 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/config.rb +2 -2
- data/lib/slack/events/config.rb +32 -0
- data/lib/slack/events/request.rb +72 -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 +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 +105 -54
- data/lib/slack/real_time/concurrency/async.rb +77 -6
- data/lib/slack/real_time/concurrency.rb +1 -2
- data/lib/slack/real_time/config.rb +9 -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 +45 -17
- data/lib/slack/real_time/stores/base.rb +28 -14
- data/lib/slack/real_time/stores/starter.rb +325 -297
- data/lib/slack/real_time/stores/store.rb +271 -196
- data/lib/slack/real_time/stores.rb +2 -7
- 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_approved.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_apps_requests.rb +51 -0
- data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -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 +264 -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_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 +163 -0
- data/lib/slack/web/api/endpoints/admin_users_session.rb +122 -0
- data/lib/slack/web/api/endpoints/admin_users_unsupportedVersions.rb +25 -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_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 +77 -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 +88 -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/chat.rb +168 -65
- data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
- data/lib/slack/web/api/endpoints/conversations.rb +182 -67
- data/lib/slack/web/api/endpoints/dialog.rb +5 -4
- data/lib/slack/web/api/endpoints/dnd.rb +9 -4
- data/lib/slack/web/api/endpoints/emoji.rb +1 -0
- data/lib/slack/web/api/endpoints/files.rb +69 -37
- 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/migration.rb +6 -3
- data/lib/slack/web/api/endpoints/oauth.rb +7 -31
- 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 +22 -21
- data/lib/slack/web/api/endpoints/reminders.rb +23 -10
- data/lib/slack/web/api/endpoints/rtm.rb +3 -25
- data/lib/slack/web/api/endpoints/search.rb +31 -16
- data/lib/slack/web/api/endpoints/stars.rb +14 -11
- data/lib/slack/web/api/endpoints/team.rb +15 -4
- 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 +2 -1
- data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
- data/lib/slack/web/api/endpoints/usergroups.rb +31 -20
- data/lib/slack/web/api/endpoints/usergroups_users.rb +13 -8
- data/lib/slack/web/api/endpoints/users.rb +24 -23
- data/lib/slack/web/api/endpoints/users_admin.rb +3 -2
- data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
- data/lib/slack/web/api/endpoints/users_profile.rb +8 -7
- data/lib/slack/web/api/endpoints/views.rb +102 -0
- data/lib/slack/web/api/endpoints/workflows.rb +61 -0
- data/lib/slack/web/api/endpoints.rb +82 -18
- 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 +1116 -0
- data/lib/slack/web/api/mixins/{channels.id.rb → conversations.id.rb} +5 -6
- data/lib/slack/web/api/mixins/ids.id.rb +3 -2
- data/lib/slack/web/api/mixins/users.id.rb +3 -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/patches/chat.attachments-blocks.patch +69 -0
- data/lib/slack/web/api/patches/{dialog.1.open-json-support.patch → dialog.encoded-json.patch} +4 -4
- data/lib/slack/web/api/patches/views.view-json.patch +55 -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 -2
- data/lib/slack/web/api/templates/errors.erb +20 -0
- data/lib/slack/web/api/templates/method.erb +6 -2
- 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 +5 -2
- data/lib/slack/web/faraday/connection.rb +24 -20
- data/lib/slack/web/faraday/request.rb +5 -1
- data/lib/slack/web/faraday/response/raise_error.rb +14 -7
- 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 +12 -5
- 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 +48 -12
- data/screenshots/create-app.png +0 -0
- data/slack-ruby-client.gemspec +7 -12
- 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 +347 -26
- 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 +83 -0
- data/spec/integration/integration_spec.rb +115 -47
- data/spec/slack/config_spec.rb +2 -0
- data/spec/slack/events/config_spec.rb +35 -0
- data/spec/slack/events/request_spec.rb +188 -0
- data/spec/slack/messages/formatting_spec.rb +35 -13
- data/spec/slack/real_time/api/message_spec.rb +7 -2
- data/spec/slack/real_time/api/ping_spec.rb +3 -1
- data/spec/slack/real_time/api/typing_spec.rb +6 -2
- data/spec/slack/real_time/client_spec.rb +300 -142
- 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 +20 -17
- data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +3 -2
- data/spec/slack/real_time/event_handlers/im_spec.rb +31 -27
- data/spec/slack/real_time/event_handlers/{group_spec.rb → private_channel_spec.rb} +36 -27
- data/spec/slack/real_time/event_handlers/{channel_spec.rb → public_channel_spec.rb} +31 -24
- data/spec/slack/real_time/event_handlers/team_spec.rb +8 -7
- data/spec/slack/real_time/event_handlers/user_spec.rb +7 -5
- data/spec/slack/real_time/rtm_connect_spec.rb +2 -1
- data/spec/slack/real_time/stores/store_spec.rb +50 -0
- data/spec/slack/slack_spec.rb +41 -6
- 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 +13 -0
- data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_spec.rb +18 -0
- data/spec/slack/web/api/endpoints/admin_audit_anomaly_allow_spec.rb +8 -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/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 +98 -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 +41 -0
- data/spec/slack/web/api/endpoints/admin_users_spec.rb +67 -0
- data/spec/slack/web/api/endpoints/admin_users_unsupportedVersions_spec.rb +8 -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_manifest_spec.rb +36 -0
- data/spec/slack/web/api/endpoints/apps_spec.rb +16 -0
- data/spec/slack/web/api/endpoints/{apps_permissions_resources_spec.rb → auth_teams_spec.rb} +2 -1
- data/spec/slack/web/api/endpoints/bookmarks_spec.rb +40 -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/custom_specs/auth_spec.rb +9 -7
- data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +144 -40
- data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +18 -6
- data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +8 -3
- data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +112 -0
- data/spec/slack/web/api/endpoints/dnd_spec.rb +4 -3
- 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 +18 -4
- data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -22
- data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +16 -0
- data/spec/slack/web/api/endpoints/openid_connect_spec.rb +8 -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/{apps_permissions_scopes_spec.rb → team_billing_spec.rb} +2 -1
- data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -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/tooling_tokens_spec.rb +13 -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 +7 -7
- data/spec/slack/web/api/errors/slack_error_spec.rb +26 -7
- data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
- data/spec/slack/web/api/mixins/conversations_spec.rb +45 -0
- data/spec/slack/web/api/mixins/users_spec.rb +19 -8
- data/spec/slack/web/api/pagination/cursor_spec.rb +47 -15
- data/spec/slack/web/client_spec.rb +199 -22
- data/spec/slack/web/faraday/request_spec.rb +80 -0
- data/spec/slack/web/faraday/response/raise_error_spec.rb +48 -12
- data/spec/spec_helper.rb +9 -2
- 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 +6 -6
- data/spec/support/real_time/event.rb +1 -0
- data/spec/support/real_time/loaded_client.rb +120 -0
- data/spec/support/token.rb +1 -0
- data/spec/support/vcr.rb +37 -1
- metadata +174 -262
- data/.travis.yml +0 -32
- data/bin/commands/apps_permissions.rb +0 -22
- data/bin/commands/apps_permissions_resources.rb +0 -14
- data/bin/commands/apps_permissions_scopes.rb +0 -12
- data/bin/commands/apps_permissions_users.rb +0 -25
- data/bin/commands/channels.rb +0 -175
- data/bin/commands/groups.rb +0 -174
- data/bin/commands/im.rb +0 -67
- data/bin/commands/mpim.rb +0 -65
- 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 -118
- data/lib/slack/real_time/concurrency/eventmachine.rb +0 -66
- data/lib/slack/web/api/endpoints/apps_permissions.rb +0 -35
- data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +0 -30
- data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +0 -20
- data/lib/slack/web/api/endpoints/apps_permissions_users.rb +0 -49
- data/lib/slack/web/api/endpoints/channels.rb +0 -266
- data/lib/slack/web/api/endpoints/groups.rb +0 -265
- data/lib/slack/web/api/endpoints/im.rb +0 -113
- data/lib/slack/web/api/endpoints/mpim.rb +0 -108
- 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/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/chat.5.postEphemeral-text-or-attachments.patch +0 -13
- data/screenshots/register-bot.png +0 -0
- data/spec/fixtures/slack/web/503_error.yml +0 -14
- 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/rtm_start.yml +0 -104
- 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/real_time/rtm_start_spec.rb +0 -13
- data/spec/slack/real_time/store_spec.rb +0 -11
- data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +0 -15
- data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +0 -18
- data/spec/slack/web/api/endpoints/conversations_spec.rb +0 -100
- 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/endpoints/im_spec.rb +0 -38
- data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -38
- data/spec/slack/web/api/errors/service_unavailable_spec.rb +0 -14
- data/spec/slack/web/api/mixins/channels_spec.rb +0 -33
- data/spec/slack/web/api/mixins/groups_spec.rb +0 -33
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require 'slack-ruby-client'
|
|
2
|
-
|
|
3
|
-
raise 'Missing ENV[SLACK_API_TOKENS]!' unless ENV.key?('SLACK_API_TOKENS')
|
|
4
|
-
|
|
5
|
-
$stdout.sync = true
|
|
6
|
-
logger = Logger.new($stdout)
|
|
7
|
-
logger.level = Logger::DEBUG
|
|
8
|
-
threads = []
|
|
9
|
-
|
|
10
|
-
ENV['SLACK_API_TOKENS'].split.each do |token|
|
|
11
|
-
logger.info "Starting #{token[0..12]} ..."
|
|
12
|
-
|
|
13
|
-
client = Slack::RealTime::Client.new(token: token)
|
|
14
|
-
|
|
15
|
-
client.on :hello do
|
|
16
|
-
logger.info "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
client.on :message do |data|
|
|
20
|
-
logger.info data
|
|
21
|
-
|
|
22
|
-
client.typing channel: data.channel
|
|
23
|
-
|
|
24
|
-
case data.text
|
|
25
|
-
when 'bot hi' then
|
|
26
|
-
client.message channel: data.channel, text: "Hi <@#{data.user}>!"
|
|
27
|
-
when /^bot/ then
|
|
28
|
-
client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
threads << client.start_async
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
threads.each(&:join)
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
require 'slack-ruby-client'
|
|
2
|
-
|
|
3
|
-
raise 'Missing ENV[SLACK_API_TOKENS]!' unless ENV.key?('SLACK_API_TOKENS')
|
|
4
|
-
|
|
5
|
-
$stdout.sync = true
|
|
6
|
-
logger = Logger.new($stdout)
|
|
7
|
-
logger.level = Logger::DEBUG
|
|
8
|
-
threads = []
|
|
9
|
-
|
|
10
|
-
ENV['SLACK_API_TOKENS'].split.each do |token|
|
|
11
|
-
logger.info "Starting #{token[0..12]} ..."
|
|
12
|
-
|
|
13
|
-
client = Slack::RealTime::Client.new(token: token)
|
|
14
|
-
|
|
15
|
-
client.on :hello do
|
|
16
|
-
logger.info "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
|
|
17
|
-
end
|
|
18
|
-
|
|
19
|
-
client.on :message do |data|
|
|
20
|
-
logger.info data
|
|
21
|
-
|
|
22
|
-
client.typing channel: data.channel
|
|
23
|
-
|
|
24
|
-
case data.text
|
|
25
|
-
when 'bot hi' then
|
|
26
|
-
client.message channel: data.channel, text: "Hi <@#{data.user}>!"
|
|
27
|
-
when /^bot/ then
|
|
28
|
-
client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
|
|
29
|
-
end
|
|
30
|
-
end
|
|
31
|
-
|
|
32
|
-
threads << client.start_async
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
threads.each(&:join)
|
|
@@ -1,118 +0,0 @@
|
|
|
1
|
-
require 'websocket/driver'
|
|
2
|
-
require 'socket'
|
|
3
|
-
require 'forwardable'
|
|
4
|
-
require 'celluloid/current'
|
|
5
|
-
require 'celluloid/io'
|
|
6
|
-
|
|
7
|
-
module Slack
|
|
8
|
-
module RealTime
|
|
9
|
-
module Concurrency
|
|
10
|
-
module Celluloid
|
|
11
|
-
class Socket < Slack::RealTime::Socket
|
|
12
|
-
include ::Celluloid::IO
|
|
13
|
-
include ::Celluloid::Internals::Logger
|
|
14
|
-
|
|
15
|
-
BLOCK_SIZE = 4096
|
|
16
|
-
|
|
17
|
-
extend ::Forwardable
|
|
18
|
-
def_delegators :driver, :text, :binary
|
|
19
|
-
|
|
20
|
-
attr_reader :socket
|
|
21
|
-
|
|
22
|
-
def initialize(*args)
|
|
23
|
-
super
|
|
24
|
-
end
|
|
25
|
-
|
|
26
|
-
def connect!
|
|
27
|
-
super
|
|
28
|
-
run_loop
|
|
29
|
-
end
|
|
30
|
-
|
|
31
|
-
def run_loop
|
|
32
|
-
@closing = false
|
|
33
|
-
@socket = build_socket
|
|
34
|
-
@connected = @socket.connect
|
|
35
|
-
driver.start
|
|
36
|
-
loop { read } if socket
|
|
37
|
-
rescue EOFError, Errno::ECONNRESET, Errno::EPIPE => e
|
|
38
|
-
logger.debug("#{self.class}##{__method__}") { e }
|
|
39
|
-
driver.emit(:close, WebSocket::Driver::CloseEvent.new(1001, 'server closed connection')) unless @closing
|
|
40
|
-
ensure
|
|
41
|
-
begin
|
|
42
|
-
current_actor.terminate if current_actor.alive?
|
|
43
|
-
rescue StandardError
|
|
44
|
-
nil
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
def close
|
|
49
|
-
@closing = true
|
|
50
|
-
driver.close
|
|
51
|
-
super
|
|
52
|
-
end
|
|
53
|
-
|
|
54
|
-
def read
|
|
55
|
-
buffer = socket.readpartial(BLOCK_SIZE)
|
|
56
|
-
raise EOFError unless buffer && !buffer.empty?
|
|
57
|
-
async.handle_read(buffer)
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def handle_read(buffer)
|
|
61
|
-
logger.debug("#{self.class}##{__method__}") { buffer }
|
|
62
|
-
driver.parse buffer
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
def write(data)
|
|
66
|
-
logger.debug("#{self.class}##{__method__}") { data }
|
|
67
|
-
socket.write(data)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def start_async(client)
|
|
71
|
-
@client = client
|
|
72
|
-
Actor.new(future.run_client_loop)
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def run_client_loop
|
|
76
|
-
@client.run_loop
|
|
77
|
-
end
|
|
78
|
-
|
|
79
|
-
def connected?
|
|
80
|
-
!@connected.nil?
|
|
81
|
-
end
|
|
82
|
-
|
|
83
|
-
protected
|
|
84
|
-
|
|
85
|
-
class Actor
|
|
86
|
-
attr_reader :future
|
|
87
|
-
|
|
88
|
-
def initialize(future)
|
|
89
|
-
@future = future
|
|
90
|
-
end
|
|
91
|
-
|
|
92
|
-
def join
|
|
93
|
-
@future.value
|
|
94
|
-
end
|
|
95
|
-
end
|
|
96
|
-
|
|
97
|
-
def build_socket
|
|
98
|
-
socket = ::Celluloid::IO::TCPSocket.new(addr, port)
|
|
99
|
-
socket = ::Celluloid::IO::SSLSocket.new(socket, build_ssl_context) if secure?
|
|
100
|
-
socket
|
|
101
|
-
end
|
|
102
|
-
|
|
103
|
-
def build_ssl_context
|
|
104
|
-
OpenSSL::SSL::SSLContext.new(:TLSv1_2_client)
|
|
105
|
-
end
|
|
106
|
-
|
|
107
|
-
def build_driver
|
|
108
|
-
::WebSocket::Driver.client(self)
|
|
109
|
-
end
|
|
110
|
-
|
|
111
|
-
def connect
|
|
112
|
-
@driver = build_driver
|
|
113
|
-
end
|
|
114
|
-
end
|
|
115
|
-
end
|
|
116
|
-
end
|
|
117
|
-
end
|
|
118
|
-
end
|
|
@@ -1,66 +0,0 @@
|
|
|
1
|
-
require 'faye/websocket'
|
|
2
|
-
require 'eventmachine'
|
|
3
|
-
|
|
4
|
-
module Slack
|
|
5
|
-
module RealTime
|
|
6
|
-
module Concurrency
|
|
7
|
-
module Eventmachine
|
|
8
|
-
class Client < Faye::WebSocket::Client
|
|
9
|
-
attr_reader :logger
|
|
10
|
-
protected :logger
|
|
11
|
-
|
|
12
|
-
def initialize(url, protocols = nil, options = {})
|
|
13
|
-
@logger = options.delete(:logger) || Slack::RealTime::Config.logger || Slack::Config.logger
|
|
14
|
-
super
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def parse(data)
|
|
18
|
-
logger.debug("#{self.class}##{__method__}") { data }
|
|
19
|
-
super data
|
|
20
|
-
end
|
|
21
|
-
|
|
22
|
-
def write(data)
|
|
23
|
-
logger.debug("#{self.class}##{__method__}") { data }
|
|
24
|
-
super data
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
|
|
28
|
-
class Socket < Slack::RealTime::Socket
|
|
29
|
-
def start_async(client)
|
|
30
|
-
@thread = ensure_reactor_running
|
|
31
|
-
|
|
32
|
-
client.run_loop
|
|
33
|
-
|
|
34
|
-
@thread
|
|
35
|
-
end
|
|
36
|
-
|
|
37
|
-
def close
|
|
38
|
-
super
|
|
39
|
-
EventMachine.stop if @thread
|
|
40
|
-
@thread = nil
|
|
41
|
-
end
|
|
42
|
-
|
|
43
|
-
def send_data(message)
|
|
44
|
-
logger.debug("#{self.class}##{__method__}") { message }
|
|
45
|
-
driver.send(message)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
protected
|
|
49
|
-
|
|
50
|
-
# @return [Thread]
|
|
51
|
-
def ensure_reactor_running
|
|
52
|
-
return if EventMachine.reactor_running?
|
|
53
|
-
|
|
54
|
-
reactor = Thread.new { EventMachine.run }
|
|
55
|
-
Thread.pass until EventMachine.reactor_running?
|
|
56
|
-
reactor
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def connect
|
|
60
|
-
@driver = Client.new(url, nil, options.merge(logger: logger))
|
|
61
|
-
end
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
|
-
end
|
|
66
|
-
end
|
|
@@ -1,35 +0,0 @@
|
|
|
1
|
-
# This file was auto-generated by lib/tasks/web.rake
|
|
2
|
-
|
|
3
|
-
module Slack
|
|
4
|
-
module Web
|
|
5
|
-
module Api
|
|
6
|
-
module Endpoints
|
|
7
|
-
module AppsPermissions
|
|
8
|
-
#
|
|
9
|
-
# Returns list of permissions this app has on a team.
|
|
10
|
-
#
|
|
11
|
-
# @see https://api.slack.com/methods/apps.permissions.info
|
|
12
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions/apps.permissions.info.json
|
|
13
|
-
def apps_permissions_info(options = {})
|
|
14
|
-
post('apps.permissions.info', options)
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
#
|
|
18
|
-
# Allows an app to request additional scopes
|
|
19
|
-
#
|
|
20
|
-
# @option options [Object] :scopes
|
|
21
|
-
# A comma separated list of scopes to request for.
|
|
22
|
-
# @option options [Object] :trigger_id
|
|
23
|
-
# Token used to trigger the permissions API.
|
|
24
|
-
# @see https://api.slack.com/methods/apps.permissions.request
|
|
25
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions/apps.permissions.request.json
|
|
26
|
-
def apps_permissions_request(options = {})
|
|
27
|
-
throw ArgumentError.new('Required arguments :scopes missing') if options[:scopes].nil?
|
|
28
|
-
throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
|
|
29
|
-
post('apps.permissions.request', options)
|
|
30
|
-
end
|
|
31
|
-
end
|
|
32
|
-
end
|
|
33
|
-
end
|
|
34
|
-
end
|
|
35
|
-
end
|
|
@@ -1,30 +0,0 @@
|
|
|
1
|
-
# This file was auto-generated by lib/tasks/web.rake
|
|
2
|
-
|
|
3
|
-
module Slack
|
|
4
|
-
module Web
|
|
5
|
-
module Api
|
|
6
|
-
module Endpoints
|
|
7
|
-
module AppsPermissionsResources
|
|
8
|
-
#
|
|
9
|
-
# Returns list of resource grants this app has on a team.
|
|
10
|
-
#
|
|
11
|
-
# @option options [Object] :cursor
|
|
12
|
-
# Paginate through collections of data by setting the cursor parameter to a next_cursor attribute returned by a previous request's response_metadata. Default value fetches the first "page" of the collection. See pagination for more detail.
|
|
13
|
-
# @option options [Object] :limit
|
|
14
|
-
# The maximum number of items to return.
|
|
15
|
-
# @see https://api.slack.com/methods/apps.permissions.resources.list
|
|
16
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions.resources/apps.permissions.resources.list.json
|
|
17
|
-
def apps_permissions_resources_list(options = {})
|
|
18
|
-
if block_given?
|
|
19
|
-
Pagination::Cursor.new(self, :apps_permissions_resources_list, options).each do |page|
|
|
20
|
-
yield page
|
|
21
|
-
end
|
|
22
|
-
else
|
|
23
|
-
post('apps.permissions.resources.list', options)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
end
|
|
27
|
-
end
|
|
28
|
-
end
|
|
29
|
-
end
|
|
30
|
-
end
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
# This file was auto-generated by lib/tasks/web.rake
|
|
2
|
-
|
|
3
|
-
module Slack
|
|
4
|
-
module Web
|
|
5
|
-
module Api
|
|
6
|
-
module Endpoints
|
|
7
|
-
module AppsPermissionsScopes
|
|
8
|
-
#
|
|
9
|
-
# Returns list of scopes this app has on a team.
|
|
10
|
-
#
|
|
11
|
-
# @see https://api.slack.com/methods/apps.permissions.scopes.list
|
|
12
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions.scopes/apps.permissions.scopes.list.json
|
|
13
|
-
def apps_permissions_scopes_list(options = {})
|
|
14
|
-
post('apps.permissions.scopes.list', options)
|
|
15
|
-
end
|
|
16
|
-
end
|
|
17
|
-
end
|
|
18
|
-
end
|
|
19
|
-
end
|
|
20
|
-
end
|
|
@@ -1,49 +0,0 @@
|
|
|
1
|
-
# This file was auto-generated by lib/tasks/web.rake
|
|
2
|
-
|
|
3
|
-
module Slack
|
|
4
|
-
module Web
|
|
5
|
-
module Api
|
|
6
|
-
module Endpoints
|
|
7
|
-
module AppsPermissionsUsers
|
|
8
|
-
#
|
|
9
|
-
# Returns list of user grants and corresponding scopes this app has on a team.
|
|
10
|
-
#
|
|
11
|
-
# @option options [Object] :cursor
|
|
12
|
-
# Paginate through collections of data by setting the cursor parameter to a next_cursor attribute returned by a previous request's response_metadata. Default value fetches the first "page" of the collection. See pagination for more detail.
|
|
13
|
-
# @option options [Object] :limit
|
|
14
|
-
# The maximum number of items to return.
|
|
15
|
-
# @see https://api.slack.com/methods/apps.permissions.users.list
|
|
16
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions.users/apps.permissions.users.list.json
|
|
17
|
-
def apps_permissions_users_list(options = {})
|
|
18
|
-
if block_given?
|
|
19
|
-
Pagination::Cursor.new(self, :apps_permissions_users_list, options).each do |page|
|
|
20
|
-
yield page
|
|
21
|
-
end
|
|
22
|
-
else
|
|
23
|
-
post('apps.permissions.users.list', options)
|
|
24
|
-
end
|
|
25
|
-
end
|
|
26
|
-
|
|
27
|
-
#
|
|
28
|
-
# Enables an app to trigger a permissions modal to grant an app access to a user access scope.
|
|
29
|
-
#
|
|
30
|
-
# @option options [Object] :scopes
|
|
31
|
-
# A comma separated list of user scopes to request for.
|
|
32
|
-
# @option options [Object] :trigger_id
|
|
33
|
-
# Token used to trigger the request.
|
|
34
|
-
# @option options [user] :user
|
|
35
|
-
# The user this scope is being requested for.
|
|
36
|
-
# @see https://api.slack.com/methods/apps.permissions.users.request
|
|
37
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/apps.permissions.users/apps.permissions.users.request.json
|
|
38
|
-
def apps_permissions_users_request(options = {})
|
|
39
|
-
throw ArgumentError.new('Required arguments :scopes missing') if options[:scopes].nil?
|
|
40
|
-
throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
|
|
41
|
-
throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
|
|
42
|
-
options = options.merge(user: users_id(options)['user']['id']) if options[:user]
|
|
43
|
-
post('apps.permissions.users.request', options)
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
end
|
|
47
|
-
end
|
|
48
|
-
end
|
|
49
|
-
end
|
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
# This file was auto-generated by lib/tasks/web.rake
|
|
2
|
-
|
|
3
|
-
module Slack
|
|
4
|
-
module Web
|
|
5
|
-
module Api
|
|
6
|
-
module Endpoints
|
|
7
|
-
module Channels
|
|
8
|
-
#
|
|
9
|
-
# Archives a channel.
|
|
10
|
-
#
|
|
11
|
-
# @option options [channel] :channel
|
|
12
|
-
# Channel to archive.
|
|
13
|
-
# @see https://api.slack.com/methods/channels.archive
|
|
14
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.archive.json
|
|
15
|
-
def channels_archive(options = {})
|
|
16
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
17
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
18
|
-
post('channels.archive', options)
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
#
|
|
22
|
-
# Creates a channel.
|
|
23
|
-
#
|
|
24
|
-
# @option options [Object] :name
|
|
25
|
-
# Name of channel to create.
|
|
26
|
-
# @option options [Object] :validate
|
|
27
|
-
# Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
|
|
28
|
-
# @see https://api.slack.com/methods/channels.create
|
|
29
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.create.json
|
|
30
|
-
def channels_create(options = {})
|
|
31
|
-
throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
|
|
32
|
-
post('channels.create', options)
|
|
33
|
-
end
|
|
34
|
-
|
|
35
|
-
#
|
|
36
|
-
# Delete a channel (undocumented)
|
|
37
|
-
#
|
|
38
|
-
# @option options [channel] :channel
|
|
39
|
-
# Channel to delete.
|
|
40
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/channels/channels.delete.json
|
|
41
|
-
def channels_delete(options = {})
|
|
42
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
43
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
44
|
-
logger.warn('The channels.delete method is undocumented.')
|
|
45
|
-
post('channels.delete', options)
|
|
46
|
-
end
|
|
47
|
-
|
|
48
|
-
#
|
|
49
|
-
# Fetches history of messages and events from a channel.
|
|
50
|
-
#
|
|
51
|
-
# @option options [channel] :channel
|
|
52
|
-
# Channel to fetch history for.
|
|
53
|
-
# @option options [Object] :inclusive
|
|
54
|
-
# Include messages with latest or oldest timestamp in results.
|
|
55
|
-
# @option options [timestamp] :latest
|
|
56
|
-
# End of time range of messages to include in results.
|
|
57
|
-
# @option options [timestamp] :oldest
|
|
58
|
-
# Start of time range of messages to include in results.
|
|
59
|
-
# @option options [Object] :unreads
|
|
60
|
-
# Include unread_count_display in the output?.
|
|
61
|
-
# @see https://api.slack.com/methods/channels.history
|
|
62
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.history.json
|
|
63
|
-
def channels_history(options = {})
|
|
64
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
65
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
66
|
-
post('channels.history', options)
|
|
67
|
-
end
|
|
68
|
-
|
|
69
|
-
#
|
|
70
|
-
# Gets information about a channel.
|
|
71
|
-
#
|
|
72
|
-
# @option options [channel] :channel
|
|
73
|
-
# Channel to get info on.
|
|
74
|
-
# @option options [Object] :include_locale
|
|
75
|
-
# Set this to true to receive the locale for this channel. Defaults to false.
|
|
76
|
-
# @see https://api.slack.com/methods/channels.info
|
|
77
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.info.json
|
|
78
|
-
def channels_info(options = {})
|
|
79
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
80
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
81
|
-
post('channels.info', options)
|
|
82
|
-
end
|
|
83
|
-
|
|
84
|
-
#
|
|
85
|
-
# Invites a user to a channel.
|
|
86
|
-
#
|
|
87
|
-
# @option options [channel] :channel
|
|
88
|
-
# Channel to invite user to.
|
|
89
|
-
# @option options [user] :user
|
|
90
|
-
# User to invite to channel.
|
|
91
|
-
# @see https://api.slack.com/methods/channels.invite
|
|
92
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.invite.json
|
|
93
|
-
def channels_invite(options = {})
|
|
94
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
95
|
-
throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
|
|
96
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
97
|
-
options = options.merge(user: users_id(options)['user']['id']) if options[:user]
|
|
98
|
-
post('channels.invite', options)
|
|
99
|
-
end
|
|
100
|
-
|
|
101
|
-
#
|
|
102
|
-
# Joins a channel, creating it if needed.
|
|
103
|
-
#
|
|
104
|
-
# @option options [Object] :name
|
|
105
|
-
# Name of channel to join.
|
|
106
|
-
# @option options [Object] :validate
|
|
107
|
-
# Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
|
|
108
|
-
# @see https://api.slack.com/methods/channels.join
|
|
109
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.join.json
|
|
110
|
-
def channels_join(options = {})
|
|
111
|
-
throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
|
|
112
|
-
post('channels.join', options)
|
|
113
|
-
end
|
|
114
|
-
|
|
115
|
-
#
|
|
116
|
-
# Removes a user from a channel.
|
|
117
|
-
#
|
|
118
|
-
# @option options [channel] :channel
|
|
119
|
-
# Channel to remove user from.
|
|
120
|
-
# @option options [user] :user
|
|
121
|
-
# User to remove from channel.
|
|
122
|
-
# @see https://api.slack.com/methods/channels.kick
|
|
123
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.kick.json
|
|
124
|
-
def channels_kick(options = {})
|
|
125
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
126
|
-
throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
|
|
127
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
128
|
-
options = options.merge(user: users_id(options)['user']['id']) if options[:user]
|
|
129
|
-
post('channels.kick', options)
|
|
130
|
-
end
|
|
131
|
-
|
|
132
|
-
#
|
|
133
|
-
# Leaves a channel.
|
|
134
|
-
#
|
|
135
|
-
# @option options [channel] :channel
|
|
136
|
-
# Channel to leave.
|
|
137
|
-
# @see https://api.slack.com/methods/channels.leave
|
|
138
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.leave.json
|
|
139
|
-
def channels_leave(options = {})
|
|
140
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
141
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
142
|
-
post('channels.leave', options)
|
|
143
|
-
end
|
|
144
|
-
|
|
145
|
-
#
|
|
146
|
-
# Lists all channels in a Slack team.
|
|
147
|
-
#
|
|
148
|
-
# @option options [Object] :cursor
|
|
149
|
-
# Paginate through collections of data by setting the cursor parameter to a next_cursor attribute returned by a previous request's response_metadata. Default value fetches the first "page" of the collection. See pagination for more detail.
|
|
150
|
-
# @option options [Object] :exclude_archived
|
|
151
|
-
# Exclude archived channels from the list.
|
|
152
|
-
# @option options [Object] :exclude_members
|
|
153
|
-
# Exclude the members collection from each channel.
|
|
154
|
-
# @option options [Object] :limit
|
|
155
|
-
# The maximum number of items to return. Fewer than the requested number of items may be returned, even if the end of the users list hasn't been reached.
|
|
156
|
-
# @see https://api.slack.com/methods/channels.list
|
|
157
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.list.json
|
|
158
|
-
def channels_list(options = {})
|
|
159
|
-
if block_given?
|
|
160
|
-
Pagination::Cursor.new(self, :channels_list, options).each do |page|
|
|
161
|
-
yield page
|
|
162
|
-
end
|
|
163
|
-
else
|
|
164
|
-
post('channels.list', options)
|
|
165
|
-
end
|
|
166
|
-
end
|
|
167
|
-
|
|
168
|
-
#
|
|
169
|
-
# Sets the read cursor in a channel.
|
|
170
|
-
#
|
|
171
|
-
# @option options [channel] :channel
|
|
172
|
-
# Channel to set reading cursor in.
|
|
173
|
-
# @option options [timestamp] :ts
|
|
174
|
-
# Timestamp of the most recently seen message.
|
|
175
|
-
# @see https://api.slack.com/methods/channels.mark
|
|
176
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.mark.json
|
|
177
|
-
def channels_mark(options = {})
|
|
178
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
179
|
-
throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
|
|
180
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
181
|
-
post('channels.mark', options)
|
|
182
|
-
end
|
|
183
|
-
|
|
184
|
-
#
|
|
185
|
-
# Renames a channel.
|
|
186
|
-
#
|
|
187
|
-
# @option options [channel] :channel
|
|
188
|
-
# Channel to rename.
|
|
189
|
-
# @option options [Object] :name
|
|
190
|
-
# New name for channel.
|
|
191
|
-
# @option options [Object] :validate
|
|
192
|
-
# Whether to return errors on invalid channel name instead of modifying it to meet the specified criteria.
|
|
193
|
-
# @see https://api.slack.com/methods/channels.rename
|
|
194
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.rename.json
|
|
195
|
-
def channels_rename(options = {})
|
|
196
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
197
|
-
throw ArgumentError.new('Required arguments :name missing') if options[:name].nil?
|
|
198
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
199
|
-
post('channels.rename', options)
|
|
200
|
-
end
|
|
201
|
-
|
|
202
|
-
#
|
|
203
|
-
# Retrieve a thread of messages posted to a channel
|
|
204
|
-
#
|
|
205
|
-
# @option options [channel] :channel
|
|
206
|
-
# Channel to fetch thread from.
|
|
207
|
-
# @option options [Object] :thread_ts
|
|
208
|
-
# Unique identifier of a thread's parent message.
|
|
209
|
-
# @see https://api.slack.com/methods/channels.replies
|
|
210
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.replies.json
|
|
211
|
-
def channels_replies(options = {})
|
|
212
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
213
|
-
throw ArgumentError.new('Required arguments :thread_ts missing') if options[:thread_ts].nil?
|
|
214
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
215
|
-
post('channels.replies', options)
|
|
216
|
-
end
|
|
217
|
-
|
|
218
|
-
#
|
|
219
|
-
# Sets the purpose for a channel.
|
|
220
|
-
#
|
|
221
|
-
# @option options [channel] :channel
|
|
222
|
-
# Channel to set the purpose of.
|
|
223
|
-
# @option options [Object] :purpose
|
|
224
|
-
# The new purpose.
|
|
225
|
-
# @see https://api.slack.com/methods/channels.setPurpose
|
|
226
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.setPurpose.json
|
|
227
|
-
def channels_setPurpose(options = {})
|
|
228
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
229
|
-
throw ArgumentError.new('Required arguments :purpose missing') if options[:purpose].nil?
|
|
230
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
231
|
-
post('channels.setPurpose', options)
|
|
232
|
-
end
|
|
233
|
-
|
|
234
|
-
#
|
|
235
|
-
# Sets the topic for a channel.
|
|
236
|
-
#
|
|
237
|
-
# @option options [channel] :channel
|
|
238
|
-
# Channel to set the topic of.
|
|
239
|
-
# @option options [Object] :topic
|
|
240
|
-
# The new topic.
|
|
241
|
-
# @see https://api.slack.com/methods/channels.setTopic
|
|
242
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.setTopic.json
|
|
243
|
-
def channels_setTopic(options = {})
|
|
244
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
245
|
-
throw ArgumentError.new('Required arguments :topic missing') if options[:topic].nil?
|
|
246
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
247
|
-
post('channels.setTopic', options)
|
|
248
|
-
end
|
|
249
|
-
|
|
250
|
-
#
|
|
251
|
-
# Unarchives a channel.
|
|
252
|
-
#
|
|
253
|
-
# @option options [channel] :channel
|
|
254
|
-
# Channel to unarchive.
|
|
255
|
-
# @see https://api.slack.com/methods/channels.unarchive
|
|
256
|
-
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/channels/channels.unarchive.json
|
|
257
|
-
def channels_unarchive(options = {})
|
|
258
|
-
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
259
|
-
options = options.merge(channel: channels_id(options)['channel']['id']) if options[:channel]
|
|
260
|
-
post('channels.unarchive', options)
|
|
261
|
-
end
|
|
262
|
-
end
|
|
263
|
-
end
|
|
264
|
-
end
|
|
265
|
-
end
|
|
266
|
-
end
|