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,23 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require_relative 'ids.id'
|
|
2
3
|
|
|
3
4
|
module Slack
|
|
4
5
|
module Web
|
|
5
6
|
module Api
|
|
6
7
|
module Mixins
|
|
7
|
-
module
|
|
8
|
+
module Conversations
|
|
8
9
|
include Ids
|
|
9
10
|
#
|
|
10
11
|
# This method returns a channel ID given a channel name.
|
|
11
12
|
#
|
|
12
13
|
# @option options [channel] :channel
|
|
13
14
|
# Channel to get ID for, prefixed with #.
|
|
14
|
-
def
|
|
15
|
+
def conversations_id(options = {})
|
|
15
16
|
name = options[:channel]
|
|
16
|
-
|
|
17
|
+
raise ArgumentError, 'Required arguments :channel missing' if name.nil?
|
|
17
18
|
|
|
18
|
-
id_for
|
|
19
|
-
channels_list
|
|
20
|
-
end
|
|
19
|
+
id_for :channel, name, '#', :conversations_list, :channels, 'channel_not_found'
|
|
21
20
|
end
|
|
22
21
|
end
|
|
23
22
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Web
|
|
3
4
|
module Api
|
|
@@ -5,10 +6,10 @@ module Slack
|
|
|
5
6
|
module Ids
|
|
6
7
|
private
|
|
7
8
|
|
|
8
|
-
def id_for(key, name, prefix, list_method, not_found_error)
|
|
9
|
+
def id_for(key, name, prefix, enum_method, list_method, not_found_error)
|
|
9
10
|
return { 'ok' => true, key.to_s => { 'id' => name } } unless name[0] == prefix
|
|
10
11
|
|
|
11
|
-
|
|
12
|
+
public_send enum_method do |list|
|
|
12
13
|
list.public_send(list_method).each do |li|
|
|
13
14
|
return Slack::Messages::Message.new('ok' => true, key.to_s => { 'id' => li.id }) if li.name == name[1..-1]
|
|
14
15
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require_relative 'ids.id'
|
|
2
3
|
|
|
3
4
|
module Slack
|
|
@@ -13,11 +14,9 @@ module Slack
|
|
|
13
14
|
# User to get ID for, prefixed with '@'.
|
|
14
15
|
def users_id(options = {})
|
|
15
16
|
name = options[:user]
|
|
16
|
-
|
|
17
|
+
raise ArgumentError, 'Required arguments :user missing' if name.nil?
|
|
17
18
|
|
|
18
|
-
id_for
|
|
19
|
-
users_list
|
|
20
|
-
end
|
|
19
|
+
id_for :user, name, '@', :users_list, :members, 'user_not_found'
|
|
21
20
|
end
|
|
22
21
|
end
|
|
23
22
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
if defined?(Picky)
|
|
2
3
|
module Slack
|
|
3
4
|
module Web
|
|
@@ -13,7 +14,8 @@ if defined?(Picky)
|
|
|
13
14
|
# Free-formed text to search for.
|
|
14
15
|
def users_search(options = {})
|
|
15
16
|
query = options[:user]
|
|
16
|
-
|
|
17
|
+
raise ArgumentError, 'Required arguments :user missing' if query.nil?
|
|
18
|
+
|
|
17
19
|
index = Picky::Index.new(:users) do
|
|
18
20
|
category :name
|
|
19
21
|
category :first_name
|
data/lib/slack/web/api/mixins.rb
CHANGED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
diff --git a/lib/slack/web/api/endpoints/chat.rb b/lib/slack/web/api/endpoints/chat.rb
|
|
2
|
+
index 701cd1e..07acc40 100644
|
|
3
|
+
--- a/lib/slack/web/api/endpoints/chat.rb
|
|
4
|
+
+++ b/lib/slack/web/api/endpoints/chat.rb
|
|
5
|
+
@@ -122,9 +122,21 @@ module Slack
|
|
6
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postEphemeral.json
|
|
7
|
+
def chat_postEphemeral(options = {})
|
|
8
|
+
raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
|
|
9
|
+
- raise ArgumentError, 'Required arguments :text missing' if options[:text].nil?
|
|
10
|
+
+ raise ArgumentError, 'Required arguments :text, :attachments or :blocks missing' if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
|
|
11
|
+
raise ArgumentError, 'Required arguments :user missing' if options[:user].nil?
|
|
12
|
+
options = options.merge(user: users_id(options)['user']['id']) if options[:user]
|
|
13
|
+
+ # attachments must be passed as an encoded JSON string
|
|
14
|
+
+ if options.key?(:attachments)
|
|
15
|
+
+ attachments = options[:attachments]
|
|
16
|
+
+ attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
|
17
|
+
+ options = options.merge(attachments: attachments)
|
|
18
|
+
+ end
|
|
19
|
+
+ # blocks must be passed as an encoded JSON string
|
|
20
|
+
+ if options.key?(:blocks)
|
|
21
|
+
+ blocks = options[:blocks]
|
|
22
|
+
+ blocks = JSON.dump(blocks) unless blocks.is_a?(String)
|
|
23
|
+
+ options = options.merge(blocks: blocks)
|
|
24
|
+
+ end
|
|
25
|
+
post('chat.postEphemeral', options)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
@@ -167,6 +179,19 @@ module Slack
|
|
29
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postMessage.json
|
|
30
|
+
def chat_postMessage(options = {})
|
|
31
|
+
raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
|
|
32
|
+
+ raise ArgumentError, 'Required arguments :text, :attachments or :blocks missing' if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
|
|
33
|
+
+ # attachments must be passed as an encoded JSON string
|
|
34
|
+
+ if options.key?(:attachments)
|
|
35
|
+
+ attachments = options[:attachments]
|
|
36
|
+
+ attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
|
37
|
+
+ options = options.merge(attachments: attachments)
|
|
38
|
+
+ end
|
|
39
|
+
+ # blocks must be passed as an encoded JSON string
|
|
40
|
+
+ if options.key?(:blocks)
|
|
41
|
+
+ blocks = options[:blocks]
|
|
42
|
+
+ blocks = JSON.dump(blocks) unless blocks.is_a?(String)
|
|
43
|
+
+ options = options.merge(blocks: blocks)
|
|
44
|
+
+ end
|
|
45
|
+
post('chat.postMessage', options)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
@@ -268,8 +293,21 @@ module Slack
|
|
49
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.update.json
|
|
50
|
+
def chat_update(options = {})
|
|
51
|
+
raise ArgumentError, 'Required arguments :channel missing' if options[:channel].nil?
|
|
52
|
+
+ raise ArgumentError, 'Required arguments :text, :attachments, :blocks or :reply_broadcast missing' if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil? && options[:reply_broadcast].nil?
|
|
53
|
+
raise ArgumentError, 'Required arguments :ts missing' if options[:ts].nil?
|
|
54
|
+
options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
|
|
55
|
+
+ # attachments must be passed as an encoded JSON string
|
|
56
|
+
+ if options.key?(:attachments)
|
|
57
|
+
+ attachments = options[:attachments]
|
|
58
|
+
+ attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
|
59
|
+
+ options = options.merge(attachments: attachments)
|
|
60
|
+
+ end
|
|
61
|
+
+ # blocks must be passed as an encoded JSON string
|
|
62
|
+
+ if options.key?(:blocks)
|
|
63
|
+
+ blocks = options[:blocks]
|
|
64
|
+
+ blocks = JSON.dump(blocks) unless blocks.is_a?(String)
|
|
65
|
+
+ options = options.merge(blocks: blocks)
|
|
66
|
+
+ end
|
|
67
|
+
post('chat.update', options)
|
|
68
|
+
end
|
|
69
|
+
end
|
data/lib/slack/web/api/patches/{dialog.1.open-json-support.patch → dialog.encoded-json.patch}
RENAMED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
diff --git a/lib/slack/web/api/endpoints/dialog.rb b/lib/slack/web/api/endpoints/dialog.rb
|
|
2
|
-
index
|
|
2
|
+
index 05475c8..a4ff4ff 100644
|
|
3
3
|
--- a/lib/slack/web/api/endpoints/dialog.rb
|
|
4
4
|
+++ b/lib/slack/web/api/endpoints/dialog.rb
|
|
5
|
-
@@ -
|
|
5
|
+
@@ -18,6 +18,12 @@ module Slack
|
|
6
6
|
def dialog_open(options = {})
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
raise ArgumentError, 'Required arguments :dialog missing' if options[:dialog].nil?
|
|
8
|
+
raise ArgumentError, 'Required arguments :trigger_id missing' if options[:trigger_id].nil?
|
|
9
9
|
+ # dialog must be passed as an encoded JSON string
|
|
10
10
|
+ if options.key?(:dialog)
|
|
11
11
|
+ dialog = options[:dialog]
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
diff --git a/lib/slack/web/api/endpoints/views.rb b/lib/slack/web/api/endpoints/views.rb
|
|
2
|
+
index cfa83a5..038c5f0 100644
|
|
3
|
+
--- a/lib/slack/web/api/endpoints/views.rb
|
|
4
|
+
+++ b/lib/slack/web/api/endpoints/views.rb
|
|
5
|
+
@@ -19,6 +19,12 @@ module Slack
|
|
6
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/views/views.open.json
|
|
7
|
+
def views_open(options = {})
|
|
8
|
+
raise ArgumentError, 'Required arguments :view missing' if options[:view].nil?
|
|
9
|
+
+ raise ArgumentError, 'One of :trigger_id, :interactivity_pointer is required' unless options[:trigger_id].nil? ^ options[:interactivity_pointer].nil?
|
|
10
|
+
+ if options.key?(:view)
|
|
11
|
+
+ view = options[:view]
|
|
12
|
+
+ view = JSON.dump(view) unless view.is_a?(String)
|
|
13
|
+
+ options = options.merge(view: view)
|
|
14
|
+
+ end
|
|
15
|
+
post('views.open', options)
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
@@ -36,6 +42,11 @@ module Slack
|
|
19
|
+
def views_publish(options = {})
|
|
20
|
+
raise ArgumentError, 'Required arguments :user_id missing' if options[:user_id].nil?
|
|
21
|
+
raise ArgumentError, 'Required arguments :view missing' if options[:view].nil?
|
|
22
|
+
+ if options.key?(:view)
|
|
23
|
+
+ view = options[:view]
|
|
24
|
+
+ view = JSON.dump(view) unless view.is_a?(String)
|
|
25
|
+
+ options = options.merge(view: view)
|
|
26
|
+
+ end
|
|
27
|
+
post('views.publish', options)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
@@ -52,6 +63,12 @@ module Slack
|
|
31
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/views/views.push.json
|
|
32
|
+
def views_push(options = {})
|
|
33
|
+
raise ArgumentError, 'Required arguments :view missing' if options[:view].nil?
|
|
34
|
+
+ raise ArgumentError, 'One of :trigger_id, :interactivity_pointer is required' unless options[:trigger_id].nil? ^ options[:interactivity_pointer].nil?
|
|
35
|
+
+ if options.key?(:view)
|
|
36
|
+
+ view = options[:view]
|
|
37
|
+
+ view = JSON.dump(view) unless view.is_a?(String)
|
|
38
|
+
+ options = options.merge(view: view)
|
|
39
|
+
+ end
|
|
40
|
+
post('views.push', options)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
@@ -70,6 +87,12 @@ module Slack
|
|
44
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/views/views.update.json
|
|
45
|
+
def views_update(options = {})
|
|
46
|
+
raise ArgumentError, 'Required arguments :view missing' if options[:view].nil?
|
|
47
|
+
+ raise ArgumentError, 'One of :external_id, :view_id is required' unless options[:external_id].nil? ^ options[:view_id].nil?
|
|
48
|
+
+ if options.key?(:view)
|
|
49
|
+
+ view = options[:view]
|
|
50
|
+
+ view = JSON.dump(view) unless view.is_a?(String)
|
|
51
|
+
+ options = options.merge(view: view)
|
|
52
|
+
+ end
|
|
53
|
+
post('views.update', options)
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# This file was auto-generated by lib/tasks/web.rake
|
|
2
3
|
|
|
3
4
|
<% files.sort.each do |f| %>
|
|
@@ -8,9 +9,8 @@ module Slack
|
|
|
8
9
|
module Web
|
|
9
10
|
module Api
|
|
10
11
|
module Endpoints
|
|
11
|
-
include Slack::Web::Api::Mixins::
|
|
12
|
+
include Slack::Web::Api::Mixins::Conversations
|
|
12
13
|
include Slack::Web::Api::Mixins::Users
|
|
13
|
-
include Slack::Web::Api::Mixins::Groups
|
|
14
14
|
|
|
15
15
|
<% files.sort.each do |f| %>
|
|
16
16
|
include <%= f.camelize %>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# This file was auto-generated by lib/tasks/web.rake
|
|
3
|
+
|
|
4
|
+
module Slack
|
|
5
|
+
module Web
|
|
6
|
+
module Api
|
|
7
|
+
module Errors
|
|
8
|
+
<% errors.each do |e| %>
|
|
9
|
+
class <%= e.camelize %> < SlackError; end
|
|
10
|
+
<% end %>
|
|
11
|
+
|
|
12
|
+
ERROR_CLASSES = {
|
|
13
|
+
<% errors.each do |e| %>
|
|
14
|
+
'<%= e %>' => <%= e.camelize %>,
|
|
15
|
+
<% end %>
|
|
16
|
+
}.freeze
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# This file was auto-generated by lib/tasks/web.rake
|
|
2
3
|
|
|
3
4
|
module Slack
|
|
@@ -34,12 +35,12 @@ module Slack
|
|
|
34
35
|
<% end %>
|
|
35
36
|
def <%= group.gsub(".", "_") %>_<%= name %>(options = {})
|
|
36
37
|
<% data['args'].select{ |k, v| v['required'] }.each do |arg_name, arg_v| %>
|
|
37
|
-
|
|
38
|
+
raise ArgumentError, 'Required arguments :<%= arg_name %> missing' if options[:<%= arg_name %>].nil?
|
|
38
39
|
<% end %>
|
|
39
40
|
<% if data['group'] == 'groups' && data['args']['channel'] && !data['args']['channel']['desc'].include?('Can be an encoded ID, or a name.') %>
|
|
40
41
|
options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
|
|
41
42
|
<% elsif data['args']['channel'] && !data['args']['channel']['desc'].include?('Can be an encoded ID, or a name.') %>
|
|
42
|
-
options = options.merge(channel:
|
|
43
|
+
options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
|
|
43
44
|
<% end %>
|
|
44
45
|
<% if data['args']['user'] %>
|
|
45
46
|
options = options.merge(user: users_id(options)['user']['id']) if options[:user]
|
|
@@ -47,6 +48,9 @@ module Slack
|
|
|
47
48
|
<% if data['undocumented'] %>
|
|
48
49
|
logger.warn('The <%= group %>.<%= name %> method is undocumented.')
|
|
49
50
|
<% end %>
|
|
51
|
+
<% if data['deprecated'] %>
|
|
52
|
+
logger.warn('<%= group %>.<%= name %>: <%= data['deprecation']['deprecation_warning']%> Alternative methods: <%= data['deprecation']['alternative_methods'].join(', ')%>.')
|
|
53
|
+
<% end %>
|
|
50
54
|
<% if data['args'].keys.include?('cursor') %>
|
|
51
55
|
if block_given?
|
|
52
56
|
Pagination::Cursor.new(self, :<%= group.gsub(".", "_") %>_<%= name %>, options).each do |page|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# This file was auto-generated by lib/tasks/web.rake
|
|
2
3
|
|
|
3
4
|
require 'spec_helper'
|
|
@@ -11,7 +12,7 @@ RSpec.describe Slack::Web::Api::Endpoints::<%= group.gsub(".", "_").camelize %>
|
|
|
11
12
|
context '<%= group %>_<%= name %>' do
|
|
12
13
|
<% required_params.each do |arg_name, arg_v| %>
|
|
13
14
|
it 'requires <%= arg_name %>' do
|
|
14
|
-
<% params_except_required = required_params.reject{ |name, _| name == arg_name }.map{|var, opts| "#{var}:
|
|
15
|
+
<% params_except_required = required_params.reject{ |name, _| name == arg_name }.map{ |var, opts| "#{var}: %q[#{opts['example']}]"}.join(', ') %>
|
|
15
16
|
expect { client.<%= group.gsub(".", "_") %>_<%= name %><%= params_except_required.empty? ? '' : "(#{params_except_required})" %> }.to raise_error ArgumentError, /Required arguments :<%= arg_name %> missing/
|
|
16
17
|
end
|
|
17
18
|
<% end %>
|
data/lib/slack/web/client.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Web
|
|
3
4
|
class Client
|
|
@@ -9,7 +10,7 @@ module Slack
|
|
|
9
10
|
|
|
10
11
|
def initialize(options = {})
|
|
11
12
|
Slack::Web::Config::ATTRIBUTES.each do |key|
|
|
12
|
-
send("#{key}=", options
|
|
13
|
+
send("#{key}=", options.fetch(key, Slack::Web.config.send(key)))
|
|
13
14
|
end
|
|
14
15
|
@logger ||= Slack::Config.logger || Slack::Logger.default
|
|
15
16
|
@token ||= Slack.config.token
|
data/lib/slack/web/config.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Web
|
|
3
4
|
module Config
|
|
@@ -15,6 +16,7 @@ module Slack
|
|
|
15
16
|
open_timeout
|
|
16
17
|
default_page_size
|
|
17
18
|
default_max_retries
|
|
19
|
+
adapter
|
|
18
20
|
].freeze
|
|
19
21
|
|
|
20
22
|
attr_accessor(*Config::ATTRIBUTES)
|
|
@@ -22,8 +24,8 @@ module Slack
|
|
|
22
24
|
def reset
|
|
23
25
|
self.endpoint = 'https://slack.com/api/'
|
|
24
26
|
self.user_agent = "Slack Ruby Client/#{Slack::VERSION}"
|
|
25
|
-
self.ca_path =
|
|
26
|
-
self.ca_file =
|
|
27
|
+
self.ca_path = nil
|
|
28
|
+
self.ca_file = nil
|
|
27
29
|
self.token = nil
|
|
28
30
|
self.proxy = nil
|
|
29
31
|
self.logger = nil
|
|
@@ -31,6 +33,7 @@ module Slack
|
|
|
31
33
|
self.open_timeout = nil
|
|
32
34
|
self.default_page_size = 100
|
|
33
35
|
self.default_max_retries = 100
|
|
36
|
+
self.adapter = ::Faraday.default_adapter
|
|
34
37
|
end
|
|
35
38
|
end
|
|
36
39
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Web
|
|
3
4
|
module Faraday
|
|
@@ -5,29 +6,32 @@ module Slack
|
|
|
5
6
|
private
|
|
6
7
|
|
|
7
8
|
def connection
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
9
|
+
@connection ||=
|
|
10
|
+
begin
|
|
11
|
+
options = {
|
|
12
|
+
headers: { 'Accept' => 'application/json; charset=utf-8' }
|
|
13
|
+
}
|
|
11
14
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
+
options[:headers]['User-Agent'] = user_agent if user_agent
|
|
16
|
+
options[:proxy] = proxy if proxy
|
|
17
|
+
options[:ssl] = { ca_path: ca_path, ca_file: ca_file } if ca_path || ca_file
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
19
|
+
request_options = {}
|
|
20
|
+
request_options[:timeout] = timeout if timeout
|
|
21
|
+
request_options[:open_timeout] = open_timeout if open_timeout
|
|
22
|
+
options[:request] = request_options if request_options.any?
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
24
|
+
::Faraday::Connection.new(endpoint, options) do |connection|
|
|
25
|
+
connection.request :multipart
|
|
26
|
+
connection.request :url_encoded
|
|
27
|
+
connection.use ::Slack::Web::Faraday::Response::RaiseError
|
|
28
|
+
connection.response :mashify, mash_class: Slack::Messages::Message
|
|
29
|
+
connection.response :json, content_type: /\b*$/
|
|
30
|
+
connection.use ::Slack::Web::Faraday::Response::WrapError
|
|
31
|
+
connection.response :logger, logger if logger
|
|
32
|
+
connection.adapter adapter
|
|
33
|
+
end
|
|
34
|
+
end
|
|
31
35
|
end
|
|
32
36
|
end
|
|
33
37
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Web
|
|
3
4
|
module Faraday
|
|
@@ -21,18 +22,21 @@ module Slack
|
|
|
21
22
|
private
|
|
22
23
|
|
|
23
24
|
def request(method, path, options)
|
|
24
|
-
options = options.merge(token: token)
|
|
25
25
|
response = connection.send(method) do |request|
|
|
26
26
|
case method
|
|
27
27
|
when :get, :delete
|
|
28
28
|
request.url(path, options)
|
|
29
29
|
when :post, :put
|
|
30
30
|
request.path = path
|
|
31
|
+
options.compact!
|
|
31
32
|
request.body = options unless options.empty?
|
|
32
33
|
end
|
|
34
|
+
request.headers['Authorization'] = "Bearer #{token}" if token
|
|
33
35
|
request.options.merge!(options.delete(:request)) if options.key?(:request)
|
|
34
36
|
end
|
|
35
37
|
response.body
|
|
38
|
+
rescue ::Faraday::ParsingError => e
|
|
39
|
+
raise Slack::Web::Api::Errors::ParsingError, e.response
|
|
36
40
|
end
|
|
37
41
|
end
|
|
38
42
|
end
|
|
@@ -1,15 +1,22 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Web
|
|
3
4
|
module Faraday
|
|
4
5
|
module Response
|
|
5
|
-
class RaiseError < ::Faraday::
|
|
6
|
+
class RaiseError < ::Faraday::Middleware
|
|
6
7
|
def on_complete(env)
|
|
7
|
-
if env.status == 429
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
raise Slack::Web::Api::Errors::TooManyRequestsError, env.response if env.status == 429
|
|
9
|
+
|
|
10
|
+
return unless env.success?
|
|
11
|
+
|
|
12
|
+
body = env.body
|
|
13
|
+
return unless body
|
|
14
|
+
return if body['ok']
|
|
15
|
+
|
|
16
|
+
error_message = body['error'] || body['errors'].map { |message| message['error'] }.join(',')
|
|
17
|
+
error_class = Slack::Web::Api::Errors::ERROR_CLASSES[error_message]
|
|
18
|
+
error_class ||= Slack::Web::Api::Errors::SlackError
|
|
19
|
+
raise error_class.new(error_message, env.response)
|
|
13
20
|
end
|
|
14
21
|
end
|
|
15
22
|
end
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
module Slack
|
|
3
|
+
module Web
|
|
4
|
+
module Faraday
|
|
5
|
+
module Response
|
|
6
|
+
class WrapError < ::Faraday::Middleware
|
|
7
|
+
UNAVAILABLE_ERROR_STATUSES = (500..599).freeze
|
|
8
|
+
|
|
9
|
+
def on_complete(env)
|
|
10
|
+
return unless UNAVAILABLE_ERROR_STATUSES.cover?(env.status)
|
|
11
|
+
|
|
12
|
+
raise Slack::Web::Api::Errors::UnavailableError, env.response
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def call(env)
|
|
16
|
+
super
|
|
17
|
+
rescue ::Faraday::TimeoutError, ::Faraday::ConnectionFailed
|
|
18
|
+
raise Slack::Web::Api::Errors::TimeoutError, env.response
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Web
|
|
3
4
|
module Api
|
|
@@ -5,11 +6,7 @@ module Slack
|
|
|
5
6
|
class Cursor
|
|
6
7
|
include Enumerable
|
|
7
8
|
|
|
8
|
-
attr_reader :client
|
|
9
|
-
attr_reader :verb
|
|
10
|
-
attr_reader :sleep_interval
|
|
11
|
-
attr_reader :max_retries
|
|
12
|
-
attr_reader :params
|
|
9
|
+
attr_reader :client, :verb, :sleep_interval, :max_retries, :params
|
|
13
10
|
|
|
14
11
|
def initialize(client, verb, params = {})
|
|
15
12
|
@client = client
|
|
@@ -28,15 +25,18 @@ module Slack
|
|
|
28
25
|
response = client.send(verb, query)
|
|
29
26
|
rescue Slack::Web::Api::Errors::TooManyRequestsError => e
|
|
30
27
|
raise e if retry_count >= max_retries
|
|
28
|
+
|
|
31
29
|
client.logger.debug("#{self.class}##{__method__}") { e.to_s }
|
|
32
30
|
retry_count += 1
|
|
33
|
-
sleep(e.retry_after
|
|
31
|
+
sleep(e.retry_after)
|
|
34
32
|
next
|
|
35
33
|
end
|
|
36
34
|
yield response
|
|
37
35
|
break unless response.response_metadata
|
|
36
|
+
|
|
38
37
|
next_cursor = response.response_metadata.next_cursor
|
|
39
|
-
break if next_cursor.
|
|
38
|
+
break if next_cursor.nil? || next_cursor == ''
|
|
39
|
+
|
|
40
40
|
retry_count = 0
|
|
41
41
|
sleep(sleep_interval) if sleep_interval
|
|
42
42
|
end
|
data/lib/slack-ruby-client.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require_relative 'slack/version'
|
|
2
3
|
require_relative 'slack/logger'
|
|
3
4
|
require_relative 'slack/config'
|
|
@@ -9,24 +10,28 @@ require_relative 'slack/messages/formatting'
|
|
|
9
10
|
|
|
10
11
|
# Web API
|
|
11
12
|
require 'faraday'
|
|
12
|
-
require '
|
|
13
|
+
require 'faraday/mashify'
|
|
14
|
+
require 'faraday/multipart'
|
|
13
15
|
require 'json'
|
|
14
16
|
require 'logger'
|
|
15
17
|
begin
|
|
16
18
|
require 'picky'
|
|
17
|
-
rescue LoadError
|
|
19
|
+
rescue LoadError # rubocop:disable Lint/SuppressedException
|
|
18
20
|
# ignore, only used in users_search
|
|
19
21
|
end
|
|
20
22
|
begin
|
|
21
23
|
require 'openssl'
|
|
22
|
-
rescue LoadError
|
|
24
|
+
rescue LoadError # rubocop:disable Lint/SuppressedException
|
|
23
25
|
# Used in slack/web/config
|
|
24
26
|
end
|
|
25
27
|
require_relative 'slack/web/config'
|
|
26
28
|
require_relative 'slack/web/api/errors/slack_error'
|
|
27
29
|
require_relative 'slack/web/api/errors/too_many_requests_error'
|
|
28
30
|
require_relative 'slack/web/api/error'
|
|
31
|
+
require_relative 'slack/web/api/errors'
|
|
32
|
+
require_relative 'slack/web/api/errors/server_error'
|
|
29
33
|
require_relative 'slack/web/faraday/response/raise_error'
|
|
34
|
+
require_relative 'slack/web/faraday/response/wrap_error'
|
|
30
35
|
require_relative 'slack/web/faraday/connection'
|
|
31
36
|
require_relative 'slack/web/faraday/request'
|
|
32
37
|
require_relative 'slack/web/api/mixins'
|
|
@@ -35,8 +40,6 @@ require_relative 'slack/web/pagination/cursor'
|
|
|
35
40
|
require_relative 'slack/web/client'
|
|
36
41
|
|
|
37
42
|
# RealTime API
|
|
38
|
-
require 'active_support'
|
|
39
|
-
require 'active_support/core_ext'
|
|
40
43
|
require_relative 'slack/real_time/concurrency'
|
|
41
44
|
require_relative 'slack/real_time/socket'
|
|
42
45
|
require_relative 'slack/real_time/api/message_id'
|
|
@@ -47,3 +50,7 @@ require_relative 'slack/real_time/models'
|
|
|
47
50
|
require_relative 'slack/real_time/stores'
|
|
48
51
|
require_relative 'slack/real_time/config'
|
|
49
52
|
require_relative 'slack/real_time/client'
|
|
53
|
+
|
|
54
|
+
# Events API
|
|
55
|
+
require_relative 'slack/events/config'
|
|
56
|
+
require_relative 'slack/events/request'
|
data/lib/slack.rb
CHANGED
data/lib/slack_ruby_client.rb
CHANGED
data/lib/tasks/git.rake
CHANGED