slack-ruby-client 0.14.2 → 0.15.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/.rubocop.yml +23 -7
- data/.rubocop_todo.yml +103 -43
- data/.travis.yml +0 -1
- data/CHANGELOG.md +39 -2
- data/CONTRIBUTING.md +24 -6
- data/Dangerfile +2 -1
- data/Gemfile +10 -3
- data/README.md +90 -30
- data/Rakefile +1 -0
- data/UPGRADING.md +16 -0
- data/bin/commands.rb +24 -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 +16 -0
- 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 +36 -32
- 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 +10 -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 +46 -22
- data/lib/slack/real_time/concurrency.rb +1 -0
- data/lib/slack/real_time/concurrency/async.rb +18 -9
- 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 +11 -0
- data/lib/slack/real_time/stores/store.rb +26 -25
- data/lib/slack/version.rb +2 -1
- data/lib/slack/web/api/endpoints.rb +48 -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 +28 -0
- 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 +38 -31
- 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 +6 -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 -18
- 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 +7 -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 -12
- 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 +1 -0
- data/lib/slack/web/api/mixins/conversations.id.rb +27 -0
- data/lib/slack/web/api/mixins/groups.id.rb +1 -0
- data/lib/slack/web/api/mixins/ids.id.rb +1 -0
- data/lib/slack/web/api/mixins/users.id.rb +1 -0
- 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 +1 -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/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 +178 -32
- 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 +13 -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 +6 -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_spec.rb +41 -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 +71 -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 +1 -0
- metadata +156 -30
- 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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Web
|
|
3
4
|
module Api
|
|
@@ -6,8 +7,20 @@ module Slack
|
|
|
6
7
|
attr_reader :response
|
|
7
8
|
|
|
8
9
|
def initialize(message, response = nil)
|
|
9
|
-
@response = response
|
|
10
10
|
super message
|
|
11
|
+
@response = response
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def error
|
|
15
|
+
response.body.error
|
|
16
|
+
end
|
|
17
|
+
|
|
18
|
+
def errors
|
|
19
|
+
response.body.errors
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def response_metadata
|
|
23
|
+
response.body.response_metadata
|
|
11
24
|
end
|
|
12
25
|
end
|
|
13
26
|
end
|
data/lib/slack/web/api/mixins.rb
CHANGED
|
@@ -0,0 +1,27 @@
|
|
|
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, '#', :channels, 'channel_not_found') do
|
|
20
|
+
conversations_list
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
27
|
+
end
|
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
diff --git a/lib/slack/web/api/endpoints/chat.rb b/lib/slack/web/api/endpoints/chat.rb
|
|
2
|
-
index
|
|
2
|
+
index 9de4aa9..8ed5625 100644
|
|
3
3
|
--- a/lib/slack/web/api/endpoints/chat.rb
|
|
4
4
|
+++ b/lib/slack/web/api/endpoints/chat.rb
|
|
5
|
-
@@ -
|
|
5
|
+
@@ -121,11 +121,22 @@ module Slack
|
|
6
|
+
# @see https://api.slack.com/methods/chat.postEphemeral
|
|
6
7
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postEphemeral.json
|
|
7
8
|
def chat_postEphemeral(options = {})
|
|
9
|
+
- throw ArgumentError.new('Required arguments :attachments missing') if options[:attachments].nil?
|
|
8
10
|
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
9
|
-
- throw ArgumentError.new('Required arguments :text
|
|
11
|
+
- throw ArgumentError.new('Required arguments :text missing') if options[:text].nil?
|
|
10
12
|
+ throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
|
|
11
13
|
throw ArgumentError.new('Required arguments :user missing') if options[:user].nil?
|
|
12
14
|
options = options.merge(user: users_id(options)['user']['id']) if options[:user]
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
+ # attachments must be passed as an encoded JSON string
|
|
16
|
+
+ if options.key?(:attachments)
|
|
17
|
+
+ attachments = options[:attachments]
|
|
18
|
+
+ attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
|
19
|
+
+ options = options.merge(attachments: attachments)
|
|
20
|
+
+ end
|
|
18
21
|
+ # blocks must be passed as an encoded JSON string
|
|
19
22
|
+ if options.key?(:blocks)
|
|
20
23
|
+ blocks = options[:blocks]
|
|
@@ -23,19 +26,19 @@ index 54a7db1..c535bb5 100644
|
|
|
23
26
|
+ end
|
|
24
27
|
post('chat.postEphemeral', options)
|
|
25
28
|
end
|
|
26
|
-
|
|
27
|
-
@@ -
|
|
29
|
+
|
|
30
|
+
@@ -166,7 +177,19 @@ module Slack
|
|
28
31
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.postMessage.json
|
|
29
32
|
def chat_postMessage(options = {})
|
|
30
33
|
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
31
|
-
- throw ArgumentError.new('Required arguments :text
|
|
34
|
+
- throw ArgumentError.new('Required arguments :text missing') if options[:text].nil?
|
|
32
35
|
+ throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
36
|
+
+ # attachments must be passed as an encoded JSON string
|
|
37
|
+
+ if options.key?(:attachments)
|
|
38
|
+
+ attachments = options[:attachments]
|
|
39
|
+
+ attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
|
40
|
+
+ options = options.merge(attachments: attachments)
|
|
41
|
+
+ end
|
|
39
42
|
+ # blocks must be passed as an encoded JSON string
|
|
40
43
|
+ if options.key?(:blocks)
|
|
41
44
|
+ blocks = options[:blocks]
|
|
@@ -44,20 +47,20 @@ index 54a7db1..c535bb5 100644
|
|
|
44
47
|
+ end
|
|
45
48
|
post('chat.postMessage', options)
|
|
46
49
|
end
|
|
47
|
-
|
|
48
|
-
@@ -
|
|
50
|
+
|
|
51
|
+
@@ -254,8 +277,21 @@ module Slack
|
|
49
52
|
# @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/chat/chat.update.json
|
|
50
53
|
def chat_update(options = {})
|
|
51
54
|
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
52
|
-
- throw ArgumentError.new('Required arguments :text or :attachments missing') if options[:text].nil? && options[:attachments].nil?
|
|
53
55
|
+ throw ArgumentError.new('Required arguments :text, :attachments or :blocks missing') if options[:text].nil? && options[:attachments].nil? && options[:blocks].nil?
|
|
54
56
|
throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
|
|
55
|
-
options = options.merge(channel:
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
57
|
+
options = options.merge(channel: conversations_id(options)['channel']['id']) if options[:channel]
|
|
58
|
+
+ # attachments must be passed as an encoded JSON string
|
|
59
|
+
+ if options.key?(:attachments)
|
|
60
|
+
+ attachments = options[:attachments]
|
|
61
|
+
+ attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
|
62
|
+
+ options = options.merge(attachments: attachments)
|
|
63
|
+
+ end
|
|
61
64
|
+ # blocks must be passed as an encoded JSON string
|
|
62
65
|
+ if options.key?(:blocks)
|
|
63
66
|
+ blocks = options[:blocks]
|
|
@@ -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
|
+
|
|
@@ -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
|
|
@@ -39,7 +40,7 @@ module Slack
|
|
|
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|
|
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 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.use ::Faraday::Request::Multipart
|
|
26
|
+
connection.use ::Faraday::Request::UrlEncoded
|
|
27
|
+
connection.use ::Faraday::Response::RaiseError
|
|
28
|
+
connection.use ::Slack::Web::Faraday::Response::RaiseError
|
|
29
|
+
connection.use ::FaradayMiddleware::Mashify, mash_class: Slack::Messages::Message
|
|
30
|
+
connection.use ::FaradayMiddleware::ParseJson
|
|
31
|
+
connection.response :logger, logger if logger
|
|
32
|
+
connection.adapter ::Faraday.default_adapter
|
|
33
|
+
end
|
|
34
|
+
end
|
|
31
35
|
end
|
|
32
36
|
end
|
|
33
37
|
end
|
|
@@ -1,15 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Web
|
|
3
4
|
module Faraday
|
|
4
5
|
module Response
|
|
5
6
|
class RaiseError < ::Faraday::Response::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
|
+
return unless (body = env.body) && !body['ok']
|
|
10
|
+
|
|
11
|
+
error_message =
|
|
12
|
+
body['error'] || body['errors'].map { |message| message['error'] }.join(',')
|
|
13
|
+
|
|
14
|
+
error_class = Slack::Web::Api::Errors::ERROR_CLASSES[error_message]
|
|
15
|
+
error_class ||= Slack::Web::Api::Errors::SlackError
|
|
16
|
+
raise error_class.new(error_message, env.response)
|
|
13
17
|
end
|
|
14
18
|
end
|
|
15
19
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
1
2
|
module Slack
|
|
2
3
|
module Web
|
|
3
4
|
module Api
|
|
@@ -31,14 +32,14 @@ module Slack
|
|
|
31
32
|
|
|
32
33
|
client.logger.debug("#{self.class}##{__method__}") { e.to_s }
|
|
33
34
|
retry_count += 1
|
|
34
|
-
sleep(e.retry_after
|
|
35
|
+
sleep(e.retry_after)
|
|
35
36
|
next
|
|
36
37
|
end
|
|
37
38
|
yield response
|
|
38
39
|
break unless response.response_metadata
|
|
39
40
|
|
|
40
41
|
next_cursor = response.response_metadata.next_cursor
|
|
41
|
-
break if next_cursor.
|
|
42
|
+
break if next_cursor.nil? || next_cursor == ''
|
|
42
43
|
|
|
43
44
|
retry_count = 0
|
|
44
45
|
sleep(sleep_interval) if sleep_interval
|