slack-ruby-client 0.7.2 → 1.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 +5 -5
- data/.github/FUNDING.yml +1 -0
- data/.gitignore +2 -0
- data/.gitmodules +1 -1
- data/.rubocop.yml +37 -1
- data/.rubocop_todo.yml +130 -47
- data/.travis.yml +17 -13
- data/CHANGELOG.md +254 -43
- data/CONTRIBUTING.md +26 -15
- data/Dangerfile +3 -0
- data/Gemfile +13 -2
- data/LICENSE.md +1 -1
- data/README.md +287 -63
- data/RELEASING.md +22 -14
- data/Rakefile +2 -1
- data/UPGRADING.md +129 -5
- 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 +17 -0
- data/bin/commands/admin_apps_restricted.rb +17 -0
- data/bin/commands/admin_auth_policy.rb +39 -0
- data/bin/commands/admin_barriers.rb +47 -0
- data/bin/commands/admin_conversations.rb +169 -0
- data/bin/commands/admin_conversations_ekm.rb +17 -0
- data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
- data/bin/commands/admin_conversations_whitelist.rb +37 -0
- data/bin/commands/admin_emoji.rb +54 -0
- data/bin/commands/admin_inviteRequests.rb +36 -0
- data/bin/commands/admin_inviteRequests_approved.rb +16 -0
- data/bin/commands/admin_inviteRequests_denied.rb +16 -0
- data/bin/commands/admin_teams.rb +27 -0
- data/bin/commands/admin_teams_admins.rb +16 -0
- data/bin/commands/admin_teams_owners.rb +16 -0
- data/bin/commands/admin_teams_settings.rb +64 -0
- data/bin/commands/admin_usergroups.rb +48 -0
- data/bin/commands/admin_users.rb +98 -0
- data/bin/commands/admin_users_session.rb +78 -0
- data/bin/commands/api.rb +3 -3
- 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 +51 -0
- data/bin/commands/apps_permissions.rb +23 -0
- data/bin/commands/apps_permissions_resources.rb +15 -0
- data/bin/commands/apps_permissions_scopes.rb +13 -0
- data/bin/commands/apps_permissions_users.rb +26 -0
- data/bin/commands/auth.rb +12 -2
- data/bin/commands/auth_teams.rb +16 -0
- data/bin/commands/bots.rb +15 -0
- data/bin/commands/calls.rb +52 -0
- data/bin/commands/calls_participants.rb +25 -0
- data/bin/commands/channels.rb +6 -132
- data/bin/commands/chat.rb +127 -20
- data/bin/commands/chat_scheduledMessages.rb +19 -0
- data/bin/commands/conversations.rb +253 -0
- data/bin/commands/dialog.rb +15 -0
- data/bin/commands/dnd.rb +12 -9
- data/bin/commands/emoji.rb +3 -2
- data/bin/commands/files.rb +47 -31
- data/bin/commands/files_comments.rb +3 -23
- data/bin/commands/files_remote.rb +78 -0
- data/bin/commands/groups.rb +1 -154
- data/bin/commands/im.rb +1 -48
- data/bin/commands/migration.rb +16 -0
- data/bin/commands/mpim.rb +1 -48
- data/bin/commands/oauth.rb +4 -2
- data/bin/commands/oauth_v2.rb +29 -0
- data/bin/commands/openid_connect.rb +27 -0
- data/bin/commands/pins.rb +9 -12
- data/bin/commands/reactions.rb +17 -15
- data/bin/commands/reminders.rb +17 -10
- data/bin/commands/rtm.rb +19 -4
- data/bin/commands/search.rb +17 -12
- data/bin/commands/stars.rb +12 -9
- data/bin/commands/team.rb +23 -8
- data/bin/commands/team_billing.rb +13 -0
- data/bin/commands/team_preferences.rb +13 -0
- data/bin/commands/team_profile.rb +14 -0
- data/bin/commands/tooling_tokens.rb +14 -0
- data/bin/commands/usergroups.rb +23 -17
- data/bin/commands/usergroups_users.rb +7 -4
- data/bin/commands/users.rb +83 -27
- data/bin/commands/users_admin.rb +29 -0
- data/bin/commands/users_prefs.rb +13 -0
- data/bin/commands/users_profile.rb +27 -0
- data/bin/commands/views.rb +48 -0
- data/bin/commands/workflows.rb +38 -0
- data/bin/commands.rb +47 -5
- data/bin/slack +3 -4
- data/examples/hi_real_time_and_web/Gemfile +1 -0
- data/examples/hi_real_time_and_web/hi.rb +8 -4
- data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Gemfile +2 -1
- data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/Procfile +0 -0
- data/examples/{hi_real_time_async_celluloid → hi_real_time_async_async}/hi.rb +13 -8
- data/examples/hi_web/Gemfile +1 -0
- data/examples/hi_web/hi.rb +2 -1
- data/examples/new_ticket/Gemfile +1 -0
- data/examples/new_ticket/new_ticket.rb +3 -2
- 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 +4 -4
- data/lib/slack/messages/message.rb +6 -4
- data/lib/slack/real_time/api/message.rb +3 -1
- data/lib/slack/real_time/api/message_id.rb +1 -0
- data/lib/slack/real_time/api/ping.rb +5 -2
- data/lib/slack/real_time/api/templates/event_handler.erb +1 -1
- data/lib/slack/real_time/api/typing.rb +3 -1
- data/lib/slack/real_time/client.rb +116 -36
- data/lib/slack/real_time/concurrency/async.rb +138 -0
- data/lib/slack/real_time/concurrency.rb +2 -2
- data/lib/slack/real_time/config.rb +17 -19
- data/lib/slack/real_time/models/base.rb +3 -3
- data/lib/slack/real_time/models/bot.rb +1 -0
- data/lib/slack/real_time/models/channel.rb +1 -0
- data/lib/slack/real_time/models/group.rb +1 -0
- data/lib/slack/real_time/models/im.rb +1 -0
- data/lib/slack/real_time/models/team.rb +1 -0
- data/lib/slack/real_time/models/user.rb +1 -0
- data/lib/slack/real_time/models.rb +8 -7
- data/lib/slack/real_time/socket.rb +51 -23
- data/lib/slack/real_time/stores/base.rb +6 -9
- data/lib/slack/real_time/stores/starter.rb +143 -69
- data/lib/slack/real_time/stores/store.rb +160 -82
- data/lib/slack/real_time/stores.rb +4 -3
- 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 +35 -0
- data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -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 +260 -0
- data/lib/slack/web/api/endpoints/admin_conversations_ekm.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_conversations_restrictAccess.rb +61 -0
- data/lib/slack/web/api/endpoints/admin_conversations_whitelist.rb +64 -0
- data/lib/slack/web/api/endpoints/admin_emoji.rb +88 -0
- data/lib/slack/web/api/endpoints/admin_inviteRequests.rb +61 -0
- data/lib/slack/web/api/endpoints/admin_inviteRequests_approved.rb +33 -0
- data/lib/slack/web/api/endpoints/admin_inviteRequests_denied.rb +33 -0
- data/lib/slack/web/api/endpoints/admin_teams.rb +50 -0
- data/lib/slack/web/api/endpoints/admin_teams_admins.rb +34 -0
- data/lib/slack/web/api/endpoints/admin_teams_owners.rb +34 -0
- data/lib/slack/web/api/endpoints/admin_teams_settings.rb +99 -0
- data/lib/slack/web/api/endpoints/admin_usergroups.rb +77 -0
- data/lib/slack/web/api/endpoints/admin_users.rb +163 -0
- data/lib/slack/web/api/endpoints/admin_users_session.rb +122 -0
- data/lib/slack/web/api/endpoints/api.rb +4 -5
- 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 +75 -0
- data/lib/slack/web/api/endpoints/apps_permissions.rb +36 -0
- data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +31 -0
- data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +21 -0
- data/lib/slack/web/api/endpoints/apps_permissions_users.rb +50 -0
- data/lib/slack/web/api/endpoints/auth.rb +14 -2
- data/lib/slack/web/api/endpoints/auth_teams.rb +33 -0
- data/lib/slack/web/api/endpoints/bots.rb +25 -0
- data/lib/slack/web/api/endpoints/calls.rb +83 -0
- data/lib/slack/web/api/endpoints/calls_participants.rb +42 -0
- data/lib/slack/web/api/endpoints/channels.rb +8 -201
- data/lib/slack/web/api/endpoints/chat.rb +252 -42
- data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +40 -0
- data/lib/slack/web/api/endpoints/conversations.rb +422 -0
- data/lib/slack/web/api/endpoints/dialog.rb +33 -0
- data/lib/slack/web/api/endpoints/dnd.rb +17 -12
- data/lib/slack/web/api/endpoints/emoji.rb +3 -2
- data/lib/slack/web/api/endpoints/files.rb +82 -43
- 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/groups.rb +1 -235
- data/lib/slack/web/api/endpoints/im.rb +1 -73
- data/lib/slack/web/api/endpoints/migration.rb +28 -0
- data/lib/slack/web/api/endpoints/mpim.rb +1 -72
- data/lib/slack/web/api/endpoints/oauth.rb +9 -10
- 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 +14 -23
- data/lib/slack/web/api/endpoints/presence.rb +1 -1
- data/lib/slack/web/api/endpoints/reactions.rb +43 -34
- data/lib/slack/web/api/endpoints/reminders.rb +28 -15
- data/lib/slack/web/api/endpoints/rtm.rb +29 -8
- data/lib/slack/web/api/endpoints/search.rb +39 -24
- data/lib/slack/web/api/endpoints/stars.rb +30 -22
- data/lib/slack/web/api/endpoints/team.rb +34 -11
- 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 +23 -0
- data/lib/slack/web/api/endpoints/tooling_tokens.rb +24 -0
- data/lib/slack/web/api/endpoints/usergroups.rb +43 -32
- data/lib/slack/web/api/endpoints/usergroups_users.rb +14 -9
- data/lib/slack/web/api/endpoints/users.rb +104 -19
- data/lib/slack/web/api/endpoints/users_admin.rb +49 -0
- data/lib/slack/web/api/endpoints/users_prefs.rb +21 -0
- data/lib/slack/web/api/endpoints/users_profile.rb +44 -0
- data/lib/slack/web/api/endpoints/views.rb +97 -0
- data/lib/slack/web/api/endpoints/workflows.rb +61 -0
- data/lib/slack/web/api/endpoints.rb +111 -29
- data/lib/slack/web/api/error.rb +2 -8
- data/lib/slack/web/api/errors/server_error.rb +37 -0
- data/lib/slack/web/api/errors/slack_error.rb +29 -0
- data/lib/slack/web/api/errors/too_many_requests_error.rb +21 -0
- data/lib/slack/web/api/errors.rb +1040 -0
- data/lib/slack/web/api/mixins/conversations.id.rb +25 -0
- data/lib/slack/web/api/mixins/ids.id.rb +24 -0
- data/lib/slack/web/api/mixins/users.id.rb +6 -7
- data/lib/slack/web/api/mixins/users.search.rb +39 -36
- data/lib/slack/web/api/mixins.rb +4 -4
- data/lib/slack/web/api/patches/chat.1.patch +70 -0
- data/lib/slack/web/api/patches/dialog.1.open-json-support.patch +17 -0
- data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
- data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
- data/lib/slack/web/api/templates/command.erb +5 -3
- data/lib/slack/web/api/templates/commands.erb +2 -1
- data/lib/slack/web/api/templates/endpoints.erb +5 -5
- data/lib/slack/web/api/templates/errors.erb +20 -0
- data/lib/slack/web/api/templates/method.erb +26 -4
- data/lib/slack/web/api/templates/method_spec.erb +3 -2
- data/lib/slack/web/client.rb +2 -1
- data/lib/slack/web/config.rb +21 -10
- data/lib/slack/web/faraday/connection.rb +25 -16
- data/lib/slack/web/faraday/request.rb +4 -1
- data/lib/slack/web/faraday/response/raise_error.rb +19 -1
- data/lib/slack/web/faraday/response/wrap_error.rb +24 -0
- data/lib/slack/web/pagination/cursor.rb +48 -0
- data/lib/slack-ruby-client.rb +40 -26
- data/lib/slack.rb +1 -0
- data/lib/slack_ruby_client.rb +1 -0
- data/lib/tasks/git.rake +2 -1
- data/lib/tasks/real_time.rake +16 -6
- data/lib/tasks/update.rake +1 -0
- data/lib/tasks/web.rake +42 -10
- data/screenshots/create-app.png +0 -0
- data/slack-ruby-client.gemspec +11 -9
- data/spec/fixtures/slack/web/429_error.yml +50 -52
- 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 +613 -0
- data/spec/fixtures/slack/web/rtm_connect.yml +307 -0
- data/spec/fixtures/slack/web/rtm_start.yml +771 -60
- data/spec/fixtures/slack/web/users_info.yml +153 -69
- data/spec/fixtures/slack/web/users_list.yml +102 -41
- data/spec/fixtures/slack/web/views_open_error.yml +83 -0
- data/spec/integration/integration_spec.rb +116 -48
- data/spec/slack/config_spec.rb +2 -0
- data/spec/slack/events/config_spec.rb +33 -0
- data/spec/slack/events/request_spec.rb +184 -0
- data/spec/slack/messages/formatting_spec.rb +25 -14
- data/spec/slack/real_time/api/message_spec.rb +6 -1
- data/spec/slack/real_time/api/ping_spec.rb +2 -0
- data/spec/slack/real_time/api/typing_spec.rb +5 -1
- data/spec/slack/real_time/client_spec.rb +465 -141
- data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +21 -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 +7 -4
- data/spec/slack/real_time/event_handlers/channel_spec.rb +10 -7
- data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +3 -2
- data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
- data/spec/slack/real_time/event_handlers/im_spec.rb +9 -8
- data/spec/slack/real_time/event_handlers/team_spec.rb +8 -4
- data/spec/slack/real_time/event_handlers/user_spec.rb +7 -4
- data/spec/slack/real_time/rtm_connect_spec.rb +14 -0
- data/spec/slack/real_time/rtm_start_spec.rb +2 -1
- data/spec/slack/real_time/store_spec.rb +2 -1
- data/spec/slack/slack_spec.rb +42 -8
- data/spec/slack/version_spec.rb +2 -1
- data/spec/slack/web/api/endpoints/admin_analytics_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/admin_apps_approved_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_restricted_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_spec.rb +18 -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/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/auth_teams_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/bots_spec.rb +8 -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 +11 -4
- data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +140 -24
- data/spec/slack/web/api/endpoints/custom_specs/conversations_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +36 -0
- data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +22 -7
- data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -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 +17 -5
- data/spec/slack/web/api/endpoints/migration_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -11
- 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/team_billing_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/team_preferences_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/team_profile_spec.rb +8 -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 +18 -0
- data/spec/slack/web/api/endpoints/users_prefs_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/users_profile_spec.rb +8 -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 +33 -0
- data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
- data/spec/slack/web/api/mixins/conversations_spec.rb +43 -0
- data/spec/slack/web/api/mixins/users_spec.rb +30 -17
- data/spec/slack/web/api/pagination/cursor_spec.rb +98 -0
- data/spec/slack/web/client_spec.rb +211 -14
- data/spec/slack/web/faraday/request_spec.rb +80 -0
- data/spec/slack/web/faraday/response/raise_error_spec.rb +86 -0
- data/spec/spec_helper.rb +9 -2
- data/spec/support/queue_with_timeout.rb +6 -5
- data/spec/support/real_time/concurrency/mock.rb +2 -2
- data/spec/support/real_time/connected_client.rb +7 -2
- data/spec/support/real_time/event.rb +1 -0
- data/spec/support/token.rb +1 -0
- data/spec/support/vcr.rb +37 -1
- metadata +250 -130
- 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/Gemfile +0 -5
- data/examples/hi_real_time_async/hi.rb +0 -29
- 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 -36
- data/lib/slack/real_time/concurrency/celluloid.rb +0 -100
- data/lib/slack/real_time/concurrency/eventmachine.rb +0 -60
- data/lib/slack/web/api/mixins/channels.id.json +0 -20
- data/lib/slack/web/api/mixins/channels.id.rb +0 -26
- data/lib/slack/web/api/mixins/groups.id.json +0 -20
- data/lib/slack/web/api/mixins/groups.id.rb +0 -26
- data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +0 -13
- data/lib/slack/web/api/patches/chat.2.attachments-json.patch +0 -17
- data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +0 -20
- data/screenshots/register-bot.png +0 -0
- data/spec/fixtures/slack/web/channels_info.yml +0 -46
- data/spec/fixtures/slack/web/groups_info.yml +0 -43
- data/spec/slack/real_time/concurrency/celluloid_spec.rb +0 -35
- data/spec/slack/real_time/concurrency/eventmachine_spec.rb +0 -50
- 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 -30
- data/spec/slack/web/api/endpoints/mpim_spec.rb +0 -30
- data/spec/slack/web/api/mixins/channels_spec.rb +0 -31
- data/spec/slack/web/api/mixins/groups_spec.rb +0 -31
@@ -0,0 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative 'ids.id'
|
3
|
+
|
4
|
+
module Slack
|
5
|
+
module Web
|
6
|
+
module Api
|
7
|
+
module Mixins
|
8
|
+
module Conversations
|
9
|
+
include Ids
|
10
|
+
#
|
11
|
+
# This method returns a channel ID given a channel name.
|
12
|
+
#
|
13
|
+
# @option options [channel] :channel
|
14
|
+
# Channel to get ID for, prefixed with #.
|
15
|
+
def conversations_id(options = {})
|
16
|
+
name = options[:channel]
|
17
|
+
throw ArgumentError.new('Required arguments :channel missing') if name.nil?
|
18
|
+
|
19
|
+
id_for :channel, name, '#', :conversations_list, :channels, 'channel_not_found'
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -0,0 +1,24 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
module Slack
|
3
|
+
module Web
|
4
|
+
module Api
|
5
|
+
module Mixins
|
6
|
+
module Ids
|
7
|
+
private
|
8
|
+
|
9
|
+
def id_for(key, name, prefix, enum_method, list_method, not_found_error)
|
10
|
+
return { 'ok' => true, key.to_s => { 'id' => name } } unless name[0] == prefix
|
11
|
+
|
12
|
+
public_send enum_method do |list|
|
13
|
+
list.public_send(list_method).each do |li|
|
14
|
+
return Slack::Messages::Message.new('ok' => true, key.to_s => { 'id' => li.id }) if li.name == name[1..-1]
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
raise Slack::Web::Api::Errors::SlackError, not_found_error
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
@@ -1,8 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative 'ids.id'
|
3
|
+
|
1
4
|
module Slack
|
2
5
|
module Web
|
3
6
|
module Api
|
4
7
|
module Mixins
|
5
8
|
module Users
|
9
|
+
include Ids
|
6
10
|
#
|
7
11
|
# This method returns a user ID given a user name.
|
8
12
|
#
|
@@ -11,13 +15,8 @@ module Slack
|
|
11
15
|
def users_id(options = {})
|
12
16
|
name = options[:user]
|
13
17
|
throw ArgumentError.new('Required arguments :user missing') if name.nil?
|
14
|
-
|
15
|
-
users_list
|
16
|
-
list.members.each do |user|
|
17
|
-
return Slack::Messages::Message.new('ok' => true, 'user' => { 'id' => user.id }) if user.name == name[1..-1]
|
18
|
-
end
|
19
|
-
end
|
20
|
-
fail Slack::Web::Api::Error, 'user_not_found'
|
18
|
+
|
19
|
+
id_for :user, name, '@', :users_list, :members, 'user_not_found'
|
21
20
|
end
|
22
21
|
end
|
23
22
|
end
|
@@ -1,43 +1,46 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
if defined?(Picky)
|
3
|
+
module Slack
|
4
|
+
module Web
|
5
|
+
module Api
|
6
|
+
module Mixins
|
7
|
+
module Users
|
8
|
+
Member = Struct.new :id, :name, :first_name, :last_name, :real_name, :email
|
7
9
|
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
10
|
+
#
|
11
|
+
# This method searches for users.
|
12
|
+
#
|
13
|
+
# @option options [user] :user
|
14
|
+
# Free-formed text to search for.
|
15
|
+
def users_search(options = {})
|
16
|
+
query = options[:user]
|
17
|
+
throw ArgumentError.new('Required arguments :user missing') if query.nil?
|
18
|
+
index = Picky::Index.new(:users) do
|
19
|
+
category :name
|
20
|
+
category :first_name
|
21
|
+
category :last_name
|
22
|
+
category :real_name
|
23
|
+
category :email
|
24
|
+
end
|
25
|
+
members = users_list.members
|
26
|
+
members.each_with_index do |member, id|
|
27
|
+
user = Member.new(
|
28
|
+
id,
|
29
|
+
member.name,
|
30
|
+
member.profile.first_name,
|
31
|
+
member.profile.last_name,
|
32
|
+
member.profile.real_name,
|
33
|
+
member.profile.email
|
34
|
+
)
|
35
|
+
index.add(user)
|
36
|
+
end
|
37
|
+
ids = Picky::Search.new(index).search(query, 5, 0, unique: true).ids
|
38
|
+
results = ids.map { |id| members[id] }
|
39
|
+
Slack::Messages::Message.new('ok' => true, 'members' => results)
|
22
40
|
end
|
23
|
-
members = users_list.members
|
24
|
-
members.each_with_index do |member, id|
|
25
|
-
user = Member.new(
|
26
|
-
id,
|
27
|
-
member.name,
|
28
|
-
member.profile.first_name,
|
29
|
-
member.profile.last_name,
|
30
|
-
member.profile.real_name,
|
31
|
-
member.profile.email
|
32
|
-
)
|
33
|
-
index.add(user)
|
34
|
-
end
|
35
|
-
ids = Picky::Search.new(index).search(query, 5, 0, unique: true).ids
|
36
|
-
results = ids.map { |id| members[id] }
|
37
|
-
Slack::Messages::Message.new('ok' => true, 'members' => results)
|
38
41
|
end
|
39
42
|
end
|
40
43
|
end
|
41
44
|
end
|
42
45
|
end
|
43
|
-
end
|
46
|
+
end
|
data/lib/slack/web/api/mixins.rb
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
# frozen_string_literal: true
|
2
|
+
require_relative 'mixins/conversations.id'
|
3
|
+
require_relative 'mixins/users.id'
|
4
|
+
require_relative 'mixins/users.search'
|
@@ -0,0 +1,70 @@
|
|
1
|
+
diff --git a/lib/slack/web/api/endpoints/chat.rb b/lib/slack/web/api/endpoints/chat.rb
|
2
|
+
index d090ae2..50186d5 100644
|
3
|
+
--- a/lib/slack/web/api/endpoints/chat.rb
|
4
|
+
+++ b/lib/slack/web/api/endpoints/chat.rb
|
5
|
+
@@ -121,10 +121,22 @@ module Slack
|
6
|
+
# @see https://api.slack.com/methods/chat.postEphemeral
|
7
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postEphemeral.json
|
8
|
+
def chat_postEphemeral(options = {})
|
9
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
10
|
+
- throw ArgumentError.new('Required arguments :text missing') if options[:text].nil?
|
11
|
+
+ throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
|
12
|
+
throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
|
13
|
+
options = options.merge(user: users_id(options)['user']['id']) if options[:user]
|
14
|
+
+ # attachments must be passed as an encoded JSON string
|
15
|
+
+ if options.key?(:attachments)
|
16
|
+
+ attachments = options[:attachments]
|
17
|
+
+ attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
18
|
+
+ options = options.merge(attachments: attachments)
|
19
|
+
+ end
|
20
|
+
+ # blocks must be passed as an encoded JSON string
|
21
|
+
+ if options.key?(:blocks)
|
22
|
+
+ blocks = options[:blocks]
|
23
|
+
+ blocks = JSON.dump(blocks) unless blocks.is_a?(String)
|
24
|
+
+ options = options.merge(blocks: blocks)
|
25
|
+
+ end
|
26
|
+
post('chat.postEphemeral', options)
|
27
|
+
end
|
28
|
+
|
29
|
+
@@ -168,6 +179,19 @@ module Slack
|
30
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postMessage.json
|
31
|
+
def chat_postMessage(options = {})
|
32
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
33
|
+
+ throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
|
34
|
+
+ # attachments must be passed as an encoded JSON string
|
35
|
+
+ if options.key?(:attachments)
|
36
|
+
+ attachments = options[:attachments]
|
37
|
+
+ attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
38
|
+
+ options = options.merge(attachments: attachments)
|
39
|
+
+ end
|
40
|
+
+ # blocks must be passed as an encoded JSON string
|
41
|
+
+ if options.key?(:blocks)
|
42
|
+
+ blocks = options[:blocks]
|
43
|
+
+ blocks = JSON.dump(blocks) unless blocks.is_a?(String)
|
44
|
+
+ options = options.merge(blocks: blocks)
|
45
|
+
+ end
|
46
|
+
post('chat.postMessage', options)
|
47
|
+
end
|
48
|
+
|
49
|
+
@@ -257,8 +281,21 @@ module Slack
|
50
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.update.json
|
51
|
+
def chat_update(options = {})
|
52
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
53
|
+
+ throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
|
54
|
+
throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
|
55
|
+
options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
|
56
|
+
+ # attachments must be passed as an encoded JSON string
|
57
|
+
+ if options.key?(:attachments)
|
58
|
+
+ attachments = options[:attachments]
|
59
|
+
+ attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
60
|
+
+ options = options.merge(attachments: attachments)
|
61
|
+
+ end
|
62
|
+
+ # blocks must be passed as an encoded JSON string
|
63
|
+
+ if options.key?(:blocks)
|
64
|
+
+ blocks = options[:blocks]
|
65
|
+
+ blocks = JSON.dump(blocks) unless blocks.is_a?(String)
|
66
|
+
+ options = options.merge(blocks: blocks)
|
67
|
+
+ end
|
68
|
+
post('chat.update', options)
|
69
|
+
end
|
70
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
diff --git a/lib/slack/web/api/endpoints/dialog.rb b/lib/slack/web/api/endpoints/dialog.rb
|
2
|
+
index 01f9dfd..d017adf 100644
|
3
|
+
--- a/lib/slack/web/api/endpoints/dialog.rb
|
4
|
+
+++ b/lib/slack/web/api/endpoints/dialog.rb
|
5
|
+
@@ -17,6 +17,12 @@ module Slack
|
6
|
+
def dialog_open(options = {})
|
7
|
+
throw ArgumentError.new('Required arguments :dialog missing') if options[:dialog].nil?
|
8
|
+
throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
|
9
|
+
+ # dialog must be passed as an encoded JSON string
|
10
|
+
+ if options.key?(:dialog)
|
11
|
+
+ dialog = options[:dialog]
|
12
|
+
+ dialog = JSON.dump(dialog) unless dialog.is_a?(String)
|
13
|
+
+ options = options.merge(dialog: dialog)
|
14
|
+
+ end
|
15
|
+
post('dialog.open', options)
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,40 @@
|
|
1
|
+
diff --git a/lib/slack/web/api/endpoints/views.rb b/lib/slack/web/api/endpoints/views.rb
|
2
|
+
index 3d7ac8e..10de15c 100644
|
3
|
+
--- a/lib/slack/web/api/endpoints/views.rb
|
4
|
+
+++ b/lib/slack/web/api/endpoints/views.rb
|
5
|
+
@@ -18,6 +18,11 @@ module Slack
|
6
|
+
def views_open(options = {})
|
7
|
+
throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
|
8
|
+
throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
|
9
|
+
+ if options.key?(:view)
|
10
|
+
+ view = options[:view]
|
11
|
+
+ view = JSON.dump(view) unless view.is_a?(String)
|
12
|
+
+ options = options.merge(view: view)
|
13
|
+
+ end
|
14
|
+
post('views.open', options)
|
15
|
+
end
|
16
|
+
|
17
|
+
@@ -33,6 +38,11 @@ module Slack
|
18
|
+
def views_push(options = {})
|
19
|
+
throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
|
20
|
+
throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
|
21
|
+
+ if options.key?(:view)
|
22
|
+
+ view = options[:view]
|
23
|
+
+ view = JSON.dump(view) unless view.is_a?(String)
|
24
|
+
+ options = options.merge(view: view)
|
25
|
+
+ end
|
26
|
+
post('views.push', options)
|
27
|
+
end
|
28
|
+
|
29
|
+
@@ -51,6 +61,11 @@ module Slack
|
30
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/views/views.update.json
|
31
|
+
def views_update(options = {})
|
32
|
+
throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
|
33
|
+
+ if options.key?(:view)
|
34
|
+
+ view = options[:view]
|
35
|
+
+ view = JSON.dump(view) unless view.is_a?(String)
|
36
|
+
+ options = options.merge(view: view)
|
37
|
+
+ end
|
38
|
+
post('views.update', options)
|
39
|
+
end
|
40
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
diff --git a/lib/slack/web/api/endpoints/views.rb b/lib/slack/web/api/endpoints/views.rb
|
2
|
+
index 31626b9..8182a9c 100644
|
3
|
+
--- a/lib/slack/web/api/endpoints/views.rb
|
4
|
+
+++ b/lib/slack/web/api/endpoints/views.rb
|
5
|
+
@@ -40,6 +40,11 @@ module Slack
|
6
|
+
def views_publish(options = {})
|
7
|
+
throw ArgumentError.new('Required arguments :user_id missing') if options[:user_id].nil?
|
8
|
+
throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
|
9
|
+
+ if options.key?(:view)
|
10
|
+
+ view = options[:view]
|
11
|
+
+ view = JSON.dump(view) unless view.is_a?(String)
|
12
|
+
+ options = options.merge(view: view)
|
13
|
+
+ end
|
14
|
+
post('views.publish', options)
|
15
|
+
end
|
16
|
+
|
@@ -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
|
<% desc = group['desc'] || "#{group['name'].gsub(".", "_").camelize} methods." %>
|
@@ -7,11 +8,12 @@ desc "<%= desc %>"
|
|
7
8
|
desc '<%= desc %>'
|
8
9
|
<% end %>
|
9
10
|
command '<%= group['name'].gsub(".", "_") %>' do |g|
|
10
|
-
<% names.each_with_index do |(name, data), index| %>
|
11
|
+
<% names.sort.each_with_index do |(name, data), index| %>
|
11
12
|
<% if index > 0 %>
|
12
13
|
|
13
14
|
<% end %>
|
14
15
|
<% short_desc = data["desc"].split("\n").first %>
|
16
|
+
<% short_desc += ' (undocumented)' if data['undocumented'] %>
|
15
17
|
<% if short_desc.include?("'") %>
|
16
18
|
g.desc "<%= short_desc %>"
|
17
19
|
<% else %>
|
@@ -20,8 +22,8 @@ command '<%= group['name'].gsub(".", "_") %>' do |g|
|
|
20
22
|
g.long_desc %( <%= data["desc"].split("\n").join(" ") %> )
|
21
23
|
g.command '<%= name %>' do |c|
|
22
24
|
<% data["args"].each do |arg_name, arg_v| %>
|
23
|
-
<% if arg_v["desc"].include?("'")
|
24
|
-
c.flag '<%= arg_name %>', desc: "<%= arg_v["desc"] %>"
|
25
|
+
<% if arg_v["desc"].include?("'") %>
|
26
|
+
c.flag '<%= arg_name %>', desc: "<%= arg_v["desc"].gsub('"', '\'') %>"
|
25
27
|
<% else %>
|
26
28
|
c.flag '<%= arg_name %>', desc: '<%= arg_v["desc"] %>'
|
27
29
|
<% end %>
|
@@ -1,18 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# This file was auto-generated by lib/tasks/web.rake
|
2
3
|
|
3
|
-
<% files.each do |f| %>
|
4
|
-
|
4
|
+
<% files.sort.each do |f| %>
|
5
|
+
require_relative 'endpoints/<%= f %>'
|
5
6
|
<% end %>
|
6
7
|
|
7
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
|
-
<% files.each do |f| %>
|
15
|
+
<% files.sort.each do |f| %>
|
16
16
|
include <%= f.camelize %>
|
17
17
|
<% end %>
|
18
18
|
end
|
@@ -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
|
@@ -5,13 +6,14 @@ module Slack
|
|
5
6
|
module Api
|
6
7
|
module Endpoints
|
7
8
|
module <%= group.gsub(".", "_").camelize %>
|
8
|
-
<% names.each_with_index do |(name, data), index| %>
|
9
|
+
<% names.sort.each_with_index do |(name, data), index| %>
|
9
10
|
<% next if data['mixin'] %>
|
10
11
|
<% if index > 0 %>
|
11
12
|
|
12
13
|
<% end %>
|
13
14
|
#
|
14
|
-
<% data['desc'].split("\n").
|
15
|
+
<% data['desc'].split("\n").each_with_index do |line, index| %>
|
16
|
+
<% line += ' (undocumented)' if data['undocumented'] && index == 0 %>
|
15
17
|
# <%= line %>
|
16
18
|
<% end %>
|
17
19
|
#
|
@@ -25,8 +27,12 @@ module Slack
|
|
25
27
|
<% end %>
|
26
28
|
<% end %>
|
27
29
|
<% end %>
|
30
|
+
<% if data['undocumented'] %>
|
31
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/undocumented/<%= group %>/<%= group %>.<%= name %>.json
|
32
|
+
<% else %>
|
28
33
|
# @see https://api.slack.com/methods/<%= group %>.<%= name %>
|
29
|
-
# @see https://github.com/
|
34
|
+
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/<%= group %>/<%= group %>.<%= name %>.json
|
35
|
+
<% end %>
|
30
36
|
def <%= group.gsub(".", "_") %>_<%= name %>(options = {})
|
31
37
|
<% data['args'].select{ |k, v| v['required'] }.each do |arg_name, arg_v| %>
|
32
38
|
throw ArgumentError.new('Required arguments :<%= arg_name %> missing') if options[:<%= arg_name %>].nil?
|
@@ -34,12 +40,28 @@ module Slack
|
|
34
40
|
<% if data['group'] == 'groups' && data['args']['channel'] && !data['args']['channel']['desc'].include?('Can be an encoded ID, or a name.') %>
|
35
41
|
options = options.merge(channel: groups_id(options)['group']['id']) if options[:channel]
|
36
42
|
<% elsif data['args']['channel'] && !data['args']['channel']['desc'].include?('Can be an encoded ID, or a name.') %>
|
37
|
-
options = options.merge(channel:
|
43
|
+
options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
|
38
44
|
<% end %>
|
39
45
|
<% if data['args']['user'] %>
|
40
46
|
options = options.merge(user: users_id(options)['user']['id']) if options[:user]
|
41
47
|
<% end %>
|
48
|
+
<% if data['undocumented'] %>
|
49
|
+
logger.warn('The <%= group %>.<%= name %> method is undocumented.')
|
50
|
+
<% end %>
|
51
|
+
<% if data['deprecated'] %>
|
52
|
+
logger.warn('<%= group %>.<%= name %>: <%= data['deprecation']['deprecation_warning']%> Alternative methods: <%= data['deprecation']['alternative_methods'].join(', ')%>.')
|
53
|
+
<% end %>
|
54
|
+
<% if data['args'].keys.include?('cursor') %>
|
55
|
+
if block_given?
|
56
|
+
Pagination::Cursor.new(self, :<%= group.gsub(".", "_") %>_<%= name %>, options).each do |page|
|
57
|
+
yield page
|
58
|
+
end
|
59
|
+
else
|
60
|
+
post('<%= group %>.<%= name %>', options)
|
61
|
+
end
|
62
|
+
<% else %>
|
42
63
|
post('<%= group %>.<%= name %>', options)
|
64
|
+
<% end %>
|
43
65
|
end
|
44
66
|
<% end %>
|
45
67
|
end
|
@@ -1,17 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# This file was auto-generated by lib/tasks/web.rake
|
2
3
|
|
3
4
|
require 'spec_helper'
|
4
5
|
|
5
6
|
RSpec.describe Slack::Web::Api::Endpoints::<%= group.gsub(".", "_").camelize %> do
|
6
7
|
let(:client) { Slack::Web::Client.new }
|
7
|
-
<% names.each_with_index do |(name, data), index| %>
|
8
|
+
<% names.sort.each_with_index do |(name, data), index| %>
|
8
9
|
<% next if data['mixin'] %>
|
9
10
|
<% required_params = data['args'].select{ |k, v| v['required'] } %>
|
10
11
|
<% next if required_params.none? %>
|
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,16 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Slack
|
2
3
|
module Web
|
3
4
|
module Config
|
4
5
|
extend self
|
5
6
|
|
6
|
-
ATTRIBUTES = [
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
7
|
+
ATTRIBUTES = %i[
|
8
|
+
proxy
|
9
|
+
user_agent
|
10
|
+
ca_path
|
11
|
+
ca_file
|
12
|
+
logger
|
13
|
+
endpoint
|
14
|
+
token
|
15
|
+
timeout
|
16
|
+
open_timeout
|
17
|
+
default_page_size
|
18
|
+
default_max_retries
|
19
|
+
adapter
|
14
20
|
].freeze
|
15
21
|
|
16
22
|
attr_accessor(*Config::ATTRIBUTES)
|
@@ -18,11 +24,16 @@ module Slack
|
|
18
24
|
def reset
|
19
25
|
self.endpoint = 'https://slack.com/api/'
|
20
26
|
self.user_agent = "Slack Ruby Client/#{Slack::VERSION}"
|
21
|
-
self.ca_path =
|
22
|
-
self.ca_file =
|
27
|
+
self.ca_path = defined?(OpenSSL) ? OpenSSL::X509::DEFAULT_CERT_DIR : nil
|
28
|
+
self.ca_file = defined?(OpenSSL) ? OpenSSL::X509::DEFAULT_CERT_FILE : nil
|
23
29
|
self.token = nil
|
24
30
|
self.proxy = nil
|
25
31
|
self.logger = nil
|
32
|
+
self.timeout = nil
|
33
|
+
self.open_timeout = nil
|
34
|
+
self.default_page_size = 100
|
35
|
+
self.default_max_retries = 100
|
36
|
+
self.adapter = ::Faraday.default_adapter
|
26
37
|
end
|
27
38
|
end
|
28
39
|
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Slack
|
2
3
|
module Web
|
3
4
|
module Faraday
|
@@ -5,24 +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
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
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?
|
23
|
+
|
24
|
+
::Faraday::Connection.new(endpoint, options) do |connection|
|
25
|
+
connection.use ::Faraday::Request::Multipart
|
26
|
+
connection.use ::Faraday::Request::UrlEncoded
|
27
|
+
connection.use ::Slack::Web::Faraday::Response::RaiseError
|
28
|
+
connection.use ::FaradayMiddleware::Mashify, mash_class: Slack::Messages::Message
|
29
|
+
connection.use ::FaradayMiddleware::ParseJson
|
30
|
+
connection.use ::Slack::Web::Faraday::Response::WrapError
|
31
|
+
connection.response :logger, logger if logger
|
32
|
+
connection.adapter adapter
|
33
|
+
end
|
34
|
+
end
|
26
35
|
end
|
27
36
|
end
|
28
37
|
end
|
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Slack
|
2
3
|
module Web
|
3
4
|
module Faraday
|
@@ -21,15 +22,17 @@ 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
|
35
|
+
request.options.merge!(options.delete(:request)) if options.key?(:request)
|
33
36
|
end
|
34
37
|
response.body
|
35
38
|
end
|