slack-ruby-client 0.5.4 → 0.6.0

Sign up to get free protection for your applications and to get access to all the features.
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