slack-ruby-client 0.5.4 → 0.6.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.
Files changed (189) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +17 -14
  3. data/CHANGELOG.md +7 -0
  4. data/CONTRIBUTING.md +2 -2
  5. data/Gemfile +1 -0
  6. data/README.md +32 -18
  7. data/Rakefile +4 -1
  8. data/UPGRADING.md +41 -3
  9. data/bin/commands.rb +1 -1
  10. data/bin/commands/api.rb +1 -1
  11. data/bin/commands/auth.rb +1 -1
  12. data/bin/commands/channels.rb +3 -3
  13. data/bin/commands/chat.rb +1 -1
  14. data/bin/commands/dnd.rb +1 -1
  15. data/bin/commands/emoji.rb +1 -1
  16. data/bin/commands/files.rb +2 -1
  17. data/bin/commands/groups.rb +1 -1
  18. data/bin/commands/im.rb +1 -1
  19. data/bin/commands/mpim.rb +1 -1
  20. data/bin/commands/oauth.rb +1 -1
  21. data/bin/commands/pins.rb +1 -1
  22. data/bin/commands/reactions.rb +1 -1
  23. data/bin/commands/rtm.rb +1 -1
  24. data/bin/commands/search.rb +1 -1
  25. data/bin/commands/stars.rb +1 -1
  26. data/bin/commands/team.rb +1 -1
  27. data/bin/commands/usergroups.rb +1 -1
  28. data/bin/commands/users.rb +10 -1
  29. data/examples/hi_real_time/hi.rb +5 -5
  30. data/examples/hi_real_time_and_web/hi.rb +4 -4
  31. data/examples/hi_real_time_async/hi.rb +5 -5
  32. data/lib/slack-ruby-client.rb +10 -0
  33. data/lib/slack/messages/message.rb +9 -0
  34. data/lib/slack/real_time/api/schema/event.json +22 -0
  35. data/lib/slack/real_time/api/templates/event_handler.erb +18 -0
  36. data/lib/slack/real_time/api/templates/event_handlers.erb +5 -0
  37. data/lib/slack/real_time/client.rb +31 -9
  38. data/lib/slack/real_time/config.rb +3 -1
  39. data/lib/slack/real_time/event_handlers.rb +66 -0
  40. data/lib/slack/real_time/event_handlers/accounts_changed.rb +18 -0
  41. data/lib/slack/real_time/event_handlers/bot_added.rb +16 -0
  42. data/lib/slack/real_time/event_handlers/bot_changed.rb +17 -0
  43. data/lib/slack/real_time/event_handlers/channel_archive.rb +17 -0
  44. data/lib/slack/real_time/event_handlers/channel_created.rb +17 -0
  45. data/lib/slack/real_time/event_handlers/channel_deleted.rb +16 -0
  46. data/lib/slack/real_time/event_handlers/channel_history_changed.rb +18 -0
  47. data/lib/slack/real_time/event_handlers/channel_joined.rb +22 -0
  48. data/lib/slack/real_time/event_handlers/channel_left.rb +17 -0
  49. data/lib/slack/real_time/event_handlers/channel_marked.rb +18 -0
  50. data/lib/slack/real_time/event_handlers/channel_rename.rb +17 -0
  51. data/lib/slack/real_time/event_handlers/channel_unarchive.rb +17 -0
  52. data/lib/slack/real_time/event_handlers/commands_changed.rb +18 -0
  53. data/lib/slack/real_time/event_handlers/dnd_updated.rb +18 -0
  54. data/lib/slack/real_time/event_handlers/dnd_updated_user.rb +18 -0
  55. data/lib/slack/real_time/event_handlers/email_domain_changed.rb +16 -0
  56. data/lib/slack/real_time/event_handlers/emoji_changed.rb +18 -0
  57. data/lib/slack/real_time/event_handlers/file_change.rb +18 -0
  58. data/lib/slack/real_time/event_handlers/file_comment_added.rb +18 -0
  59. data/lib/slack/real_time/event_handlers/file_comment_deleted.rb +18 -0
  60. data/lib/slack/real_time/event_handlers/file_comment_edited.rb +18 -0
  61. data/lib/slack/real_time/event_handlers/file_created.rb +18 -0
  62. data/lib/slack/real_time/event_handlers/file_deleted.rb +18 -0
  63. data/lib/slack/real_time/event_handlers/file_private.rb +18 -0
  64. data/lib/slack/real_time/event_handlers/file_public.rb +18 -0
  65. data/lib/slack/real_time/event_handlers/file_shared.rb +18 -0
  66. data/lib/slack/real_time/event_handlers/file_unshared.rb +18 -0
  67. data/lib/slack/real_time/event_handlers/group_archive.rb +17 -0
  68. data/lib/slack/real_time/event_handlers/group_close.rb +16 -0
  69. data/lib/slack/real_time/event_handlers/group_history_changed.rb +18 -0
  70. data/lib/slack/real_time/event_handlers/group_joined.rb +16 -0
  71. data/lib/slack/real_time/event_handlers/group_left.rb +17 -0
  72. data/lib/slack/real_time/event_handlers/group_marked.rb +18 -0
  73. data/lib/slack/real_time/event_handlers/group_open.rb +16 -0
  74. data/lib/slack/real_time/event_handlers/group_rename.rb +17 -0
  75. data/lib/slack/real_time/event_handlers/group_unarchive.rb +17 -0
  76. data/lib/slack/real_time/event_handlers/im_close.rb +16 -0
  77. data/lib/slack/real_time/event_handlers/im_created.rb +16 -0
  78. data/lib/slack/real_time/event_handlers/im_history_changed.rb +18 -0
  79. data/lib/slack/real_time/event_handlers/im_marked.rb +18 -0
  80. data/lib/slack/real_time/event_handlers/im_open.rb +16 -0
  81. data/lib/slack/real_time/event_handlers/manual_presence_change.rb +16 -0
  82. data/lib/slack/real_time/event_handlers/pin_added.rb +18 -0
  83. data/lib/slack/real_time/event_handlers/pin_removed.rb +18 -0
  84. data/lib/slack/real_time/event_handlers/pref_change.rb +16 -0
  85. data/lib/slack/real_time/event_handlers/presence_change.rb +17 -0
  86. data/lib/slack/real_time/event_handlers/reaction_added.rb +18 -0
  87. data/lib/slack/real_time/event_handlers/reaction_removed.rb +18 -0
  88. data/lib/slack/real_time/event_handlers/reconnect_url.rb +18 -0
  89. data/lib/slack/real_time/event_handlers/star_added.rb +18 -0
  90. data/lib/slack/real_time/event_handlers/star_removed.rb +18 -0
  91. data/lib/slack/real_time/event_handlers/subteam_created.rb +18 -0
  92. data/lib/slack/real_time/event_handlers/subteam_self_added.rb +18 -0
  93. data/lib/slack/real_time/event_handlers/subteam_self_removed.rb +18 -0
  94. data/lib/slack/real_time/event_handlers/subteam_updated.rb +18 -0
  95. data/lib/slack/real_time/event_handlers/team_domain_change.rb +17 -0
  96. data/lib/slack/real_time/event_handlers/team_join.rb +16 -0
  97. data/lib/slack/real_time/event_handlers/team_migration_started.rb +18 -0
  98. data/lib/slack/real_time/event_handlers/team_plan_change.rb +16 -0
  99. data/lib/slack/real_time/event_handlers/team_pref_change.rb +16 -0
  100. data/lib/slack/real_time/event_handlers/team_profile_change.rb +18 -0
  101. data/lib/slack/real_time/event_handlers/team_profile_delete.rb +18 -0
  102. data/lib/slack/real_time/event_handlers/team_profile_reorder.rb +18 -0
  103. data/lib/slack/real_time/event_handlers/team_rename.rb +16 -0
  104. data/lib/slack/real_time/event_handlers/user_change.rb +16 -0
  105. data/lib/slack/real_time/event_handlers/user_typing.rb +18 -0
  106. data/lib/slack/real_time/models.rb +7 -0
  107. data/lib/slack/real_time/models/base.rb +11 -0
  108. data/lib/slack/real_time/models/bot.rb +8 -0
  109. data/lib/slack/real_time/models/channel.rb +8 -0
  110. data/lib/slack/real_time/models/group.rb +8 -0
  111. data/lib/slack/real_time/models/im.rb +8 -0
  112. data/lib/slack/real_time/models/team.rb +8 -0
  113. data/lib/slack/real_time/models/user.rb +8 -0
  114. data/lib/slack/real_time/store.rb +47 -0
  115. data/lib/slack/version.rb +1 -1
  116. data/lib/slack/web/api/endpoints.rb +1 -1
  117. data/lib/slack/web/api/endpoints/api.rb +1 -1
  118. data/lib/slack/web/api/endpoints/auth.rb +1 -1
  119. data/lib/slack/web/api/endpoints/channels.rb +2 -4
  120. data/lib/slack/web/api/endpoints/chat.rb +1 -1
  121. data/lib/slack/web/api/endpoints/dnd.rb +1 -1
  122. data/lib/slack/web/api/endpoints/emoji.rb +1 -1
  123. data/lib/slack/web/api/endpoints/files.rb +4 -1
  124. data/lib/slack/web/api/endpoints/groups.rb +1 -1
  125. data/lib/slack/web/api/endpoints/im.rb +1 -1
  126. data/lib/slack/web/api/endpoints/mpim.rb +1 -1
  127. data/lib/slack/web/api/endpoints/oauth.rb +1 -1
  128. data/lib/slack/web/api/endpoints/pins.rb +1 -1
  129. data/lib/slack/web/api/endpoints/reactions.rb +1 -1
  130. data/lib/slack/web/api/endpoints/rtm.rb +1 -1
  131. data/lib/slack/web/api/endpoints/search.rb +1 -1
  132. data/lib/slack/web/api/endpoints/stars.rb +1 -1
  133. data/lib/slack/web/api/endpoints/team.rb +1 -1
  134. data/lib/slack/web/api/endpoints/usergroups.rb +1 -1
  135. data/lib/slack/web/api/endpoints/users.rb +1 -1
  136. data/lib/slack/web/api/mixins.rb +1 -0
  137. data/lib/slack/web/api/mixins/channels.id.rb +2 -2
  138. data/lib/slack/web/api/mixins/groups.id.rb +2 -2
  139. data/lib/slack/web/api/mixins/users.id.rb +2 -2
  140. data/lib/slack/web/api/mixins/users.search.json +19 -0
  141. data/lib/slack/web/api/mixins/users.search.rb +43 -0
  142. data/lib/slack/web/api/templates/command.erb +1 -1
  143. data/lib/slack/web/api/templates/commands.erb +1 -1
  144. data/lib/slack/web/api/templates/endpoints.erb +1 -1
  145. data/lib/slack/web/api/templates/method.erb +1 -1
  146. data/lib/slack/web/api/templates/method_spec.erb +20 -0
  147. data/lib/slack/web/faraday/connection.rb +1 -0
  148. data/lib/tasks/git.rake +7 -0
  149. data/lib/tasks/real_time.rake +45 -0
  150. data/lib/tasks/update.rake +9 -0
  151. data/lib/{slack/web/api/tasks/generate.rake → tasks/web.rake} +6 -6
  152. data/slack-ruby-client.gemspec +1 -0
  153. data/spec/fixtures/slack/web/rtm_start.yml +53 -22
  154. data/spec/integration/integration_spec.rb +5 -5
  155. data/spec/slack/real_time/client_spec.rb +72 -10
  156. data/spec/slack/real_time/event_handlers/bot_spec.rb +42 -0
  157. data/spec/slack/real_time/event_handlers/channel_spec.rb +116 -0
  158. data/spec/slack/real_time/event_handlers/group_spec.rb +90 -0
  159. data/spec/slack/real_time/event_handlers/im_spec.rb +47 -0
  160. data/spec/slack/real_time/event_handlers/team_spec.rb +58 -0
  161. data/spec/slack/real_time/event_handlers/user_spec.rb +61 -0
  162. data/spec/slack/real_time/rtm_start_spec.rb +13 -0
  163. data/spec/slack/real_time/store_spec.rb +11 -0
  164. data/spec/slack/slack_spec.rb +6 -6
  165. data/spec/slack/web/api/endpoints/api_spec.rb +7 -0
  166. data/spec/slack/web/api/endpoints/{auth_spec.rb → custom_specs/auth_spec.rb} +0 -0
  167. data/spec/slack/web/api/endpoints/{channels_spec.rb → custom_specs/channels_spec.rb} +1 -1
  168. data/spec/slack/web/api/endpoints/{chat_spec.rb → custom_specs/chat_spec.rb} +0 -0
  169. data/spec/slack/web/api/endpoints/{groups_spec.rb → custom_specs/groups_spec.rb} +1 -1
  170. data/spec/slack/web/api/endpoints/custom_specs/users_spec.rb +23 -0
  171. data/spec/slack/web/api/endpoints/dnd_spec.rb +12 -0
  172. data/spec/slack/web/api/endpoints/emoji_spec.rb +7 -0
  173. data/spec/slack/web/api/endpoints/files_spec.rb +36 -0
  174. data/spec/slack/web/api/endpoints/im_spec.rb +30 -0
  175. data/spec/slack/web/api/endpoints/mpim_spec.rb +30 -0
  176. data/spec/slack/web/api/endpoints/oauth_spec.rb +18 -0
  177. data/spec/slack/web/api/endpoints/pins_spec.rb +22 -0
  178. data/spec/slack/web/api/endpoints/reactions_spec.rb +17 -0
  179. data/spec/slack/web/api/endpoints/rtm_spec.rb +7 -0
  180. data/spec/slack/web/api/endpoints/search_spec.rb +22 -0
  181. data/spec/slack/web/api/endpoints/stars_spec.rb +7 -0
  182. data/spec/slack/web/api/endpoints/team_spec.rb +7 -0
  183. data/spec/slack/web/api/endpoints/usergroups_spec.rb +35 -0
  184. data/spec/slack/web/api/mixins/channels_spec.rb +6 -6
  185. data/spec/slack/web/api/mixins/groups_spec.rb +6 -6
  186. data/spec/slack/web/api/mixins/users_spec.rb +12 -6
  187. data/spec/support/real_time/event.rb +11 -0
  188. metadata +159 -13
  189. data/spec/slack/web/api/endpoints/users_spec.rb +0 -17
