slack-ruby-client 0.14.4 → 0.14.5

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.
Files changed (255) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop.yml +19 -11
  3. data/.rubocop_todo.yml +66 -47
  4. data/CHANGELOG.md +8 -0
  5. data/Dangerfile +1 -0
  6. data/Gemfile +1 -0
  7. data/README.md +16 -9
  8. data/Rakefile +1 -0
  9. data/bin/commands.rb +6 -0
  10. data/bin/commands/admin_apps.rb +27 -0
  11. data/bin/commands/admin_apps_requests.rb +16 -0
  12. data/bin/commands/admin_users_session.rb +3 -2
  13. data/bin/commands/api.rb +3 -2
  14. data/bin/commands/apps.rb +3 -2
  15. data/bin/commands/apps_permissions.rb +5 -4
  16. data/bin/commands/apps_permissions_resources.rb +3 -2
  17. data/bin/commands/apps_permissions_scopes.rb +3 -2
  18. data/bin/commands/apps_permissions_users.rb +5 -4
  19. data/bin/commands/auth.rb +5 -4
  20. data/bin/commands/bots.rb +3 -2
  21. data/bin/commands/channels.rb +31 -30
  22. data/bin/commands/chat.rb +19 -18
  23. data/bin/commands/chat_scheduledMessages.rb +3 -2
  24. data/bin/commands/conversations.rb +35 -34
  25. data/bin/commands/dialog.rb +3 -2
  26. data/bin/commands/dnd.rb +9 -8
  27. data/bin/commands/emoji.rb +3 -2
  28. data/bin/commands/files.rb +13 -12
  29. data/bin/commands/files_comments.rb +3 -2
  30. data/bin/commands/files_remote.rb +78 -0
  31. data/bin/commands/groups.rb +33 -32
  32. data/bin/commands/im.rb +13 -12
  33. data/bin/commands/migration.rb +3 -2
  34. data/bin/commands/mpim.rb +11 -10
  35. data/bin/commands/oauth.rb +5 -4
  36. data/bin/commands/oauth_v2.rb +17 -0
  37. data/bin/commands/pins.rb +7 -8
  38. data/bin/commands/reactions.rb +10 -11
  39. data/bin/commands/reminders.rb +11 -10
  40. data/bin/commands/rtm.rb +5 -4
  41. data/bin/commands/search.rb +7 -6
  42. data/bin/commands/stars.rb +7 -6
  43. data/bin/commands/team.rb +9 -8
  44. data/bin/commands/team_profile.rb +3 -2
  45. data/bin/commands/usergroups.rb +11 -10
  46. data/bin/commands/usergroups_users.rb +5 -4
  47. data/bin/commands/users.rb +21 -20
  48. data/bin/commands/users_admin.rb +1 -0
  49. data/bin/commands/users_prefs.rb +1 -0
  50. data/bin/commands/users_profile.rb +5 -4
  51. data/bin/commands/views.rb +48 -0
  52. data/bin/slack +1 -2
  53. data/examples/hi_real_time/Gemfile +1 -0
  54. data/examples/hi_real_time/hi.rb +7 -3
  55. data/examples/hi_real_time_and_web/Gemfile +1 -0
  56. data/examples/hi_real_time_and_web/hi.rb +7 -3
  57. data/examples/hi_real_time_async_async/Gemfile +1 -0
  58. data/examples/hi_real_time_async_async/hi.rb +6 -2
  59. data/examples/hi_real_time_async_celluloid/Gemfile +1 -0
  60. data/examples/hi_real_time_async_celluloid/hi.rb +7 -3
  61. data/examples/hi_real_time_async_eventmachine/Gemfile +1 -0
  62. data/examples/hi_real_time_async_eventmachine/hi.rb +7 -3
  63. data/examples/hi_web/Gemfile +1 -0
  64. data/examples/hi_web/hi.rb +1 -0
  65. data/examples/new_ticket/Gemfile +1 -0
  66. data/examples/new_ticket/new_ticket.rb +1 -0
  67. data/lib/slack-ruby-client.rb +3 -2
  68. data/lib/slack.rb +1 -0
  69. data/lib/slack/config.rb +1 -0
  70. data/lib/slack/events/config.rb +1 -0
  71. data/lib/slack/events/request.rb +3 -1
  72. data/lib/slack/logger.rb +6 -5
  73. data/lib/slack/messages/formatting.rb +1 -0
  74. data/lib/slack/messages/message.rb +1 -0
  75. data/lib/slack/real_time/api/message.rb +3 -1
  76. data/lib/slack/real_time/api/message_id.rb +1 -0
  77. data/lib/slack/real_time/api/ping.rb +5 -2
  78. data/lib/slack/real_time/api/typing.rb +3 -1
  79. data/lib/slack/real_time/client.rb +19 -12
  80. data/lib/slack/real_time/concurrency.rb +1 -0
  81. data/lib/slack/real_time/concurrency/async.rb +15 -7
  82. data/lib/slack/real_time/concurrency/celluloid.rb +9 -3
  83. data/lib/slack/real_time/concurrency/eventmachine.rb +7 -4
  84. data/lib/slack/real_time/config.rb +6 -1
  85. data/lib/slack/real_time/models.rb +1 -0
  86. data/lib/slack/real_time/models/base.rb +1 -0
  87. data/lib/slack/real_time/models/bot.rb +1 -0
  88. data/lib/slack/real_time/models/channel.rb +1 -0
  89. data/lib/slack/real_time/models/group.rb +1 -0
  90. data/lib/slack/real_time/models/im.rb +1 -0
  91. data/lib/slack/real_time/models/team.rb +1 -0
  92. data/lib/slack/real_time/models/user.rb +1 -0
  93. data/lib/slack/real_time/socket.rb +14 -11
  94. data/lib/slack/real_time/stores.rb +1 -0
  95. data/lib/slack/real_time/stores/base.rb +1 -0
  96. data/lib/slack/real_time/stores/starter.rb +1 -0
  97. data/lib/slack/real_time/stores/store.rb +16 -25
  98. data/lib/slack/version.rb +2 -1
  99. data/lib/slack/web/api/endpoints.rb +11 -0
  100. data/lib/slack/web/api/endpoints/admin_apps.rb +42 -0
  101. data/lib/slack/web/api/endpoints/admin_apps_requests.rb +33 -0
  102. data/lib/slack/web/api/endpoints/admin_users_session.rb +2 -1
  103. data/lib/slack/web/api/endpoints/api.rb +2 -1
  104. data/lib/slack/web/api/endpoints/apps.rb +2 -1
  105. data/lib/slack/web/api/endpoints/apps_permissions.rb +3 -2
  106. data/lib/slack/web/api/endpoints/apps_permissions_resources.rb +2 -1
  107. data/lib/slack/web/api/endpoints/apps_permissions_scopes.rb +2 -1
  108. data/lib/slack/web/api/endpoints/apps_permissions_users.rb +3 -2
  109. data/lib/slack/web/api/endpoints/auth.rb +3 -2
  110. data/lib/slack/web/api/endpoints/bots.rb +2 -1
  111. data/lib/slack/web/api/endpoints/channels.rb +16 -16
  112. data/lib/slack/web/api/endpoints/chat.rb +10 -9
  113. data/lib/slack/web/api/endpoints/chat_scheduledMessages.rb +2 -1
  114. data/lib/slack/web/api/endpoints/conversations.rb +18 -17
  115. data/lib/slack/web/api/endpoints/dialog.rb +2 -1
  116. data/lib/slack/web/api/endpoints/dnd.rb +5 -4
  117. data/lib/slack/web/api/endpoints/emoji.rb +2 -1
  118. data/lib/slack/web/api/endpoints/files.rb +7 -6
  119. data/lib/slack/web/api/endpoints/files_comments.rb +2 -1
  120. data/lib/slack/web/api/endpoints/files_remote.rb +127 -0
  121. data/lib/slack/web/api/endpoints/groups.rb +17 -22
  122. data/lib/slack/web/api/endpoints/im.rb +7 -8
  123. data/lib/slack/web/api/endpoints/migration.rb +2 -1
  124. data/lib/slack/web/api/endpoints/mpim.rb +6 -7
  125. data/lib/slack/web/api/endpoints/oauth.rb +3 -2
  126. data/lib/slack/web/api/endpoints/oauth_v2.rb +30 -0
  127. data/lib/slack/web/api/endpoints/pins.rb +5 -9
  128. data/lib/slack/web/api/endpoints/reactions.rb +9 -12
  129. data/lib/slack/web/api/endpoints/reminders.rb +6 -5
  130. data/lib/slack/web/api/endpoints/rtm.rb +3 -2
  131. data/lib/slack/web/api/endpoints/search.rb +4 -3
  132. data/lib/slack/web/api/endpoints/stars.rb +4 -5
  133. data/lib/slack/web/api/endpoints/team.rb +5 -5
  134. data/lib/slack/web/api/endpoints/team_profile.rb +2 -1
  135. data/lib/slack/web/api/endpoints/usergroups.rb +6 -5
  136. data/lib/slack/web/api/endpoints/usergroups_users.rb +3 -2
  137. data/lib/slack/web/api/endpoints/users.rb +11 -16
  138. data/lib/slack/web/api/endpoints/users_admin.rb +1 -0
  139. data/lib/slack/web/api/endpoints/users_prefs.rb +1 -0
  140. data/lib/slack/web/api/endpoints/users_profile.rb +3 -2
  141. data/lib/slack/web/api/endpoints/views.rb +97 -0
  142. data/lib/slack/web/api/error.rb +1 -0
  143. data/lib/slack/web/api/errors/slack_error.rb +2 -1
  144. data/lib/slack/web/api/errors/too_many_requests_error.rb +1 -0
  145. data/lib/slack/web/api/mixins.rb +1 -0
  146. data/lib/slack/web/api/mixins/channels.id.rb +1 -0
  147. data/lib/slack/web/api/mixins/groups.id.rb +1 -0
  148. data/lib/slack/web/api/mixins/ids.id.rb +4 -1
  149. data/lib/slack/web/api/mixins/users.id.rb +1 -0
  150. data/lib/slack/web/api/mixins/users.search.rb +1 -0
  151. data/lib/slack/web/api/patches/views.1.view-json.patch +40 -0
  152. data/lib/slack/web/api/patches/views.1.views-published.patch +16 -0
  153. data/lib/slack/web/api/templates/command.erb +1 -0
  154. data/lib/slack/web/api/templates/commands.erb +1 -0
  155. data/lib/slack/web/api/templates/endpoints.erb +1 -0
  156. data/lib/slack/web/api/templates/method.erb +1 -0
  157. data/lib/slack/web/api/templates/method_spec.erb +1 -0
  158. data/lib/slack/web/client.rb +1 -0
  159. data/lib/slack/web/config.rb +1 -0
  160. data/lib/slack/web/faraday/connection.rb +1 -0
  161. data/lib/slack/web/faraday/request.rb +1 -0
  162. data/lib/slack/web/faraday/response/raise_error.rb +7 -6
  163. data/lib/slack/web/pagination/cursor.rb +1 -0
  164. data/lib/slack_ruby_client.rb +1 -0
  165. data/lib/tasks/git.rake +1 -0
  166. data/lib/tasks/real_time.rake +12 -4
  167. data/lib/tasks/update.rake +1 -0
  168. data/lib/tasks/web.rake +17 -6
  169. data/screenshots/create-app.png +0 -0
  170. data/slack-ruby-client.gemspec +4 -1
  171. data/spec/integration/integration_spec.rb +16 -17
  172. data/spec/slack/config_spec.rb +2 -0
  173. data/spec/slack/events/config_spec.rb +8 -4
  174. data/spec/slack/events/request_spec.rb +67 -37
  175. data/spec/slack/messages/formatting_spec.rb +25 -13
  176. data/spec/slack/real_time/api/message_spec.rb +6 -1
  177. data/spec/slack/real_time/api/ping_spec.rb +2 -0
  178. data/spec/slack/real_time/api/typing_spec.rb +5 -1
  179. data/spec/slack/real_time/client_spec.rb +137 -39
  180. data/spec/slack/real_time/concurrency/celluloid_spec.rb +11 -6
  181. data/spec/slack/real_time/concurrency/eventmachine_spec.rb +9 -1
  182. data/spec/slack/real_time/concurrency/it_behaves_like_a_realtime_socket.rb +2 -0
  183. data/spec/slack/real_time/event_handlers/bot_spec.rb +2 -1
  184. data/spec/slack/real_time/event_handlers/channel_spec.rb +9 -6
  185. data/spec/slack/real_time/event_handlers/event_handlers_spec.rb +2 -1
  186. data/spec/slack/real_time/event_handlers/group_spec.rb +5 -4
  187. data/spec/slack/real_time/event_handlers/im_spec.rb +4 -3
  188. data/spec/slack/real_time/event_handlers/team_spec.rb +3 -1
  189. data/spec/slack/real_time/event_handlers/user_spec.rb +1 -0
  190. data/spec/slack/real_time/rtm_connect_spec.rb +1 -0
  191. data/spec/slack/real_time/rtm_start_spec.rb +1 -0
  192. data/spec/slack/real_time/store_spec.rb +2 -1
  193. data/spec/slack/slack_spec.rb +37 -5
  194. data/spec/slack/version_spec.rb +2 -1
  195. data/spec/slack/web/api/endpoints/admin_apps_requests_spec.rb +8 -0
  196. data/spec/slack/web/api/endpoints/admin_apps_spec.rb +8 -0
  197. data/spec/slack/web/api/endpoints/admin_users_session_spec.rb +1 -0
  198. data/spec/slack/web/api/endpoints/api_spec.rb +1 -0
  199. data/spec/slack/web/api/endpoints/apps_permissions_resources_spec.rb +1 -0
  200. data/spec/slack/web/api/endpoints/apps_permissions_scopes_spec.rb +1 -0
  201. data/spec/slack/web/api/endpoints/apps_permissions_spec.rb +1 -0
  202. data/spec/slack/web/api/endpoints/apps_permissions_users_spec.rb +1 -0
  203. data/spec/slack/web/api/endpoints/apps_spec.rb +1 -0
  204. data/spec/slack/web/api/endpoints/bots_spec.rb +1 -0
  205. data/spec/slack/web/api/endpoints/chat_scheduledMessages_spec.rb +1 -0
  206. data/spec/slack/web/api/endpoints/conversations_spec.rb +1 -0
  207. data/spec/slack/web/api/endpoints/custom_specs/auth_spec.rb +5 -1
  208. data/spec/slack/web/api/endpoints/custom_specs/channels_spec.rb +2 -0
  209. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +80 -25
  210. data/spec/slack/web/api/endpoints/custom_specs/dialog_spec.rb +12 -4
  211. data/spec/slack/web/api/endpoints/custom_specs/groups_spec.rb +2 -0
  212. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +6 -1
  213. data/spec/slack/web/api/endpoints/custom_specs/views_spec.rb +95 -0
  214. data/spec/slack/web/api/endpoints/dnd_spec.rb +1 -0
  215. data/spec/slack/web/api/endpoints/emoji_spec.rb +1 -0
  216. data/spec/slack/web/api/endpoints/files_comments_spec.rb +1 -0
  217. data/spec/slack/web/api/endpoints/files_remote_spec.rb +24 -0
  218. data/spec/slack/web/api/endpoints/files_spec.rb +1 -0
  219. data/spec/slack/web/api/endpoints/im_spec.rb +1 -0
  220. data/spec/slack/web/api/endpoints/migration_spec.rb +1 -0
  221. data/spec/slack/web/api/endpoints/mpim_spec.rb +1 -0
  222. data/spec/slack/web/api/endpoints/oauth_spec.rb +1 -0
  223. data/spec/slack/web/api/endpoints/oauth_v2_spec.rb +13 -0
  224. data/spec/slack/web/api/endpoints/pins_spec.rb +5 -1
  225. data/spec/slack/web/api/endpoints/reactions_spec.rb +8 -1
  226. data/spec/slack/web/api/endpoints/reminders_spec.rb +1 -0
  227. data/spec/slack/web/api/endpoints/rtm_spec.rb +1 -0
  228. data/spec/slack/web/api/endpoints/search_spec.rb +1 -0
  229. data/spec/slack/web/api/endpoints/stars_spec.rb +1 -0
  230. data/spec/slack/web/api/endpoints/team_profile_spec.rb +1 -0
  231. data/spec/slack/web/api/endpoints/team_spec.rb +1 -0
  232. data/spec/slack/web/api/endpoints/usergroups_spec.rb +1 -0
  233. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +1 -0
  234. data/spec/slack/web/api/endpoints/users_admin_spec.rb +1 -0
  235. data/spec/slack/web/api/endpoints/users_prefs_spec.rb +1 -0
  236. data/spec/slack/web/api/endpoints/users_profile_spec.rb +1 -0
  237. data/spec/slack/web/api/endpoints/views_spec.rb +29 -0
  238. data/spec/slack/web/api/error_spec.rb +4 -2
  239. data/spec/slack/web/api/errors/service_unavailable_spec.rb +6 -3
  240. data/spec/slack/web/api/errors/slack_error_spec.rb +4 -2
  241. data/spec/slack/web/api/mixins/channels_spec.rb +17 -7
  242. data/spec/slack/web/api/mixins/groups_spec.rb +17 -7
  243. data/spec/slack/web/api/mixins/users_spec.rb +17 -8
  244. data/spec/slack/web/api/pagination/cursor_spec.rb +40 -10
  245. data/spec/slack/web/client_spec.rb +45 -18
  246. data/spec/slack/web/faraday/response/raise_error_spec.rb +16 -5
  247. data/spec/spec_helper.rb +2 -1
  248. data/spec/support/queue_with_timeout.rb +1 -0
  249. data/spec/support/real_time/concurrency/mock.rb +1 -0
  250. data/spec/support/real_time/connected_client.rb +9 -3
  251. data/spec/support/real_time/event.rb +1 -0
  252. data/spec/support/token.rb +1 -0
  253. data/spec/support/vcr.rb +1 -0
  254. metadata +59 -7
  255. 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
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Web
3
4
  module Api
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'mixins/channels.id'
2
3
  require_relative 'mixins/users.id'
