slack-ruby-client 0.14.4 → 0.14.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +19 -11
- data/.rubocop_todo.yml +66 -47
- data/CHANGELOG.md +8 -0
- data/Dangerfile +1 -0
- data/Gemfile +1 -0
- data/README.md +16 -9
- data/Rakefile +1 -0
- data/bin/commands.rb +6 -0
- data/bin/commands/admin_apps.rb +27 -0
- data/bin/commands/admin_apps_requests.rb +16 -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/channels.rb +31 -30
- data/bin/commands/chat.rb +19 -18
- data/bin/commands/chat_scheduledMessages.rb +3 -2
- data/bin/commands/conversations.rb +35 -34
- 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 +13 -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 +5 -4
- 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 +3 -2
- 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 -0
- 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 +19 -12
- data/lib/slack/real_time/concurrency.rb +1 -0
- data/lib/slack/real_time/concurrency/async.rb +15 -7
- data/lib/slack/real_time/concurrency/celluloid.rb +9 -3
- data/lib/slack/real_time/concurrency/eventmachine.rb +7 -4
- 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 -0
- 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 +14 -11
- data/lib/slack/real_time/stores.rb +1 -0
- data/lib/slack/real_time/stores/base.rb +1 -0
- 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 +11 -0
- data/lib/slack/web/api/endpoints/admin_apps.rb +42 -0
- data/lib/slack/web/api/endpoints/admin_apps_requests.rb +33 -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/channels.rb +16 -16
- data/lib/slack/web/api/endpoints/chat.rb +10 -9
- data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +2 -1
- data/lib/slack/web/api/endpoints/conversations.rb +18 -17
- 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 +7 -6
- 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 +17 -22
- data/lib/slack/web/api/endpoints/im.rb +7 -8
- data/lib/slack/web/api/endpoints/migration.rb +2 -1
- data/lib/slack/web/api/endpoints/mpim.rb +6 -7
- data/lib/slack/web/api/endpoints/oauth.rb +3 -2
- data/lib/slack/web/api/endpoints/oauth_v2.rb +30 -0
- data/lib/slack/web/api/endpoints/pins.rb +5 -9
- data/lib/slack/web/api/endpoints/reactions.rb +9 -12
- 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 +4 -5
- 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/slack_error.rb +2 -1
- data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -0
- data/lib/slack/web/api/mixins.rb +1 -0
- data/lib/slack/web/api/mixins/channels.id.rb +1 -0
- data/lib/slack/web/api/mixins/groups.id.rb +1 -0
- data/lib/slack/web/api/mixins/ids.id.rb +4 -1
- 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/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/method.erb +1 -0
- data/lib/slack/web/api/templates/method_spec.erb +1 -0
- data/lib/slack/web/client.rb +1 -0
- data/lib/slack/web/config.rb +1 -0
- data/lib/slack/web/faraday/connection.rb +1 -0
- data/lib/slack/web/faraday/request.rb +1 -0
- data/lib/slack/web/faraday/response/raise_error.rb +7 -6
- data/lib/slack/web/pagination/cursor.rb +1 -0
- data/lib/slack_ruby_client.rb +1 -0
- data/lib/tasks/git.rake +1 -0
- data/lib/tasks/real_time.rake +12 -4
- data/lib/tasks/update.rake +1 -0
- data/lib/tasks/web.rake +17 -6
- data/screenshots/create-app.png +0 -0
- data/slack-ruby-client.gemspec +4 -1
- data/spec/integration/integration_spec.rb +16 -17
- 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 +137 -39
- 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_requests_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_apps_spec.rb +8 -0
- data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +1 -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 +1 -0
- data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +1 -0
- 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/chat_scheduledMessages_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/conversations_spec.rb +1 -0
- data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +5 -1
- data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +2 -0
- 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 -0
- 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 +6 -3
- data/spec/slack/web/api/errors/slack_error_spec.rb +4 -2
- data/spec/slack/web/api/mixins/channels_spec.rb +17 -7
- 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 +45 -18
- data/spec/slack/web/faraday/response/raise_error_spec.rb +16 -5
- 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 +59 -7
- 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,8 @@ 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
|
11
12
|
end
|
12
13
|
end
|
13
14
|
end
|
data/lib/slack/web/api/mixins.rb
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Slack
|
2
3
|
module Web
|
3
4
|
module Api
|
@@ -10,7 +11,9 @@ module Slack
|
|
10
11
|
|
11
12
|
yield.tap do |list|
|
12
13
|
list.public_send(list_method).each do |li|
|
13
|
-
|
14
|
+
if li.name == name[1..-1]
|
15
|
+
return Slack::Messages::Message.new('ok' => true, key.to_s => { 'id' => li.id })
|
16
|
+
end
|
14
17
|
end
|
15
18
|
end
|
16
19
|
|
@@ -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
|
+
|
data/lib/slack/web/client.rb
CHANGED
data/lib/slack/web/config.rb
CHANGED
@@ -1,15 +1,16 @@
|
|
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
|
+
raise Slack::Web::Api::Errors::SlackError.new(error_message, env.response)
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
data/lib/slack_ruby_client.rb
CHANGED
data/lib/tasks/git.rake
CHANGED
data/lib/tasks/real_time.rake
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# largely from https://github.com/aki017/slack-ruby-gem
|
2
3
|
require 'json-schema'
|
3
4
|
require 'erubis'
|
@@ -5,12 +6,13 @@ require 'erubis'
|
|
5
6
|
namespace :slack do
|
6
7
|
namespace :real_time do
|
7
8
|
namespace :api do
|
8
|
-
REAL_TIME_EVENTS_MARKER = '### RealTime Events'
|
9
|
+
REAL_TIME_EVENTS_MARKER = '### RealTime Events'
|
9
10
|
|
10
11
|
desc 'Update API.'
|
11
12
|
task update: [:git_update] do
|
12
13
|
event_schema = JSON.parse(File.read('lib/slack/real_time/api/schema/event.json'))
|
13
|
-
|
14
|
+
dirglob = 'lib/slack/web/api/slack-api-ref/events/**/*.json'
|
15
|
+
events = Dir.glob(dirglob).each_with_object({}) do |path, result|
|
14
16
|
name = File.basename(path, '.json')
|
15
17
|
parsed = JSON.parse(File.read(path))
|
16
18
|
JSON::Validator.validate(event_schema, parsed, insert_defaults: true)
|
@@ -19,7 +21,8 @@ namespace :slack do
|
|
19
21
|
result[name] = parsed
|
20
22
|
end
|
21
23
|
|
22
|
-
event_handler_template =
|
24
|
+
event_handler_template =
|
25
|
+
Erubis::Eruby.new(File.read('lib/slack/real_time/api/templates/event_handler.erb'))
|
23
26
|
Dir.glob('lib/slack/real_time/stores/**/*.rb').each do |store_file|
|
24
27
|
next if File.basename(store_file) == 'base.rb'
|
25
28
|
|
@@ -37,7 +40,12 @@ namespace :slack do
|
|
37
40
|
desc: event_data['desc']
|
38
41
|
)
|
39
42
|
|
40
|
-
store_file_contents.gsub!
|
43
|
+
store_file_contents.gsub!(
|
44
|
+
REAL_TIME_EVENTS_MARKER,
|
45
|
+
REAL_TIME_EVENTS_MARKER +
|
46
|
+
"\n\n" +
|
47
|
+
rendered_event_handler.rstrip
|
48
|
+
)
|
41
49
|
end
|
42
50
|
end
|
43
51
|
|
data/lib/tasks/update.rake
CHANGED
data/lib/tasks/web.rake
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# largely from https://github.com/aki017/slack-ruby-gem
|
2
3
|
require 'json-schema'
|
3
4
|
require 'erubis'
|
@@ -10,7 +11,8 @@ namespace :slack do
|
|
10
11
|
desc 'Update API.'
|
11
12
|
task update: [:git_update] do
|
12
13
|
group_schema = JSON.parse(File.read('lib/slack/web/api/schema/group.json'))
|
13
|
-
|
14
|
+
dirglob = 'lib/slack/web/api/slack-api-ref/groups/**/*.json'
|
15
|
+
groups = Dir.glob(dirglob).each_with_object({}) do |path, result|
|
14
16
|
name = File.basename(path, '.json')
|
15
17
|
parsed = JSON.parse(File.read(path))
|
16
18
|
parsed['undocumented'] = true if path =~ /undocumented/
|
@@ -34,7 +36,8 @@ namespace :slack do
|
|
34
36
|
end
|
35
37
|
|
36
38
|
method_template = Erubis::Eruby.new(File.read('lib/slack/web/api/templates/method.erb'))
|
37
|
-
method_spec_template =
|
39
|
+
method_spec_template =
|
40
|
+
Erubis::Eruby.new(File.read('lib/slack/web/api/templates/method_spec.erb'))
|
38
41
|
command_template = Erubis::Eruby.new(File.read('lib/slack/web/api/templates/command.erb'))
|
39
42
|
data.each_with_index do |(group, names), index|
|
40
43
|
printf "%2d/%2d %10s %s\n", index, data.size, group, names.keys
|
@@ -42,7 +45,8 @@ namespace :slack do
|
|
42
45
|
snaked_group = group.tr('.', '_')
|
43
46
|
rendered_method = method_template.result(group: group, names: names)
|
44
47
|
File.write "lib/slack/web/api/endpoints/#{snaked_group}.rb", rendered_method
|
45
|
-
custom_spec_exists =
|
48
|
+
custom_spec_exists =
|
49
|
+
File.exist?("spec/slack/web/api/endpoints/custom_specs/#{group}_spec.rb")
|
46
50
|
unless custom_spec_exists
|
47
51
|
rendered_method_spec = method_spec_template.result(group: group, names: names)
|
48
52
|
File.write "spec/slack/web/api/endpoints/#{snaked_group}_spec.rb", rendered_method_spec
|
@@ -58,11 +62,18 @@ namespace :slack do
|
|
58
62
|
File.write "bin/commands/#{snaked_group}.rb", rendered_command
|
59
63
|
end
|
60
64
|
|
61
|
-
endpoints_template =
|
62
|
-
|
65
|
+
endpoints_template =
|
66
|
+
Erubis::Eruby.new(File.read('lib/slack/web/api/templates/endpoints.erb'))
|
67
|
+
File.write(
|
68
|
+
'lib/slack/web/api/endpoints.rb',
|
69
|
+
endpoints_template.result(files: data.keys.map { |key| key.tr('.', '_') })
|
70
|
+
)
|
63
71
|
|
64
72
|
commands_template = Erubis::Eruby.new(File.read('lib/slack/web/api/templates/commands.erb'))
|
65
|
-
File.write
|
73
|
+
File.write(
|
74
|
+
'bin/commands.rb',
|
75
|
+
commands_template.result(files: data.keys.map { |key| key.tr('.', '_') })
|
76
|
+
)
|
66
77
|
end
|
67
78
|
end
|
68
79
|
end
|
Binary file
|
data/slack-ruby-client.gemspec
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
$LOAD_PATH.push File.expand_path('lib', __dir__)
|
2
3
|
require 'slack/version'
|
3
4
|
|
@@ -26,7 +27,9 @@ Gem::Specification.new do |s|
|
|
26
27
|
s.add_development_dependency 'json-schema'
|
27
28
|
s.add_development_dependency 'rake', '~> 10'
|
28
29
|
s.add_development_dependency 'rspec'
|
29
|
-
s.add_development_dependency 'rubocop', '0.
|
30
|
+
s.add_development_dependency 'rubocop', '~> 0.73.0'
|
31
|
+
s.add_development_dependency 'rubocop-performance', '~> 1.4.1'
|
32
|
+
s.add_development_dependency 'rubocop-rspec', '~> 1.34.0'
|
30
33
|
s.add_development_dependency 'timecop'
|
31
34
|
s.add_development_dependency 'vcr'
|
32
35
|
s.add_development_dependency 'webmock'
|
@@ -1,17 +1,22 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
|
-
RSpec.describe 'integration test', skip: (
|
4
|
+
RSpec.describe 'integration test', skip: ( # rubocop:disable RSpec/DescribeClass
|
5
|
+
(!ENV['SLACK_API_TOKEN'] || !ENV['CONCURRENCY']) && 'missing SLACK_API_TOKEN and/or CONCURRENCY'
|
6
|
+
) do
|
4
7
|
around do |ex|
|
5
8
|
WebMock.allow_net_connect!
|
6
9
|
VCR.turned_off { ex.run }
|
7
10
|
WebMock.disable_net_connect!
|
8
11
|
end
|
9
12
|
|
13
|
+
let(:client) { Slack::RealTime::Client.new(token: ENV['SLACK_API_TOKEN']) }
|
10
14
|
let(:logger) do
|
11
15
|
logger = Logger.new(STDOUT)
|
12
16
|
logger.level = Logger::INFO
|
13
17
|
logger
|
14
18
|
end
|
19
|
+
let!(:queue) { @queue = QueueWithTimeout.new }
|
15
20
|
|
16
21
|
before do
|
17
22
|
Thread.abort_on_exception = true
|
@@ -19,19 +24,12 @@ RSpec.describe 'integration test', skip: (!ENV['SLACK_API_TOKEN'] || !ENV['CONCU
|
|
19
24
|
Slack.configure do |slack|
|
20
25
|
slack.logger = logger
|
21
26
|
end
|
22
|
-
end
|
23
|
-
|
24
|
-
after do
|
25
|
-
Slack.config.reset
|
26
|
-
end
|
27
|
-
|
28
|
-
let(:client) { Slack::RealTime::Client.new(token: ENV['SLACK_API_TOKEN']) }
|
29
27
|
|
30
|
-
let!(:queue) { @queue = QueueWithTimeout.new }
|
31
|
-
|
32
|
-
before do
|
33
28
|
client.on :hello do
|
34
|
-
logger.info
|
29
|
+
logger.info(
|
30
|
+
"Successfully connected, welcome '#{client.self.name}' to " \
|
31
|
+
"the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
|
32
|
+
)
|
35
33
|
end
|
36
34
|
|
37
35
|
client.on :message do |event|
|
@@ -45,6 +43,12 @@ RSpec.describe 'integration test', skip: (!ENV['SLACK_API_TOKEN'] || !ENV['CONCU
|
|
45
43
|
end
|
46
44
|
end
|
47
45
|
|
46
|
+
after do
|
47
|
+
Slack.config.reset
|
48
|
+
wait_for_server # wait for :closed to be pushed on queue
|
49
|
+
@server.join if @server.is_a?(::Thread)
|
50
|
+
end
|
51
|
+
|
48
52
|
def start_server
|
49
53
|
dt = rand(10..20)
|
50
54
|
logger.debug "#start_server, waiting #{dt} second(s)"
|
@@ -73,11 +77,6 @@ RSpec.describe 'integration test', skip: (!ENV['SLACK_API_TOKEN'] || !ENV['CONCU
|
|
73
77
|
@queue = nil
|
74
78
|
end
|
75
79
|
|
76
|
-
after do
|
77
|
-
wait_for_server # wait for :closed to be pushed on queue
|
78
|
-
@server.join if @server.is_a?(::Thread)
|
79
|
-
end
|
80
|
-
|
81
80
|
context 'client connected' do
|
82
81
|
let(:channel) { "@#{client.self.id}" }
|
83
82
|
let(:message) { SecureRandom.hex }
|
data/spec/slack/config_spec.rb
CHANGED
@@ -1,10 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
require 'spec_helper'
|
2
3
|
|
3
4
|
RSpec.describe Slack::Events::Config do
|
4
5
|
before do
|
5
6
|
ENV['SLACK_SIGNING_SECRET'] = 'secret'
|
6
|
-
|
7
|
+
described_class.reset
|
7
8
|
end
|
9
|
+
|
10
|
+
after do
|
11
|
+
ENV.delete 'SLACK_SIGNING_SECRET'
|
12
|
+
end
|
13
|
+
|
8
14
|
it 'defaults signing secret to ENV[SLACK_SIGNING_SECRET]' do
|
9
15
|
expect(Slack::Events.config.signing_secret).to eq 'secret'
|
10
16
|
end
|
@@ -18,12 +24,10 @@ RSpec.describe Slack::Events::Config do
|
|
18
24
|
config.signature_expires_in = 45
|
19
25
|
end
|
20
26
|
end
|
27
|
+
|
21
28
|
it 'uses the configured values' do
|
22
29
|
expect(Slack::Events.config.signing_secret).to eq 'custom'
|
23
30
|
expect(Slack::Events.config.signature_expires_in).to eq 45
|
24
31
|
end
|
25
32
|
end
|
26
|
-
after do
|
27
|
-
ENV.delete 'SLACK_SIGNING_SECRET'
|
28
|
-
end
|
29
33
|
end
|