@@ -1,4 +1,4 @@
1
- # This file was auto-generated by lib/slack/web/api/tasks/generate.rake
1
+ # This file was auto-generated by lib/tasks/web.rake
2
2
 
3
3
  desc 'Stars methods.'
4
4
  command 'stars' do |g|
@@ -1,4 +1,4 @@
1
- # This file was auto-generated by lib/slack/web/api/tasks/generate.rake
1
+ # This file was auto-generated by lib/tasks/web.rake
2
2
 
3
3
  desc 'Team methods.'
4
4
  command 'team' do |g|
@@ -1,4 +1,4 @@
1
- # This file was auto-generated by lib/slack/web/api/tasks/generate.rake
1
+ # This file was auto-generated by lib/tasks/web.rake
2
2
 
3
3
  desc "Get info on your team's user groups."
4
4
  command 'usergroups' do |g|
@@ -1,4 +1,4 @@
1
- # This file was auto-generated by lib/slack/web/api/tasks/generate.rake
1
+ # This file was auto-generated by lib/tasks/web.rake
2
2
 
3
3
  desc 'Get info on members of your Slack team.'
4
4
  command 'users' do |g|
@@ -54,4 +54,13 @@ command 'users' do |g|
54
54
  puts JSON.dump($client.users_id(options))