3
4
  require_relative 'mixins/users.search'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'ids.id'
2
3
 
3
4
  module Slack
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'ids.id'
2
3
 
3
4
  module Slack
@@ -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
- return Slack::Messages::Message.new('ok' => true, key.to_s => { 'id' => li.id }) if li.name == name[1..-1]
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
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require_relative 'ids.id'
2
3
 
3
4
  module Slack
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  if defined?(Picky)
2
3
  module Slack
3
4
  module Web
@@ -0,0 +1,40 @@
1
+ diff --git a/lib/slack/web/api/endpoints/views.rb b/lib/slack/web/api/endpoints/views.rb
2
+ index 3d7ac8e..10de15c 100644
3
+ --- a/lib/slack/web/api/endpoints/views.rb
4
+ +++ b/lib/slack/web/api/endpoints/views.rb
5
+ @@ -18,6 +18,11 @@ module Slack
6
+ def views_open(options = {})
7
+ throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
8
+ throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
9
+ + if options.key?(:view)
10
+ + view = options[:view]
11
+ + view = JSON.dump(view) unless view.is_a?(String)
12
+ + options = options.merge(view: view)
13
+ + end
14
+ post('views.open', options)
15
+ end
16
+
17
+ @@ -33,6 +38,11 @@ module Slack
18
+ def views_push(options = {})
19
+ throw ArgumentError.new('Required arguments :trigger_id missing') if options[:trigger_id].nil?
20
+ throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
21
+ + if options.key?(:view)
22
+ + view = options[:view]
23
+ + view = JSON.dump(view) unless view.is_a?(String)
24
+ + options = options.merge(view: view)
25
+ + end
26
+ post('views.push', options)
27
+ end
28
+
29
+ @@ -51,6 +61,11 @@ module Slack
30
+ # @see https://github.com/slack-ruby/slack-api-ref/blob/master/methods/views/views.update.json
31
+ def views_update(options = {})
32
+ throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
33
+ + if options.key?(:view)
34
+ + view = options[:view]
35
+ + view = JSON.dump(view) unless view.is_a?(String)
36
+ + options = options.merge(view: view)
37
+ + end
38
+ post('views.update', options)
39
+ end
40
+ end
@@ -0,0 +1,16 @@
1
+ diff --git a/lib/slack/web/api/endpoints/views.rb b/lib/slack/web/api/endpoints/views.rb
2
+ index 31626b9..8182a9c 100644
3
+ --- a/lib/slack/web/api/endpoints/views.rb
4
+ +++ b/lib/slack/web/api/endpoints/views.rb
5
+ @@ -40,6 +40,11 @@ module Slack
6
+ def views_publish(options = {})
7
+ throw ArgumentError.new('Required arguments :user_id missing') if options[:user_id].nil?
8
+ throw ArgumentError.new('Required arguments :view missing') if options[:view].nil?
9
+ + if options.key?(:view)
10
+ + view = options[:view]
11
+ + view = JSON.dump(view) unless view.is_a?(String)
12
+ + options = options.merge(view: view)
13
+ + end
14
+ post('views.publish', options)
15
+ end
16
+
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  <% desc = group['desc'] || "#{group['name'].gsub(".", "_").camelize} methods." %>
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  <% files.sort.each do |f| %>
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  <% files.sort.each do |f| %>
@@ -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
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  # This file was auto-generated by lib/tasks/web.rake
2
3
 
