slack-ruby-client 0.14.3 → 0.15.1
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/.rubocop.yml +23 -7
- data/.rubocop_todo.yml +115 -44
- data/.travis.yml +0 -1
- data/CHANGELOG.md +38 -2
- data/CONTRIBUTING.md +24 -6
- data/Dangerfile +2 -1
- data/Gemfile +2 -2
- data/README.md +90 -29
- data/Rakefile +1 -0
- data/UPGRADING.md +6 -0
- data/bin/commands.rb +23 -0
- data/bin/commands/admin_apps.rb +27 -0
- data/bin/commands/admin_apps_approved.rb +17 -0
- data/bin/commands/admin_apps_requests.rb +16 -0
- data/bin/commands/admin_apps_restricted.rb +17 -0
- data/bin/commands/admin_conversations.rb +17 -0
- data/bin/commands/admin_conversations_restrictAccess.rb +37 -0
- data/bin/commands/admin_conversations_whitelist.rb +37 -0
- data/bin/commands/admin_emoji.rb +54 -0
- data/bin/commands/admin_inviteRequests.rb +36 -0
- data/bin/commands/admin_inviteRequests_approved.rb +16 -0
- data/bin/commands/admin_inviteRequests_denied.rb +16 -0
- data/bin/commands/admin_teams.rb +27 -0
- data/bin/commands/admin_teams_admins.rb +16 -0
- data/bin/commands/admin_teams_owners.rb +16 -0
- data/bin/commands/admin_teams_settings.rb +64 -0
- data/bin/commands/admin_usergroups.rb +48 -0
- data/bin/commands/admin_users.rb +97 -0
- data/bin/commands/admin_users_session.rb +3 -2
- data/bin/commands/api.rb +3 -2
- data/bin/commands/apps.rb +3 -2
- data/bin/commands/apps_permissions.rb +5 -4
- data/bin/commands/apps_permissions_resources.rb +3 -2
- data/bin/commands/apps_permissions_scopes.rb +3 -2
- data/bin/commands/apps_permissions_users.rb +5 -4
- data/bin/commands/auth.rb +5 -4
- data/bin/commands/bots.rb +3 -2
- data/bin/commands/calls.rb +52 -0
- data/bin/commands/calls_participants.rb +25 -0
- data/bin/commands/channels.rb +31 -30
- data/bin/commands/chat.rb +32 -31
- data/bin/commands/chat_scheduledMessages.rb +3 -2
- data/bin/commands/conversations.rb +36 -36
- data/bin/commands/dialog.rb +3 -2
- data/bin/commands/dnd.rb +9 -8
- data/bin/commands/emoji.rb +3 -2
- data/bin/commands/files.rb +14 -12
- data/bin/commands/files_comments.rb +3 -2
- data/bin/commands/files_remote.rb +78 -0
- data/bin/commands/groups.rb +33 -32
- data/bin/commands/im.rb +13 -12
- data/bin/commands/migration.rb +3 -2
- data/bin/commands/mpim.rb +11 -10
- data/bin/commands/oauth.rb +6 -5
- data/bin/commands/oauth_v2.rb +17 -0
- data/bin/commands/pins.rb +7 -8
- data/bin/commands/reactions.rb +10 -11
- data/bin/commands/reminders.rb +11 -10
- data/bin/commands/rtm.rb +5 -4
- data/bin/commands/search.rb +7 -6
- data/bin/commands/stars.rb +7 -6
- data/bin/commands/team.rb +9 -8
- data/bin/commands/team_profile.rb +3 -2
- data/bin/commands/usergroups.rb +11 -10
- data/bin/commands/usergroups_users.rb +5 -4
- data/bin/commands/users.rb +21 -20
- data/bin/commands/users_admin.rb +1 -0
- data/bin/commands/users_prefs.rb +1 -0
- data/bin/commands/users_profile.rb +5 -4
- data/bin/commands/views.rb +48 -0
- data/bin/slack +1 -2
- data/examples/hi_real_time/Gemfile +1 -0
- data/examples/hi_real_time/hi.rb +7 -3
- data/examples/hi_real_time_and_web/Gemfile +1 -0
- data/examples/hi_real_time_and_web/hi.rb +7 -3
- data/examples/hi_real_time_async_async/Gemfile +1 -0
- data/examples/hi_real_time_async_async/hi.rb +6 -2
- data/examples/hi_real_time_async_celluloid/Gemfile +1 -0
- data/examples/hi_real_time_async_celluloid/hi.rb +7 -3
- data/examples/hi_real_time_async_eventmachine/Gemfile +1 -0
- data/examples/hi_real_time_async_eventmachine/hi.rb +7 -3
- data/examples/hi_web/Gemfile +1 -0
- data/examples/hi_web/hi.rb +1 -0
- data/examples/new_ticket/Gemfile +1 -0
- data/examples/new_ticket/new_ticket.rb +1 -0
- data/lib/slack-ruby-client.rb +4 -4
- data/lib/slack.rb +1 -0
- data/lib/slack/config.rb +1 -0
- data/lib/slack/events/config.rb +1 -0
- data/lib/slack/events/request.rb +3 -1
- data/lib/slack/logger.rb +6 -5
- data/lib/slack/messages/formatting.rb +1 -0
- data/lib/slack/messages/message.rb +1 -4
- data/lib/slack/real_time/api/message.rb +3 -1
- data/lib/slack/real_time/api/message_id.rb +1 -0
- data/lib/slack/real_time/api/ping.rb +5 -2
- data/lib/slack/real_time/api/typing.rb +3 -1
- data/lib/slack/real_time/client.rb +26 -13
- data/lib/slack/real_time/concurrency.rb +1 -0
- data/lib/slack/real_time/concurrency/async.rb +13 -7
- data/lib/slack/real_time/concurrency/celluloid.rb +10 -4
- data/lib/slack/real_time/concurrency/eventmachine.rb +9 -6
- data/lib/slack/real_time/config.rb +6 -1
- data/lib/slack/real_time/models.rb +1 -0
- data/lib/slack/real_time/models/base.rb +1 -4
- data/lib/slack/real_time/models/bot.rb +1 -0
- data/lib/slack/real_time/models/channel.rb +1 -0
- data/lib/slack/real_time/models/group.rb +1 -0
- data/lib/slack/real_time/models/im.rb +1 -0
- data/lib/slack/real_time/models/team.rb +1 -0
- data/lib/slack/real_time/models/user.rb +1 -0
- data/lib/slack/real_time/socket.rb +16 -13
- data/lib/slack/real_time/stores.rb +1 -0
- data/lib/slack/real_time/stores/base.rb +4 -1
- data/lib/slack/real_time/stores/starter.rb +1 -0
- data/lib/slack/real_time/stores/store.rb +16 -25
- data/lib/slack/version.rb +2 -1
- data/lib/slack/web/api/endpoints.rb +46 -0
- data/lib/slack/web/api/endpoints/admin_apps.rb +42 -0
- data/lib/slack/web/api/endpoints/admin_apps_approved.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_apps_requests.rb +33 -0
- data/lib/slack/web/api/endpoints/admin_apps_restricted.rb +35 -0
- data/lib/slack/web/api/endpoints/admin_conversations.rb +30 -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 +2 -1
- data/lib/slack/web/api/endpoints/api.rb +2 -1
- data/lib/slack/web/api/endpoints/apps.rb +2 -1
- data/lib/slack/web/api/endpoints/apps_permissions.rb +3 -2
- data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +2 -1
- data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +2 -1
- data/lib/slack/web/api/endpoints/apps_permissions_users.rb +3 -2
- data/lib/slack/web/api/endpoints/auth.rb +3 -2
- data/lib/slack/web/api/endpoints/bots.rb +2 -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/channels.rb +44 -29
- data/lib/slack/web/api/endpoints/chat.rb +30 -29
- data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +3 -2
- data/lib/slack/web/api/endpoints/conversations.rb +34 -35
- data/lib/slack/web/api/endpoints/dialog.rb +2 -1
- data/lib/slack/web/api/endpoints/dnd.rb +5 -4
- data/lib/slack/web/api/endpoints/emoji.rb +2 -1
- data/lib/slack/web/api/endpoints/files.rb +11 -8
- data/lib/slack/web/api/endpoints/files_comments.rb +2 -1
- data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
- data/lib/slack/web/api/endpoints/groups.rb +33 -22
- data/lib/slack/web/api/endpoints/im.rb +17 -12
- data/lib/slack/web/api/endpoints/migration.rb +2 -1
- data/lib/slack/web/api/endpoints/mpim.rb +16 -11
- data/lib/slack/web/api/endpoints/oauth.rb +4 -6
- data/lib/slack/web/api/endpoints/oauth_v2.rb +30 -0
- data/lib/slack/web/api/endpoints/pins.rb +8 -12
- data/lib/slack/web/api/endpoints/reactions.rb +12 -15
- data/lib/slack/web/api/endpoints/reminders.rb +6 -5
- data/lib/slack/web/api/endpoints/rtm.rb +3 -2
- data/lib/slack/web/api/endpoints/search.rb +4 -3
- data/lib/slack/web/api/endpoints/stars.rb +6 -7
- data/lib/slack/web/api/endpoints/team.rb +5 -5
- data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
- data/lib/slack/web/api/endpoints/usergroups.rb +6 -5
- data/lib/slack/web/api/endpoints/usergroups_users.rb +3 -2
- data/lib/slack/web/api/endpoints/users.rb +11 -16
- data/lib/slack/web/api/endpoints/users_admin.rb +1 -0
- data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
- data/lib/slack/web/api/endpoints/users_profile.rb +3 -2
- data/lib/slack/web/api/endpoints/views.rb +97 -0
- data/lib/slack/web/api/error.rb +1 -0
- data/lib/slack/web/api/errors.rb +656 -0
- data/lib/slack/web/api/errors/slack_error.rb +14 -1
- data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -0
- data/lib/slack/web/api/mixins.rb +2 -0
- data/lib/slack/web/api/mixins/channels.id.rb +2 -3
- data/lib/slack/web/api/mixins/conversations.id.rb +25 -0
- data/lib/slack/web/api/mixins/groups.id.rb +2 -3
- data/lib/slack/web/api/mixins/ids.id.rb +3 -2
- data/lib/slack/web/api/mixins/users.id.rb +2 -3
- data/lib/slack/web/api/mixins/users.search.rb +1 -0
- data/lib/slack/web/api/patches/{chat.6.block-kit-support.patch → chat.1.patch} +29 -26
- data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
- data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
- data/lib/slack/web/api/templates/command.erb +1 -0
- data/lib/slack/web/api/templates/commands.erb +1 -0
- data/lib/slack/web/api/templates/endpoints.erb +1 -0
- data/lib/slack/web/api/templates/errors.erb +20 -0
- data/lib/slack/web/api/templates/method.erb +5 -1
- data/lib/slack/web/api/templates/method_spec.erb +1 -0
- data/lib/slack/web/client.rb +2 -1
- data/lib/slack/web/config.rb +3 -0
- data/lib/slack/web/faraday/connection.rb +24 -20
- data/lib/slack/web/faraday/request.rb +1 -0
- data/lib/slack/web/faraday/response/raise_error.rb +10 -6
- data/lib/slack/web/pagination/cursor.rb +3 -2
- data/lib/slack_ruby_client.rb +1 -0
- data/lib/tasks/git.rake +1 -0
- data/lib/tasks/real_time.rake +13 -5
- data/lib/tasks/update.rake +1 -0
- data/lib/tasks/web.rake +27 -7
- data/screenshots/create-app.png +0 -0
- data/slack-ruby-client.gemspec +6 -3
- data/spec/fixtures/slack/web/channels_info.yml +108 -15
- data/spec/fixtures/slack/web/conversations_setTopic.yml +69 -0
- data/spec/fixtures/slack/web/conversations_setTopic_one_page.yml +142 -0
- data/spec/fixtures/slack/web/conversations_setTopic_paginated.yml +208 -0
- data/spec/fixtures/slack/web/views_open_error.yml +76 -0
- data/spec/integration/integration_spec.rb +26 -23
- data/spec/slack/config_spec.rb +2 -0
- data/spec/slack/events/config_spec.rb +8 -4
- data/spec/slack/events/request_spec.rb +67 -37
- data/spec/slack/messages/formatting_spec.rb +25 -13
- data/spec/slack/real_time/api/message_spec.rb +6 -1
- data/spec/slack/real_time/api/ping_spec.rb +2 -0
- data/spec/slack/real_time/api/typing_spec.rb +5 -1
- data/spec/slack/real_time/client_spec.rb +174 -36
- data/spec/slack/real_time/concurrency/celluloid_spec.rb +11 -6
- data/spec/slack/real_time/concurrency/eventmachine_spec.rb +9 -1
- data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
- data/spec/slack/real_time/event_handlers/bot_spec.rb +2 -1
- data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -6
- data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +2 -1
- data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
- data/spec/slack/real_time/event_handlers/im_spec.rb +4 -3
- data/spec/slack/real_time/event_handlers/team_spec.rb +3 -1
- data/spec/slack/real_time/event_handlers/user_spec.rb +1 -0
- data/spec/slack/real_time/rtm_connect_spec.rb +1 -0
- data/spec/slack/real_time/rtm_start_spec.rb +1 -0
- data/spec/slack/real_time/store_spec.rb +2 -1
- data/spec/slack/slack_spec.rb +37 -5
- data/spec/slack/version_spec.rb +2 -1
- data/spec/slack/web/api/endpoints/admin_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 +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 +13 -0
- data/spec/slack/web/api/endpoints/admin_conversations_whitelist_spec.rb +32 -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 +1 -0
- data/spec/slack/web/api/endpoints/admin_users_spec.rb +75 -0
- data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_permissions_resources_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_permissions_scopes_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +3 -2
- data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +4 -3
- data/spec/slack/web/api/endpoints/apps_spec.rb +1 -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 +1 -0
- data/spec/slack/web/api/endpoints/conversations_spec.rb +2 -1
- data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +5 -1
- data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +5 -3
- data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +80 -25
- data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +12 -4
- data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +2 -0
- data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +6 -1
- data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
- data/spec/slack/web/api/endpoints/dnd_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/files_comments_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
- data/spec/slack/web/api/endpoints/files_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/im_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/mpim_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -11
- data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +13 -0
- data/spec/slack/web/api/endpoints/pins_spec.rb +5 -1
- data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
- data/spec/slack/web/api/endpoints/reminders_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +1 -0
- 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/views_spec.rb +29 -0
- data/spec/slack/web/api/error_spec.rb +4 -2
- data/spec/slack/web/api/errors/service_unavailable_spec.rb +8 -5
- data/spec/slack/web/api/errors/slack_error_spec.rb +26 -2
- data/spec/slack/web/api/mixins/channels_spec.rb +17 -7
- data/spec/slack/web/api/mixins/conversations_list_spec.rb +21 -0
- data/spec/slack/web/api/mixins/conversations_spec.rb +43 -0
- data/spec/slack/web/api/mixins/groups_spec.rb +17 -7
- data/spec/slack/web/api/mixins/users_spec.rb +17 -8
- data/spec/slack/web/api/pagination/cursor_spec.rb +40 -10
- data/spec/slack/web/client_spec.rb +115 -18
- data/spec/slack/web/faraday/response/raise_error_spec.rb +41 -7
- data/spec/spec_helper.rb +2 -1
- data/spec/support/queue_with_timeout.rb +1 -0
- data/spec/support/real_time/concurrency/mock.rb +1 -0
- data/spec/support/real_time/connected_client.rb +9 -3
- data/spec/support/real_time/event.rb +1 -0
- data/spec/support/token.rb +1 -0
- data/spec/support/vcr.rb +5 -0
- metadata +160 -29
- 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 -15
- data/screenshots/register-bot.png +0 -0
data/bin/commands/users_prefs.rb
CHANGED
|
@@ -1,9 +1,10 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
# This file was auto-generated by lib/tasks/web.rake
|
|
2
3
|
|
|
3
4
|
desc 'UsersProfile methods.'
|
|
4
5
|
command 'users_profile' do |g|
|
|
5
|
-
g.desc "
|
|
6
|
-
g.long_desc %(
|
|
6
|
+
g.desc "Retrieves a user's profile information."
|
|
7
|
+
g.long_desc %( Retrieves a user's profile information. )
|
|
7
8
|
g.command 'get' do |c|
|
|
8
9
|
c.flag 'include_labels', desc: 'Include labels for each ID in custom profile fields.'
|
|
9
10
|
c.flag 'user', desc: 'User to retrieve profile info for.'
|
|
@@ -12,8 +13,8 @@ command 'users_profile' do |g|
|
|
|
12
13
|
end
|
|
13
14
|
end
|
|
14
15
|
|
|
15
|
-
g.desc
|
|
16
|
-
g.long_desc %(
|
|
16
|
+
g.desc 'Set the profile information for a user.'
|
|
17
|
+
g.long_desc %( Set the profile information for a user. )
|
|
17
18
|
g.command 'set' do |c|
|
|
18
19
|
c.flag 'name', desc: 'Name of a single key to set. Usable only if profile is not passed.'
|
|
19
20
|
c.flag 'profile', desc: 'Collection of key:value pairs presented as a URL-encoded JSON hash. At most 50 fields may be set. Each field name is limited to 255 characters.'
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
# This file was auto-generated by lib/tasks/web.rake
|
|
3
|
+
|
|
4
|
+
desc 'Views methods.'
|
|
5
|
+
command 'views' do |g|
|
|
6
|
+
g.desc 'Open a view for a user.'
|
|
7
|
+
g.long_desc %( Open a view for a user. )
|
|
8
|
+
g.command 'open' do |c|
|
|
9
|
+
c.flag 'trigger_id', desc: 'Exchange a trigger to post to the user.'
|
|
10
|
+
c.flag 'view', desc: 'A view payload. This must be a JSON-encoded string.'
|
|
11
|
+
c.action do |_global_options, options, _args|
|
|
12
|
+
puts JSON.dump($client.views_open(options))
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
g.desc 'Publish a static view for a User.'
|
|
17
|
+
g.long_desc %( Publish a static view for a User. )
|
|
18
|
+
g.command 'publish' do |c|
|
|
19
|
+
c.flag 'user_id', desc: 'id of the user you want publish a view to.'
|
|
20
|
+
c.flag 'view', desc: 'A view payload. This must be a JSON-encoded string.'
|
|
21
|
+
c.flag 'hash', desc: 'A string that represents view state to protect against possible race conditions.'
|
|
22
|
+
c.action do |_global_options, options, _args|
|
|
23
|
+
puts JSON.dump($client.views_publish(options))
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
g.desc 'Push a view onto the stack of a root view.'
|
|
28
|
+
g.long_desc %( Push a view onto the stack of a root view. )
|
|
29
|
+
g.command 'push' do |c|
|
|
30
|
+
c.flag 'trigger_id', desc: 'Exchange a trigger to post to the user.'
|
|
31
|
+
c.flag 'view', desc: 'A view payload. This must be a JSON-encoded string.'
|
|
32
|
+
c.action do |_global_options, options, _args|
|
|
33
|
+
puts JSON.dump($client.views_push(options))
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
g.desc 'Update an existing view.'
|
|
38
|
+
g.long_desc %( Update an existing view. )
|
|
39
|
+
g.command 'update' do |c|
|
|
40
|
+
c.flag 'view', desc: 'A view payload This must be a JSON-encoded string.'
|
|
41
|
+
c.flag 'external_id', desc: 'A unique identifier of the view set by the developer. Must be unique for all views on a team. Max length of 255 characters. Either view_id or external_id is required.'
|
|
42
|
+
c.flag 'hash', desc: 'A string that represents view state to protect against possible race conditions.'
|
|
43
|
+
c.flag 'view_id', desc: 'A unique identifier of the view to be updated. Either view_id or external_id is required.'
|
|
44
|
+
c.action do |_global_options, options, _args|
|
|
45
|
+
puts JSON.dump($client.views_update(options))
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
data/bin/slack
CHANGED
data/examples/hi_real_time/hi.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'slack-ruby-client'
|
|
2
3
|
|
|
3
4
|
Slack.configure do |config|
|
|
@@ -10,7 +11,10 @@ end
|
|
|
10
11
|
client = Slack::RealTime::Client.new
|
|
11
12
|
|
|
12
13
|
client.on :hello do
|
|
13
|
-
puts
|
|
14
|
+
puts(
|
|
15
|
+
"Successfully connected, welcome '#{client.self.name}' to " \
|
|
16
|
+
"the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
|
|
17
|
+
)
|
|
14
18
|
end
|
|
15
19
|
|
|
16
20
|
client.on :message do |data|
|
|
@@ -19,9 +23,9 @@ client.on :message do |data|
|
|
|
19
23
|
client.typing channel: data.channel
|
|
20
24
|
|
|
21
25
|
case data.text
|
|
22
|
-
when 'bot hi'
|
|
26
|
+
when 'bot hi'
|
|
23
27
|
client.message channel: data.channel, text: "Hi <@#{data.user}>!"
|
|
24
|
-
when /^bot/
|
|
28
|
+
when /^bot/
|
|
25
29
|
client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
|
|
26
30
|
end
|
|
27
31
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'slack-ruby-client'
|
|
2
3
|
|
|
3
4
|
Slack.configure do |config|
|
|
@@ -8,15 +9,18 @@ end
|
|
|
8
9
|
client = Slack::RealTime::Client.new
|
|
9
10
|
|
|
10
11
|
client.on :hello do
|
|
11
|
-
puts
|
|
12
|
+
puts(
|
|
13
|
+
"Successfully connected, welcome '#{client.self.name}' " \
|
|
14
|
+
"to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
|
|
15
|
+
)
|
|
12
16
|
end
|
|
13
17
|
|
|
14
18
|
client.on :message do |data|
|
|
15
19
|
puts data
|
|
16
20
|
case data.text
|
|
17
|
-
when 'bot hi'
|
|
21
|
+
when 'bot hi'
|
|
18
22
|
client.web_client.chat_postMessage channel: data.channel, text: "Hi <@#{data.user}>!"
|
|
19
|
-
when /^bot/
|
|
23
|
+
when /^bot/
|
|
20
24
|
client.web_client.chat_postMessage channel: data.channel, text: "Sorry <@#{data.user}>, what?"
|
|
21
25
|
end
|
|
22
26
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'slack-ruby-client'
|
|
2
3
|
require 'async'
|
|
3
4
|
|
|
@@ -15,7 +16,10 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
|
|
|
15
16
|
client = Slack::RealTime::Client.new(token: token)
|
|
16
17
|
|
|
17
18
|
client.on :hello do
|
|
18
|
-
logger.info
|
|
19
|
+
logger.info(
|
|
20
|
+
"Successfully connected, welcome '#{client.self.name}' to " \
|
|
21
|
+
"the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
|
|
22
|
+
)
|
|
19
23
|
end
|
|
20
24
|
|
|
21
25
|
client.on :message do |data|
|
|
@@ -24,7 +28,7 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
|
|
|
24
28
|
client.typing channel: data.channel
|
|
25
29
|
|
|
26
30
|
case data.text
|
|
27
|
-
when /hi/
|
|
31
|
+
when /hi/
|
|
28
32
|
client.message channel: data.channel, text: "Hi <@#{data.user}>!"
|
|
29
33
|
else
|
|
30
34
|
client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'slack-ruby-client'
|
|
2
3
|
|
|
3
4
|
raise 'Missing ENV[SLACK_API_TOKENS]!' unless ENV.key?('SLACK_API_TOKENS')
|
|
@@ -13,7 +14,10 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
|
|
|
13
14
|
client = Slack::RealTime::Client.new(token: token)
|
|
14
15
|
|
|
15
16
|
client.on :hello do
|
|
16
|
-
logger.info
|
|
17
|
+
logger.info(
|
|
18
|
+
"Successfully connected, welcome '#{client.self.name}' to " \
|
|
19
|
+
"the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
|
|
20
|
+
)
|
|
17
21
|
end
|
|
18
22
|
|
|
19
23
|
client.on :message do |data|
|
|
@@ -22,9 +26,9 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
|
|
|
22
26
|
client.typing channel: data.channel
|
|
23
27
|
|
|
24
28
|
case data.text
|
|
25
|
-
when 'bot hi'
|
|
29
|
+
when 'bot hi'
|
|
26
30
|
client.message channel: data.channel, text: "Hi <@#{data.user}>!"
|
|
27
|
-
when /^bot/
|
|
31
|
+
when /^bot/
|
|
28
32
|
client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
|
|
29
33
|
end
|
|
30
34
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'slack-ruby-client'
|
|
2
3
|
|
|
3
4
|
raise 'Missing ENV[SLACK_API_TOKENS]!' unless ENV.key?('SLACK_API_TOKENS')
|
|
@@ -13,7 +14,10 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
|
|
|
13
14
|
client = Slack::RealTime::Client.new(token: token)
|
|
14
15
|
|
|
15
16
|
client.on :hello do
|
|
16
|
-
logger.info
|
|
17
|
+
logger.info(
|
|
18
|
+
"Successfully connected, welcome '#{client.self.name}' to " \
|
|
19
|
+
"the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
|
|
20
|
+
)
|
|
17
21
|
end
|
|
18
22
|
|
|
19
23
|
client.on :message do |data|
|
|
@@ -22,9 +26,9 @@ ENV['SLACK_API_TOKENS'].split.each do |token|
|
|
|
22
26
|
client.typing channel: data.channel
|
|
23
27
|
|
|
24
28
|
case data.text
|
|
25
|
-
when 'bot hi'
|
|
29
|
+
when 'bot hi'
|
|
26
30
|
client.message channel: data.channel, text: "Hi <@#{data.user}>!"
|
|
27
|
-
when /^bot/
|
|
31
|
+
when /^bot/
|
|
28
32
|
client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
|
|
29
33
|
end
|
|
30
34
|
end
|
data/examples/hi_web/Gemfile
CHANGED
data/examples/hi_web/hi.rb
CHANGED
data/examples/new_ticket/Gemfile
CHANGED
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'
|
|
@@ -14,18 +15,19 @@ require 'json'
|
|
|
14
15
|
require 'logger'
|
|
15
16
|
begin
|
|
16
17
|
require 'picky'
|
|
17
|
-
rescue LoadError
|
|
18
|
+
rescue LoadError # rubocop:disable Lint/SuppressedException
|
|
18
19
|
# ignore, only used in users_search
|
|
19
20
|
end
|
|
20
21
|
begin
|
|
21
22
|
require 'openssl'
|
|
22
|
-
rescue LoadError
|
|
23
|
+
rescue LoadError # rubocop:disable Lint/SuppressedException
|
|
23
24
|
# Used in slack/web/config
|
|
24
25
|
end
|
|
25
26
|
require_relative 'slack/web/config'
|
|
26
27
|
require_relative 'slack/web/api/errors/slack_error'
|
|
27
28
|
require_relative 'slack/web/api/errors/too_many_requests_error'
|
|
28
29
|
require_relative 'slack/web/api/error'
|
|
30
|
+
require_relative 'slack/web/api/errors'
|
|
29
31
|
require_relative 'slack/web/faraday/response/raise_error'
|
|
30
32
|
require_relative 'slack/web/faraday/connection'
|
|
31
33
|
require_relative 'slack/web/faraday/request'
|
|
@@ -35,8 +37,6 @@ require_relative 'slack/web/pagination/cursor'
|
|
|
35
37
|
require_relative 'slack/web/client'
|
|
36
38
|
|
|
37
39
|
# RealTime API
|
|
38
|
-
require 'active_support'
|
|
39
|
-
require 'active_support/core_ext'
|
|
40
40
|
require_relative 'slack/real_time/concurrency'
|
|
41
41
|
require_relative 'slack/real_time/socket'
|
|
42
42
|
require_relative 'slack/real_time/api/message_id'
|
data/lib/slack.rb
CHANGED
data/lib/slack/config.rb
CHANGED
data/lib/slack/events/config.rb
CHANGED
data/lib/slack/events/request.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Events
|
|
3
4
|
class Request
|
|
@@ -12,7 +13,8 @@ module Slack
|
|
|
12
13
|
def initialize(http_request, options = {})
|
|
13
14
|
@http_request = http_request
|
|
14
15
|
@signing_secret = options[:signing_secret] || Slack::Events.config.signing_secret
|
|
15
|
-
@signature_expires_in =
|
|
16
|
+
@signature_expires_in =
|
|
17
|
+
options[:signature_expires_in] || Slack::Events.config.signature_expires_in
|
|
16
18
|
end
|
|
17
19
|
|
|
18
20
|
# Request timestamp.
|
data/lib/slack/logger.rb
CHANGED
|
@@ -1,13 +1,14 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
require 'logger'
|
|
2
3
|
|
|
3
4
|
module Slack
|
|
4
5
|
class Logger < ::Logger
|
|
5
6
|
def self.default
|
|
6
|
-
@
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
return @default if @default
|
|
8
|
+
|
|
9
|
+
logger = new STDOUT
|
|
10
|
+
logger.level = Logger::WARN
|
|
11
|
+
@default = logger
|
|
11
12
|
end
|
|
12
13
|
end
|
|
13
14
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module RealTime
|
|
3
4
|
module Api
|
|
@@ -6,7 +7,8 @@ module Slack
|
|
|
6
7
|
# Sends a message to a channel.
|
|
7
8
|
#
|
|
8
9
|
# @option options [channel] :channel
|
|
9
|
-
# Channel to send message to. Can be a public channel, private group or IM channel.
|
|
10
|
+
# Channel to send message to. Can be a public channel, private group or IM channel.
|
|
11
|
+
# Can be an encoded ID, or a name.
|
|
10
12
|
# @option options [Object] :text
|
|
11
13
|
# Text of the message to send. See below for an explanation of formatting.
|
|
12
14
|
def message(options = {})
|
|
@@ -1,10 +1,13 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module RealTime
|
|
3
4
|
module Api
|
|
4
5
|
module Ping
|
|
5
6
|
#
|
|
6
|
-
# Clients should try to quickly detect disconnections, even in idle periods, so that users
|
|
7
|
-
#
|
|
7
|
+
# Clients should try to quickly detect disconnections, even in idle periods, so that users
|
|
8
|
+
# can easily tell the
|
|
9
|
+
# difference between being disconnected and everyone being quiet. Not all web browsers
|
|
10
|
+
# support the WebSocket
|
|
8
11
|
# ping spec, so the RTM protocol also supports ping/pong messages.
|
|
9
12
|
#
|
|
10
13
|
def ping(options = {})
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module RealTime
|
|
3
4
|
module Api
|
|
@@ -6,7 +7,8 @@ module Slack
|
|
|
6
7
|
# Send a typing indicator to indicate that the user is currently writing a message.
|
|
7
8
|
#
|
|
8
9
|
# @option options [channel] :channel
|
|
9
|
-
# Channel to send message to. Can be a public channel, private group or IM channel.
|
|
10
|
+
# Channel to send message to. Can be a public channel, private group or IM channel.
|
|
11
|
+
# Can be an encoded ID, or a name.
|
|
10
12
|
def typing(options = {})
|
|
11
13
|
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
12
14
|
send_json({ type: 'typing', id: next_id }.merge(options))
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module RealTime
|
|
3
4
|
class Client
|
|
@@ -19,8 +20,8 @@ module Slack
|
|
|
19
20
|
attr_accessor :store
|
|
20
21
|
attr_accessor :url
|
|
21
22
|
attr_accessor(*Config::ATTRIBUTES)
|
|
23
|
+
attr_accessor :logger
|
|
22
24
|
|
|
23
|
-
protected :logger, :logger=
|
|
24
25
|
protected :store_class, :store_class=
|
|
25
26
|
|
|
26
27
|
def initialize(options = {})
|
|
@@ -35,7 +36,7 @@ module Slack
|
|
|
35
36
|
|
|
36
37
|
%i[users self channels team teams groups ims bots].each do |store_method|
|
|
37
38
|
define_method store_method do
|
|
38
|
-
store
|
|
39
|
+
store&.send(store_method)
|
|
39
40
|
end
|
|
40
41
|
end
|
|
41
42
|
|
|
@@ -62,11 +63,11 @@ module Slack
|
|
|
62
63
|
def stop!
|
|
63
64
|
raise ClientNotStartedError unless started?
|
|
64
65
|
|
|
65
|
-
@socket
|
|
66
|
+
@socket&.disconnect!
|
|
66
67
|
end
|
|
67
68
|
|
|
68
69
|
def started?
|
|
69
|
-
@socket
|
|
70
|
+
@socket&.connected?
|
|
70
71
|
end
|
|
71
72
|
|
|
72
73
|
class << self
|
|
@@ -83,7 +84,7 @@ module Slack
|
|
|
83
84
|
@socket.connect! do |driver|
|
|
84
85
|
driver.on :open do |event|
|
|
85
86
|
logger.debug("#{self}##{__method__}") { event.class.name }
|
|
86
|
-
|
|
87
|
+
open_event(event)
|
|
87
88
|
callback(event, :open)
|
|
88
89
|
end
|
|
89
90
|
|
|
@@ -100,7 +101,7 @@ module Slack
|
|
|
100
101
|
end
|
|
101
102
|
|
|
102
103
|
# This must be called last to ensure any events are registered before invoking user code.
|
|
103
|
-
@callback
|
|
104
|
+
@callback&.call(driver)
|
|
104
105
|
end
|
|
105
106
|
end
|
|
106
107
|
|
|
@@ -130,17 +131,29 @@ module Slack
|
|
|
130
131
|
logger.warn(to_s) { 'is offline' }
|
|
131
132
|
|
|
132
133
|
restart_async
|
|
134
|
+
rescue Slack::Web::Api::Errors::SlackError => e
|
|
135
|
+
# stop pinging if bot was uninstalled
|
|
136
|
+
case e.message
|
|
137
|
+
when 'account_inactive', 'invalid_auth' then
|
|
138
|
+
logger.warn(to_s) { e.message }
|
|
139
|
+
raise e
|
|
140
|
+
end
|
|
141
|
+
logger.debug("#{self}##{__method__}") { e }
|
|
133
142
|
rescue StandardError => e
|
|
134
143
|
# disregard all ping worker failures, keep pinging
|
|
135
144
|
logger.debug("#{self}##{__method__}") { e }
|
|
136
145
|
end
|
|
137
146
|
|
|
138
147
|
def run_ping?
|
|
139
|
-
!websocket_ping.nil? && websocket_ping
|
|
148
|
+
!websocket_ping.nil? && websocket_ping.positive?
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
def websocket_ping_timer
|
|
152
|
+
websocket_ping / 2
|
|
140
153
|
end
|
|
141
154
|
|
|
142
155
|
def to_s
|
|
143
|
-
if store
|
|
156
|
+
if store&.team
|
|
144
157
|
"id=#{store.team.id}, name=#{store.team.name}, domain=#{store.team.domain}"
|
|
145
158
|
else
|
|
146
159
|
super
|
|
@@ -200,7 +213,7 @@ module Slack
|
|
|
200
213
|
@socket.send_data(data.to_json)
|
|
201
214
|
end
|
|
202
215
|
|
|
203
|
-
def
|
|
216
|
+
def open_event(_event); end
|
|
204
217
|
|
|
205
218
|
def close(_event)
|
|
206
219
|
[@socket, socket_class].each do |s|
|
|
@@ -238,11 +251,11 @@ module Slack
|
|
|
238
251
|
end
|
|
239
252
|
|
|
240
253
|
def run_handlers(type, data)
|
|
254
|
+
return unless store.class.events
|
|
255
|
+
|
|
241
256
|
handlers = store.class.events[type.to_s]
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
store.instance_exec(data, &handler)
|
|
245
|
-
end
|
|
257
|
+
handlers&.each do |handler|
|
|
258
|
+
store.instance_exec(data, &handler)
|
|
246
259
|
end
|
|
247
260
|
rescue StandardError => e
|
|
248
261
|
logger.error("#{self}##{__method__}") { e }
|