55
55
  end
56
56
  end
57
+
58
+ g.desc 'This method searches for users.'
59
+ g.long_desc %( This method searches for users. )
60
+ g.command 'search' do |c|
61
+ c.flag 'user', desc: 'User to search for.'
62
+ c.action do |_global_options, options, _args|
63
+ puts JSON.dump($client.users_search(options))
64
+ end
65
+ end
57
66
  end
@@ -8,19 +8,19 @@ end
8
8
  client = Slack::RealTime::Client.new
9
9
 
10
10
  client.on :hello do
11
- puts "Successfully connected, welcome '#{client.self['name']}' to the '#{client.team['name']}' team at https://#{client.team['domain']}.slack.com."
11
+ puts "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
12
12
  end
13
13
 
14
14
  client.on :message do |data|
15
15
  puts data
16
16
 
17
- client.typing channel: data['channel']
17
+ client.typing channel: data.channel
18
18
 
19
- case data['text']
19
+ case data.text
20
20
  when 'bot hi' then
21
- client.message channel: data['channel'], text: "Hi <@#{data['user']}>!"
21
+ client.message channel: data.channel, text: "Hi <@#{data.user}>!"
22
22
  when /^bot/ then
23
- client.message channel: data['channel'], text: "Sorry <@#{data['user']}>, what?"
23
+ client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
24
24
  end