3
4
  require 'spec_helper'
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Web
3
4
  class Client
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Web
3
4
  module Config
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Web
3
4
  module Faraday
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Web
3
4
  module Faraday
@@ -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
- raise Slack::Web::Api::Errors::TooManyRequestsError, env.response
9
- elsif (body = env.body) && !body['ok']
10
- error_message = body['error'] || body['errors'].map { |message| message['error'] }.join(',')
11
- raise Slack::Web::Api::Errors::SlackError.new(error_message, env.response)
12
- end
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
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  module Slack
2
3
  module Web
3
4
  module Api
@@ -1 +1,2 @@
1
+ # frozen_string_literal: true
1
2
  require 'slack-ruby-client'
data/lib/tasks/git.rake CHANGED
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  namespace :slack do
2
3
  # update slack-api-ref from https://github.com/slack-ruby/slack-api-ref
3
4
  task :git_update do
@@ -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'.freeze
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
- events = Dir.glob('lib/slack/web/api/slack-api-ref/events/**/*.json').each_with_object({}) do |path, result|
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 = Erubis::Eruby.new(File.read('lib/slack/real_time/api/templates/event_handler.erb'))
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! REAL_TIME_EVENTS_MARKER, REAL_TIME_EVENTS_MARKER + "\n\n" + rendered_event_handler.rstrip
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
 
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  namespace :slack do
2
3
  namespace :api do
3
4
  desc 'Auto-generate automatic portions of the Slack API client.'
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
- groups = Dir.glob('lib/slack/web/api/slack-api-ref/groups/**/*.json').each_with_object({}) do |path, result|
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 = Erubis::Eruby.new(File.read('lib/slack/web/api/templates/method_spec.erb'))
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 = File.exist?("spec/slack/web/api/endpoints/custom_specs/#{group}_spec.rb")
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 = Erubis::Eruby.new(File.read('lib/slack/web/api/templates/endpoints.erb'))
62
- File.write 'lib/slack/web/api/endpoints.rb', endpoints_template.result(files: data.keys.map { |key| key.tr('.', '_') })
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 'bin/commands.rb', commands_template.result(files: data.keys.map { |key| key.tr('.', '_') })
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
@@ -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.61.1'
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: (!ENV['SLACK_API_TOKEN'] || !ENV['CONCURRENCY']) && 'missing SLACK_API_TOKEN and/or CONCURRENCY' do
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 "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
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 }
@@ -1,3 +1,4 @@
1
+ # frozen_string_literal: true
1
2
  require 'spec_helper'
2
3
 
3
4
  describe Slack::Config do
@@ -7,6 +8,7 @@ describe Slack::Config do
7
8
  config.token = 'a token'
8
9
  end
9
10
  end
11
+
10
12
  it 'sets token' do
11
13
  expect(Slack.config.token).to eq 'a token'
12
14
  end
@@ -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
- Slack::Events::Config.reset
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