25
25
  end
26
26
 
@@ -8,16 +8,16 @@ end
8
8
  client = Slack::RealTime::Client.new
9
9
 
10
10
  client.on :hello do
11
- puts "Successfully connected, welcome '#{client.self['name']}' to the '#{client.team['name']}' team at https://#{client.team['domain']}.slack.com."
11
+ puts "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
12
12
  end
13
13
 
14
14
  client.on :message do |data|
15
15
  puts data
16
- case data['text']
16
+ case data.text
17
17
  when 'bot hi' then
18
- client.web_client.chat_postMessage channel: data['channel'], text: "Hi <@#{data['user']}>!"
18
+ client.web_client.chat_postMessage channel: data.channel, text: "Hi <@#{data.user}>!"
19
19
  when /^bot/ then
20
- client.web_client.chat_postMessage channel: data['channel'], text: "Sorry <@#{data['user']}>, what?"
20
+ client.web_client.chat_postMessage channel: data.channel, text: "Sorry <@#{data.user}>, what?"
21
21
  end
22
22
  end
23
23
 
@@ -8,19 +8,19 @@ end
8
8
  client = Slack::RealTime::Client.new
9
9
 
10
10
  client.on :hello do
11
- puts "Successfully connected, welcome '#{client.self['name']}' to the '#{client.team['name']}' team at https://#{client.team['domain']}.slack.com."
11
+ puts "Successfully connected, welcome '#{client.self.name}' to the '#{client.team.name}' team at https://#{client.team.domain}.slack.com."
12
12
  end
13
13
 
14
14
  client.on :message do |data|
15
15
  puts data
16
16
 
17
- client.typing channel: data['channel']
17
+ client.typing channel: data.channel
18
18
 
19
- case data['text']
19
+ case data.text
20
20
  when 'bot hi' then
21
- client.message channel: data['channel'], text: "Hi <@#{data['user']}>!"
21
+ client.message channel: data.channel, text: "Hi <@#{data.user}>!"
22
22
  when /^bot/ then
23
- client.message channel: data['channel'], text: "Sorry <@#{data['user']}>, what?"
23
+ client.message channel: data.channel, text: "Sorry <@#{data.user}>, what?"
24
24
  end
25
25
  end
26
26
 
@@ -2,6 +2,8 @@ require 'slack/version'
2
2
  require 'slack/config'
3
3
 
4
4
  # Messages
5
+ require 'hashie'
6
+ require 'slack/messages/message'
5
7
  require 'slack/messages/formatting'
6
8
 
7
9
  # Web API
@@ -9,6 +11,11 @@ require 'faraday'
9
11
  require 'faraday_middleware'
10
12
  require 'json'
11
13
  require 'logger'
14
+ begin
15
+ require 'picky'
16
+ rescue LoadError
17
+ # ignore, only used in users_search
18
+ end
12
19
  require 'slack/web/config'
13
20
  require 'slack/web/api/error'
14
21
  require 'slack/web/faraday/response/raise_error'
@@ -25,5 +32,8 @@ require 'slack/real_time/api/message_id'
25
32
  require 'slack/real_time/api/ping'
26
33
  require 'slack/real_time/api/message'
27
34
  require 'slack/real_time/api/typing'
35
+ require 'slack/real_time/models'
28
36
  require 'slack/real_time/config'
29
37
  require 'slack/real_time/client'
38
+ require 'slack/real_time/store'
39
+ require 'slack/real_time/event_handlers'
@@ -0,0 +1,9 @@
1
+ module Slack
2
+ module Messages
3
+ class Message < Hashie::Mash
4
+ def presence
5
+ super['presence']
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,22 @@
1
+ {
2
+ "type": "object",
3
+ "required": [
4
+ "name",
5
+ "desc"
6
+ ],
7
+ "properties": {
8
+ "name": {
9
+ "type": "string"
10
+ },
11
+ "desc": {
12
+ "type": "string"
13
+ },
14
+ "long_desc": {
15
+ "type": "string"
16
+ },
17
+ "example": {
18
+ "type": "object",
19
+ "default": {}
20
+ }
21
+ }
22
+ }
@@ -0,0 +1,18 @@
1
+ # This file was auto-generated by lib/tasks/real_time.rake
2
+
3
+ # module Slack
4
+ # module RealTime
5
+ # module EventHandlers
6
+ # module <%= class_name %>
7
+ # # <%= desc %>
8
+ # # @see https://api.slack.com/events/<%= name %>
9
+ # # @see https://github.com/dblock/slack-api-ref/blob/master/events/<%= name %>.json
10
+ # def self.call(_client, _data)
11
+ # # TODO
12
+ # end
13
+ # end
14
+ # end
15
+ # end
16
+ # end
17
+
18
+ # Slack::RealTime::Client.events['<%= name %>'] = Slack::RealTime::EventHandlers::<%= class_name %>
@@ -0,0 +1,5 @@
1
+ # This file was auto-generated by lib/tasks/real_time.rake
2
+
3
+ <% events.each do |f| %>
4
+ require 'slack/real_time/event_handlers/<%= f %>'
5
+ <% end %>
@@ -9,7 +9,15 @@ module Slack
9
9
  include Api::Message
10
10
  include Api::Typing
11
11
 
12
+ @events = {}
13
+
14
+ class << self
15
+ attr_accessor :events
16
+ end
17
+
12
18
  attr_accessor :web_client
19
+ attr_accessor :store
20
+ attr_accessor :url
13
21
  attr_accessor(*Config::ATTRIBUTES)
14
22
 
15
23
  def initialize(options = {})
@@ -17,13 +25,14 @@ module Slack
17
25
  Slack::RealTime::Config::ATTRIBUTES.each do |key|
18
26
  send("#{key}=", options[key] || Slack::RealTime.config.send(key))
19
27
  end
28
+ @store_class = options.key?(:store_class) ? options[:store_class] : Slack::RealTime::Store
20
29
  @token ||= Slack.config.token
21
30
  @web_client = Slack::Web::Client.new(token: token)
22
31
  end
23
32
 
24
- [:url, :team, :self, :users, :channels, :groups, :ims, :bots].each do |attr|
25
- define_method attr do
26
- @options[attr.to_s] if @options
33
+ [:users, :self, :channels, :team, :teams, :groups, :ims, :bots].each do |store_method|
34
+ define_method store_method do
35
+ store.send(store_method) if store
27
36
  end
28
37
  end
29
38
 
@@ -71,9 +80,11 @@ module Slack
71
80
  # @return [Slack::RealTime::Socket]
72
81
  def build_socket
73
82
  fail ClientAlreadyStartedError if started?
74
- @options = web_client.rtm_start
75
-
76
- socket_class.new(@options.fetch('url'), socket_options)
83
+ start = web_client.rtm_start(start_options)
84
+ data = Slack::Messages::Message.new(start)
85
+ @url = data.url
86
+ @store = @store_class.new(data) if @store_class
87
+ socket_class.new(@url, socket_options)
77
88
  end
78
89
 
79
90
  def socket_options
@@ -137,10 +148,21 @@ module Slack
137
148
 
138
149
  def dispatch(event)
139
150
  return false unless event.data
140
- data = JSON.parse(event.data)
141
- type = data['type']
151
+ data = Slack::Messages::Message.new(JSON.parse(event.data))
152
+ type = data.type
142
153
  return false unless type
143
- callbacks = self.callbacks[type.to_s]
154
+ type = type.to_s
155
+ run_handlers(type, data) if @store
156
+ run_callbacks(type, data)
157
+ end
158
+
159
+ def run_handlers(type, data)
160
+ handler = Slack::RealTime::Client.events[type]
161
+ handler.call(self, data) if handler
162
+ end
163
+
164
+ def run_callbacks(type, data)
165
+ callbacks = self.callbacks[type]
144
166
  return false unless callbacks
145
167
  callbacks.each do |c|
146
168
  c.call(data)
@@ -9,7 +9,8 @@ module Slack
9
9
  :token,
10
10
  :websocket_ping,
11
11
  :websocket_proxy,
12
- :concurrency
12
+ :concurrency,
13
+ :start_options
13
14
  ]
14
15
 
15
16
  attr_accessor(*Config::ATTRIBUTES)
@@ -19,6 +20,7 @@ module Slack
19
20
  self.websocket_proxy = nil
20
21
  self.token = nil
21
22
  self.concurrency = method(:detect_concurrency)
23
+ self.start_options = {}
22
24
  end
23
25
 
24
26
  def concurrency
@@ -0,0 +1,66 @@
1
+ # require 'slack/real_time/event_handlers/accounts_changed'
2
+ require 'slack/real_time/event_handlers/bot_added'
3
+ require 'slack/real_time/event_handlers/bot_changed'
4
+ require 'slack/real_time/event_handlers/channel_archive'
5
+ require 'slack/real_time/event_handlers/channel_created'
6
+ require 'slack/real_time/event_handlers/channel_deleted'
7
+ # require 'slack/real_time/event_handlers/channel_history_changed'
8
+ require 'slack/real_time/event_handlers/channel_joined'
9
+ require 'slack/real_time/event_handlers/channel_left'
10
+ # require 'slack/real_time/event_handlers/channel_marked'
11
+ require 'slack/real_time/event_handlers/channel_rename'
12
+ require 'slack/real_time/event_handlers/channel_unarchive'
13
+ # require 'slack/real_time/event_handlers/commands_changed'
14
+ # require 'slack/real_time/event_handlers/dnd_updated'
15
+ # require 'slack/real_time/event_handlers/dnd_updated_user'
16
+ require 'slack/real_time/event_handlers/email_domain_changed'
17
+ # require 'slack/real_time/event_handlers/emoji_changed'
18
+ # require 'slack/real_time/event_handlers/file_change'
19
+ # require 'slack/real_time/event_handlers/file_comment_added'
20
+ # require 'slack/real_time/event_handlers/file_comment_deleted'
21
+ # require 'slack/real_time/event_handlers/file_comment_edited'
22
+ # require 'slack/real_time/event_handlers/file_created'
23
+ # require 'slack/real_time/event_handlers/file_deleted'
24
+ # require 'slack/real_time/event_handlers/file_private'
25
+ # require 'slack/real_time/event_handlers/file_public'
26
+ # require 'slack/real_time/event_handlers/file_shared'
27
+ # require 'slack/real_time/event_handlers/file_unshared'
28
+ require 'slack/real_time/event_handlers/group_archive'
29
+ require 'slack/real_time/event_handlers/group_close'
30
+ # require 'slack/real_time/event_handlers/group_history_changed'
31
+ require 'slack/real_time/event_handlers/group_joined'
32
+ require 'slack/real_time/event_handlers/group_left'
33
+ # require 'slack/real_time/event_handlers/group_marked'
34
+ require 'slack/real_time/event_handlers/group_open'
35
+ require 'slack/real_time/event_handlers/group_rename'
36
+ require 'slack/real_time/event_handlers/group_unarchive'
37
+ require 'slack/real_time/event_handlers/im_close'
38
+ require 'slack/real_time/event_handlers/im_created'
39
+ # require 'slack/real_time/event_handlers/im_history_changed'
40
+ # require 'slack/real_time/event_handlers/im_marked'
41
+ require 'slack/real_time/event_handlers/im_open'
42
+ require 'slack/real_time/event_handlers/manual_presence_change'
43
+ # require 'slack/real_time/event_handlers/pin_added'
44
+ # require 'slack/real_time/event_handlers/pin_removed'
45
+ require 'slack/real_time/event_handlers/pref_change'
46
+ require 'slack/real_time/event_handlers/presence_change'
47
+ # require 'slack/real_time/event_handlers/reaction_added'
48
+ # require 'slack/real_time/event_handlers/reaction_removed'
49
+ # require 'slack/real_time/event_handlers/reconnect_url'
50
+ # require 'slack/real_time/event_handlers/star_added'
51
+ # require 'slack/real_time/event_handlers/star_removed'
52
+ # require 'slack/real_time/event_handlers/subteam_created'
53
+ # require 'slack/real_time/event_handlers/subteam_self_added'
54
+ # require 'slack/real_time/event_handlers/subteam_self_removed'
55
+ # require 'slack/real_time/event_handlers/subteam_updated'
56
+ require 'slack/real_time/event_handlers/team_domain_change'
57
+ require 'slack/real_time/event_handlers/team_join'
58
+ # require 'slack/real_time/event_handlers/team_migration_started'
59
+ require 'slack/real_time/event_handlers/team_plan_change'
60
+ require 'slack/real_time/event_handlers/team_pref_change'
61
+ # require 'slack/real_time/event_handlers/team_profile_change'
62
+ # require 'slack/real_time/event_handlers/team_profile_delete'
63
+ # require 'slack/real_time/event_handlers/team_profile_reorder'
64
+ require 'slack/real_time/event_handlers/team_rename'
65
+ require 'slack/real_time/event_handlers/user_change'
66
+ # require 'slack/real_time/event_handlers/user_typing'
@@ -0,0 +1,18 @@
1
+ # This file was auto-generated by lib/tasks/real_time.rake
2
+
3
+ # module Slack
4
+ # module RealTime
5
+ # module EventHandlers
6
+ # module AccountsChanged
7
+ # # The list of accounts a user is signed into has changed.
8
+ # # @see https://api.slack.com/events/accounts_changed
9
+ # # @see https://github.com/dblock/slack-api-ref/blob/master/events/accounts_changed.json
10
+ # def self.call(_client, _data)
11
+ # # TODO
12
+ # end
13
+ # end
14
+ # end
15
+ # end
16
+ # end
17
+ #
18
+ # Slack::RealTime::Client.events['accounts_changed'] = Slack::RealTime::EventHandlers::AccountsChanged
@@ -0,0 +1,16 @@
1
+ module Slack
2
+ module RealTime
3
+ module EventHandlers
4
+ module BotAdded
5
+ # An integration bot was added.
6
+ # @see https://api.slack.com/events/bot_added
7
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/bot_added.json
8
+ def self.call(client, data)
9
+ client.bots[data.bot.id] = Models::Bot.new(data.bot)
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
15
+
16
+ Slack::RealTime::Client.events['bot_added'] = Slack::RealTime::EventHandlers::BotAdded
@@ -0,0 +1,17 @@
1
+ module Slack
2
+ module RealTime
3
+ module EventHandlers
4
+ module BotChanged
5
+ # An integration bot was changed.
6
+ # @see https://api.slack.com/events/bot_changed
7
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/bot_changed.json
8
+ def self.call(client, data)
9
+ bot = client.bots[data.bot.id]
10
+ bot.merge!(data.bot) if bot
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ Slack::RealTime::Client.events['bot_changed'] = Slack::RealTime::EventHandlers::BotChanged
@@ -0,0 +1,17 @@
1
+ module Slack
2
+ module RealTime
3
+ module EventHandlers
4
+ module ChannelArchive
5
+ # A team channel was archived.
6
+ # @see https://api.slack.com/events/channel_archive
7
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_archive.json
8
+ def self.call(client, data)
9
+ channel = client.channels[data.channel]
10
+ channel.is_archived = true if channel
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ Slack::RealTime::Client.events['channel_archive'] = Slack::RealTime::EventHandlers::ChannelArchive
@@ -0,0 +1,17 @@
1
+ module Slack
2
+ module RealTime
3
+ module EventHandlers
4
+ module ChannelCreated
5
+ # A team channel was created.
6
+ # @see https://api.slack.com/events/channel_created
7
+ # @see https://github.com/dblock/slack-api-ref/blob/master/events/channel_created.json
8
+ def self.call(client, data)
9
+ channel = Models::Channel.new(data.channel)
10
+ client.channels[channel.id] = channel
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
16
+
17
+ Slack::RealTime::Client.events['channel_created'] = Slack::RealTime::EventHandlers::ChannelCreated