slack-ruby-client 0.7.0 → 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (41) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +9 -9
  3. data/CHANGELOG.md +9 -1
  4. data/README.md +9 -1
  5. data/bin/commands/chat.rb +1 -0
  6. data/bin/commands/files.rb +3 -14
  7. data/bin/commands/files_comments.rb +35 -0
  8. data/bin/commands/reminders.rb +50 -0
  9. data/bin/commands/usergroups.rb +29 -40
  10. data/bin/commands/usergroups_users.rb +25 -0
  11. data/bin/commands.rb +3 -0
  12. data/bin/slack +3 -1
  13. data/examples/hi_real_time/hi.rb +5 -1
  14. data/lib/slack/real_time/client.rb +1 -0
  15. data/lib/slack/real_time/config.rb +1 -1
  16. data/lib/slack/version.rb +1 -1
  17. data/lib/slack/web/api/endpoints/chat.rb +9 -1
  18. data/lib/slack/web/api/endpoints/files.rb +3 -22
  19. data/lib/slack/web/api/endpoints/files_comments.rb +59 -0
  20. data/lib/slack/web/api/endpoints/reminders.rb +74 -0
  21. data/lib/slack/web/api/endpoints/usergroups.rb +23 -40
  22. data/lib/slack/web/api/endpoints/usergroups_users.rb +42 -0
  23. data/lib/slack/web/api/endpoints.rb +6 -0
  24. data/lib/slack/web/api/patches/chat.3.update-attachments-support.patch +20 -0
  25. data/lib/slack/web/api/templates/command.erb +3 -3
  26. data/lib/slack/web/api/templates/endpoints.erb +1 -1
  27. data/lib/slack/web/api/templates/method.erb +2 -2
  28. data/lib/slack/web/api/templates/method_spec.erb +2 -2
  29. data/lib/slack/web/config.rb +1 -1
  30. data/lib/tasks/real_time.rake +1 -1
  31. data/lib/tasks/web.rake +11 -7
  32. data/slack-ruby-client.gemspec +1 -1
  33. data/spec/integration/integration_spec.rb +20 -0
  34. data/spec/slack/web/api/endpoints/custom_specs/chat_spec.rb +36 -0
  35. data/spec/slack/web/api/endpoints/files_comments_spec.rb +34 -0
  36. data/spec/slack/web/api/endpoints/files_spec.rb +1 -15
  37. data/spec/slack/web/api/endpoints/reminders_spec.rb +30 -0
  38. data/spec/slack/web/api/endpoints/usergroups_spec.rb +0 -8
  39. data/spec/slack/web/api/endpoints/usergroups_users_spec.rb +20 -0
  40. data/spec/support/vcr.rb +1 -0
  41. metadata +19 -6
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: f0aaadcdcd3f329bb20548b8041a631bb8a28519
4
- data.tar.gz: 27a9e84d26d1934ee603972453f370102554cdce
3
+ metadata.gz: 98b81ae4b6471c6f769605ec94413778475e2867
4
+ data.tar.gz: 3f4a212131fbc5042d5eea7399606521ceafef97
5
5
  SHA512:
6
- metadata.gz: a26e4b6f75a481faa9ff2c2b1d45a0f6922aca6784fa88f0f5772a8ad24df56676cc694e595a7fbdeb6a21fdfcb7a74ed0d9c5b5a54cb76b6b5a8747fcf8490f
7
- data.tar.gz: 70c7e4981a819f91e425a4ba19a1769aad0f5260b0b15a8a2b55085eea824bee75c50e18845e89e91265cbdc4b72e91aa34bb2592629a2b7047639ba988d6dbc
6
+ metadata.gz: 56dff3761a755c63dccb02156317ba099f0e892be2152a3743bae95e04245c272cc55f42dad3d54d635d9e95f4347184fa4dc2a775e8c1e5e638778d71c8e71e
7
+ data.tar.gz: cf2ce35d6963d68b4c210eb852fe61f51cc9b0933b289fd000142ebfd3278b70dc07aa971da5e448e53ab1b63c00a6cec78a2e11533ecb3ea1be0bffc7550e97
data/.rubocop_todo.yml CHANGED
@@ -1,6 +1,6 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2016-02-29 14:50:42 -0500 using RuboCop version 0.35.0.
3
+ # on 2016-05-02 08:01:33 -0400 using RuboCop version 0.35.0.
4
4
  # The point is for the user to remove these configuration records
5
5
  # one by one as the offenses are removed from the code base.
6
6
  # Note that changes in the inspected code, or installation of new
@@ -21,34 +21,34 @@ Lint/UnusedBlockArgument:
21
21
  Exclude:
22
22
  - 'lib/slack/messages/formatting.rb'
23
23
 
24
- # Offense count: 14
24
+ # Offense count: 15
25
25
  Metrics/AbcSize:
26
26
  Max: 44
27
27
 
28
28
  # Offense count: 2
29
29
  # Configuration parameters: CountComments.
30
30
  Metrics/ClassLength:
31
- Max: 159
31
+ Max: 155
32
32
 
33
- # Offense count: 1
33
+ # Offense count: 2
34
34
  Metrics/CyclomaticComplexity:
35
35
  Max: 9
36
36
 
37
- # Offense count: 542
37
+ # Offense count: 571
38
38
  # Configuration parameters: AllowURI, URISchemes.
39
39
  Metrics/LineLength:
40
40
  Max: 288
41
41
 
42
- # Offense count: 8
42
+ # Offense count: 7
43
43
  # Configuration parameters: CountComments.
44
44
  Metrics/MethodLength:
45
45
  Max: 32
46
46
 
47
- # Offense count: 1
47
+ # Offense count: 2
48
48
  Metrics/PerceivedComplexity:
49
49
  Max: 11
50
50
 
51
- # Offense count: 52
51
+ # Offense count: 54
52
52
  # Configuration parameters: Exclude.
53
53
  Style/Documentation:
54
54
  Enabled: false
@@ -59,7 +59,7 @@ Style/FileName:
59
59
  Exclude:
60
60
  - 'lib/slack-ruby-client.rb'
61
61
 
62
- # Offense count: 92
62
+ # Offense count: 95
63
63
  # Configuration parameters: AllowedVariables.
64
64
  Style/GlobalVars:
65
65
  Enabled: false
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ ### 0.7.1 (5/2/2016)
2
+
3
+ * [#82](https://github.com/dblock/slack-ruby-client/pull/82): Fix `usergroups.users.{list,update}` and `files.comments.{add,edit,delete}` APIs - [@masatomo](https://github.com/masatomo).
4
+ * [#73](https://github.com/dblock/slack-ruby-client/issues/73): Add a `closed` event - [@rkadyb](https://github.com/rkadyb).
5
+ * [#69](https://github.com/dblock/slack-ruby-client/issues/69): Add attachments support for `Slack::Web::Api::Endpoints::Chat.chat_update` - [@nicka](https://github.com/nicka).
6
+ * [#85](https://github.com/dblock/slack-ruby-client/issues/85): Compatibility with WebMock 2.0 - [@dblock](https://github.com/dblock).
7
+ * Added `as_user` to `chat_delete` Web API - [@dblock](https://github.com/dblock).
8
+ * Added `reminders_add`, `reminders_complete`, `reminders_delete`, `reminders_info` and `reminders_list` to Web API - [@dblock](https://github.com/dblock).
9
+
1
10
  ### 0.7.0 (3/6/2016)
2
11
 
3
12
  * [#68](https://github.com/dblock/slack-ruby-client/issues/68): The `Slack::RealTime::Config#store_class` is now globally configurable - [@dblock](https://github.com/dblock).
@@ -91,4 +100,3 @@
91
100
  ### 0.1.0 (7/25/2015)
92
101
 
93
102
  * Initial public release with Web and RealTime Messaging API support - [@dblock](https://github.com/dblock).
94
-
data/README.md CHANGED
@@ -18,7 +18,7 @@ A Ruby client for the Slack [Web](https://api.slack.com/web) and [RealTime Messa
18
18
 
19
19
  ## Stable Release
20
20
 
21
- You're reading the documentation for the **stable** release of slack-ruby-client, 0.7.0. See [UPGRADING](UPGRADING.md) when upgrading from an older version.
21
+ You're reading the documentation for the **stable** release of slack-ruby-client, 0.7.1. See [UPGRADING](UPGRADING.md) when upgrading from an older version.
22
22
 
23
23
  ## Installation
24
24
 
@@ -194,6 +194,14 @@ client.on :message do |data|
194
194
  end
195
195
  end
196
196
 
197
+ client.on :close do |_data|
198
+ puts "Client is about to disconnect"
199
+ end
200
+
201
+ client.on :closed do |_data|
202
+ puts "Client has disconnected successfully!"
203
+ end
204
+
197
205
  client.start!
198
206
  ```
199
207
 
data/bin/commands/chat.rb CHANGED
@@ -7,6 +7,7 @@ command 'chat' do |g|
7
7
  g.command 'delete' do |c|
8
8
  c.flag 'ts', desc: 'Timestamp of the message to be deleted.'
9
9
  c.flag 'channel', desc: 'Channel containing the message to be deleted.'
10
+ c.flag 'as_user', desc: 'Pass true to delete the message as the authed user. Bot users in this context are considered authed users.'
10
11
  c.action do |_global_options, options, _args|
11
12
  puts JSON.dump($client.chat_delete(options))
12
13
  end
@@ -2,17 +2,6 @@
2
2
 
3
3
  desc 'Get info on files uploaded to Slack, upload new files to Slack.'
4
4
  command 'files' do |g|
5
- g.desc 'Edit an existing comment on a file. Only the user who created a comment may make edits. Teams may configure a limited time window during which file comment edits are allowed.'
6
- g.long_desc %( Edit an existing comment on a file. Only the user who created a comment may make edits. Teams may configure a limited time window during which file comment edits are allowed. )
7
- g.command 'comments' do |c|
8
- c.flag 'file', desc: 'File containing the comment to edit.'
9
- c.flag 'id', desc: 'The comment to edit.'
10
- c.flag 'comment', desc: 'Text of the comment to edit.'
11
- c.action do |_global_options, options, _args|
12
- puts JSON.dump($client.files_comments(options))
13
- end
14
- end
15
-
16
5
  g.desc 'This method deletes a file from your team.'
17
6
  g.long_desc %( This method deletes a file from your team. )
18
7
  g.command 'delete' do |c|
@@ -77,9 +66,9 @@ You can pass multiple values in the types argument, like types=posts,snippets.Th
77
66
  g.desc 'This method allows you to create or upload an existing file.'
78
67
  g.long_desc %( This method allows you to create or upload an existing file. )
79
68
  g.command 'upload' do |c|
80
- c.flag 'file', desc: 'File contents via multipart/form-data.'
81
- c.flag 'content', desc: 'File contents via a POST var.'
82
- c.flag 'filetype', desc: 'Slack-internal file type identifier.'
69
+ c.flag 'file', desc: 'File contents via multipart/form-data. If omitting this parameter, you must submit content.'
70
+ c.flag 'content', desc: 'File contents via a POST variable. If omitting this parameter, you must provide a file.'
71
+ c.flag 'filetype', desc: 'A file type identifier.'
83
72
  c.flag 'filename', desc: 'Filename of file.'
84
73
  c.flag 'title', desc: 'Title of file.'
85
74
  c.flag 'initial_comment', desc: 'Initial comment to add to file.'
@@ -0,0 +1,35 @@
1
+ # This file was auto-generated by lib/tasks/web.rake
2
+
3
+ desc 'FilesComments methods.'
4
+ command 'files_comments' do |g|
5
+ g.desc 'Add a comment to an existing file.'
6
+ g.long_desc %( Add a comment to an existing file. )
7
+ g.command 'add' do |c|
8
+ c.flag 'file', desc: 'File to add a comment to.'
9
+ c.flag 'comment', desc: 'Text of the comment to add.'
10
+ c.action do |_global_options, options, _args|
11
+ puts JSON.dump($client.files_comments_add(options))
12
+ end
13
+ end
14
+
15
+ g.desc 'Delete an existing comment on a file. Only the original author of the comment or a Team Administrator may delete a file comment.'
16
+ g.long_desc %( Delete an existing comment on a file. Only the original author of the comment or a Team Administrator may delete a file comment. )
17
+ g.command 'delete' do |c|
18
+ c.flag 'file', desc: 'File to delete a comment from.'
19
+ c.flag 'id', desc: 'The comment to delete.'
20
+ c.action do |_global_options, options, _args|
21
+ puts JSON.dump($client.files_comments_delete(options))
22
+ end
23
+ end
24
+
25
+ g.desc 'Edit an existing comment on a file. Only the user who created a comment may make edits. Teams may configure a limited time window during which file comment edits are allowed.'
26
+ g.long_desc %( Edit an existing comment on a file. Only the user who created a comment may make edits. Teams may configure a limited time window during which file comment edits are allowed. )
27
+ g.command 'edit' do |c|
28
+ c.flag 'file', desc: 'File containing the comment to edit.'
29
+ c.flag 'id', desc: 'The comment to edit.'
30
+ c.flag 'comment', desc: 'Text of the comment to edit.'
31
+ c.action do |_global_options, options, _args|
32
+ puts JSON.dump($client.files_comments_edit(options))
33
+ end
34
+ end
35
+ end
@@ -0,0 +1,50 @@
1
+ # This file was auto-generated by lib/tasks/web.rake
2
+
3
+ desc 'Reminders methods.'
4
+ command 'reminders' do |g|
5
+ g.desc 'This method creates a reminder.'
6
+ g.long_desc %( This method creates a reminder. )
7
+ g.command 'add' do |c|
8
+ c.flag 'text', desc: 'The content of the reminder.'
9
+ c.flag 'time', desc: 'When this reminder should happen: the Unix timestamp (up to five years from now), the number of seconds until the reminder (if within 24 hours), or a natural language description (Ex. "in 15 minutes," or "every Thursday").'
10
+ c.flag 'user', desc: 'The user who will receive the reminder. If no user is specified, the reminder will go to user who created it.'
11
+ c.action do |_global_options, options, _args|
12
+ puts JSON.dump($client.reminders_add(options))
13
+ end
14
+ end
15
+
16
+ g.desc 'This method completes a reminder.'
17
+ g.long_desc %( This method completes a reminder. )
18
+ g.command 'complete' do |c|
19
+ c.flag 'reminder', desc: 'The ID of the reminder to be marked as complete.'
20
+ c.action do |_global_options, options, _args|
21
+ puts JSON.dump($client.reminders_complete(options))
22
+ end
23
+ end
24
+
25
+ g.desc 'This method deletes a reminder.'
26
+ g.long_desc %( This method deletes a reminder. )
27
+ g.command 'delete' do |c|
28
+ c.flag 'reminder', desc: 'The ID of the reminder.'
29
+ c.action do |_global_options, options, _args|
30
+ puts JSON.dump($client.reminders_delete(options))
31
+ end
32
+ end
33
+
34
+ g.desc 'This method returns information about a reminder.'
35
+ g.long_desc %( This method returns information about a reminder. )
36
+ g.command 'info' do |c|
37
+ c.flag 'reminder', desc: 'The ID of the reminder.'
38
+ c.action do |_global_options, options, _args|
39
+ puts JSON.dump($client.reminders_info(options))
40
+ end
41
+ end
42
+
43
+ g.desc 'This method lists all reminders created by or for a given user.'
44
+ g.long_desc %( This method lists all reminders created by or for a given user. )
45
+ g.command 'list' do |c|
46
+ c.action do |_global_options, options, _args|
47
+ puts JSON.dump($client.reminders_list(options))
48
+ end
49
+ end
50
+ end
@@ -1,73 +1,62 @@
1
1
  # This file was auto-generated by lib/tasks/web.rake
2
2
 
3
- desc "Get info on your team's user groups."
3
+ desc "Get info on your team's User Groups."
4
4
  command 'usergroups' do |g|
5
- g.desc 'This method is used to create a user group.'
6
- g.long_desc %( This method is used to create a user group. )
5
+ g.desc 'This method is used to create a User Group.'
6
+ g.long_desc %( This method is used to create a User Group. )
7
7
  g.command 'create' do |c|
8
- c.flag 'name', desc: 'A name for the user group. Must be unique among user groups.'
9
- c.flag 'handle', desc: 'A mention handle. Must be unique among channels, users and user groups.'
10
- c.flag 'description', desc: 'A short description of the user group.'
11
- c.flag 'channels', desc: 'A comma separated string of encoded channel IDs for which the user group uses as a default.'
12
- c.flag 'include_count', desc: 'Include the number of users in each user group.'
8
+ c.flag 'name', desc: 'A name for the User Group. Must be unique among User Groups.'
9
+ c.flag 'handle', desc: 'A mention handle. Must be unique among channels, users and User Groups.'
10
+ c.flag 'description', desc: 'A short description of the User Group.'
11
+ c.flag 'channels', desc: 'A comma separated string of encoded channel IDs for which the User Group uses as a default.'
12
+ c.flag 'include_count', desc: 'Include the number of users in each User Group.'
13
13
  c.action do |_global_options, options, _args|
14
14
  puts JSON.dump($client.usergroups_create(options))
15
15
  end
16
16
  end
17
17
 
18
- g.desc 'This method disables an existing user group.'
19
- g.long_desc %( This method disables an existing user group. )
18
+ g.desc 'This method disables an existing User Group.'
19
+ g.long_desc %( This method disables an existing User Group. )
20
20
  g.command 'disable' do |c|
21
- c.flag 'usergroup', desc: 'The encoded ID of the user group to disable.'
22
- c.flag 'include_count', desc: 'Include the number of users in the user group.'
21
+ c.flag 'usergroup', desc: 'The encoded ID of the User Group to disable.'
22
+ c.flag 'include_count', desc: 'Include the number of users in the User Group.'
23
23
  c.action do |_global_options, options, _args|
24
24
  puts JSON.dump($client.usergroups_disable(options))
25
25
  end
26
26
  end
27
27
 
28
- g.desc 'This method enables a user group which was previously disabled.'
29
- g.long_desc %( This method enables a user group which was previously disabled. )
28
+ g.desc 'This method enables a User Group which was previously disabled.'
29
+ g.long_desc %( This method enables a User Group which was previously disabled. )
30
30
  g.command 'enable' do |c|
31
- c.flag 'usergroup', desc: 'The encoded ID of the user group to enable.'
32
- c.flag 'include_count', desc: 'Include the number of users in the user group.'
31
+ c.flag 'usergroup', desc: 'The encoded ID of the User Group to enable.'
32
+ c.flag 'include_count', desc: 'Include the number of users in the User Group.'
33
33
  c.action do |_global_options, options, _args|
34
34
  puts JSON.dump($client.usergroups_enable(options))
35
35
  end
36
36
  end
37
37
 
38
- g.desc 'This method returns a list of all user groups in the team. This can optionally include disabled user groups.'
39
- g.long_desc %( This method returns a list of all user groups in the team. This can optionally include disabled user groups. )
38
+ g.desc 'This method returns a list of all User Groups in the team. This can optionally include disabled User Groups.'
39
+ g.long_desc %( This method returns a list of all User Groups in the team. This can optionally include disabled User Groups. )
40
40
  g.command 'list' do |c|
41
- c.flag 'include_disabled', desc: 'Include disabled user groups.'
42
- c.flag 'include_count', desc: 'Include the number of users in each user group.'
43
- c.flag 'include_users', desc: 'Include the list of users for each user group.'
41
+ c.flag 'include_disabled', desc: 'Include disabled User Groups.'
42
+ c.flag 'include_count', desc: 'Include the number of users in each User Group.'
43
+ c.flag 'include_users', desc: 'Include the list of users for each User Group.'
44
44
  c.action do |_global_options, options, _args|
45
45
  puts JSON.dump($client.usergroups_list(options))
46
46
  end
47
47
  end
48
48
 
49
- g.desc 'This method updates the properties of an existing user group.'
50
- g.long_desc %( This method updates the properties of an existing user group. )
49
+ g.desc 'This method updates the properties of an existing User Group.'
50
+ g.long_desc %( This method updates the properties of an existing User Group. )
51
51
  g.command 'update' do |c|
52
- c.flag 'usergroup', desc: 'The encoded ID of the user group to update.'
53
- c.flag 'name', desc: 'A name for the user group. Must be unique among user groups.'
54
- c.flag 'handle', desc: 'A mention handle. Must be unique among channels, users and user groups.'
55
- c.flag 'description', desc: 'A short description of the user group.'
56
- c.flag 'channels', desc: 'A comma separated string of encoded channel IDs for which the user group uses as a default.'
57
- c.flag 'include_count', desc: 'Include the number of users in the user group.'
52
+ c.flag 'usergroup', desc: 'The encoded ID of the User Group to update.'
53
+ c.flag 'name', desc: 'A name for the User Group. Must be unique among User Groups.'
54
+ c.flag 'handle', desc: 'A mention handle. Must be unique among channels, users and User Groups.'
55
+ c.flag 'description', desc: 'A short description of the User Group.'
56
+ c.flag 'channels', desc: 'A comma separated string of encoded channel IDs for which the User Group uses as a default.'
57
+ c.flag 'include_count', desc: 'Include the number of users in the User Group.'
58
58
  c.action do |_global_options, options, _args|
59
59
  puts JSON.dump($client.usergroups_update(options))
60
60
  end
61
61
  end
62
-
63
- g.desc 'This method updates the list of users that belong to a user group. This method replaces all users in a user group with the list of users provided in the users parameter.'
64
- g.long_desc %( This method updates the list of users that belong to a user group. This method replaces all users in a user group with the list of users provided in the users parameter. )
65
- g.command 'users' do |c|
66
- c.flag 'usergroup', desc: 'The encoded ID of the user group to update.'
67
- c.flag 'users', desc: 'A comma separated string of encoded user IDs that represent the entire list of users for the user group.'
68
- c.flag 'include_count', desc: 'Include the number of users in the user group.'
69
- c.action do |_global_options, options, _args|
70
- puts JSON.dump($client.usergroups_users(options))
71
- end
72
- end
73
62
  end
@@ -0,0 +1,25 @@
1
+ # This file was auto-generated by lib/tasks/web.rake
2
+
3
+ desc 'UsergroupsUsers methods.'
4
+ command 'usergroups_users' do |g|
5
+ g.desc 'This method returns a list of all users within a User Group.'
6
+ g.long_desc %( This method returns a list of all users within a User Group. )
7
+ g.command 'list' do |c|
8
+ c.flag 'usergroup', desc: 'The encoded ID of the User Group to update.'
9
+ c.flag 'include_disabled', desc: 'Allow results that involve disabled User Groups.'
10
+ c.action do |_global_options, options, _args|
11
+ puts JSON.dump($client.usergroups_users_list(options))
12
+ end
13
+ end
14
+
15
+ g.desc 'This method updates the list of users that belong to a User Group. This method replaces all users in a User Group with the list of users provided in the users parameter.'
16
+ g.long_desc %( This method updates the list of users that belong to a User Group. This method replaces all users in a User Group with the list of users provided in the users parameter. )
17
+ g.command 'update' do |c|
18
+ c.flag 'usergroup', desc: 'The encoded ID of the User Group to update.'
19
+ c.flag 'users', desc: 'A comma separated string of encoded user IDs that represent the entire list of users for the User Group.'
20
+ c.flag 'include_count', desc: 'Include the number of users in the User Group.'
21
+ c.action do |_global_options, options, _args|
22
+ puts JSON.dump($client.usergroups_users_update(options))
23
+ end
24
+ end
25
+ end
data/bin/commands.rb CHANGED
@@ -6,6 +6,7 @@ require 'commands/channels'
6
6
  require 'commands/chat'
7
7
  require 'commands/dnd'
8
8
  require 'commands/emoji'
9
+ require 'commands/files_comments'
9
10
  require 'commands/files'
10
11
  require 'commands/groups'
11
12
  require 'commands/im'
@@ -13,9 +14,11 @@ require 'commands/mpim'
13
14
  require 'commands/oauth'
14
15
  require 'commands/pins'
15
16
  require 'commands/reactions'
17
+ require 'commands/reminders'
16
18
  require 'commands/rtm'
17
19
  require 'commands/search'
18
20
  require 'commands/stars'
19
21
  require 'commands/team'
20
22
  require 'commands/usergroups'
23
+ require 'commands/usergroups_users'
21
24
  require 'commands/users'
data/bin/slack CHANGED
@@ -16,7 +16,7 @@ flag ['vcr-cassette-name'], desc: 'Offline VCR cassette.'
16
16
  pre do |global_options, _command, options, _args|
17
17
  # global Slack configuration
18
18
  Slack.config.token = global_options['slack-api-token']
19
- help_now! 'Set Slack API token via --slack-api-token or SLACK_API_TOKEN.' unless Slack.config.token && Slack.config.token.length > 0
19
+ help_now! 'Set Slack API token via --slack-api-token or SLACK_API_TOKEN.' unless Slack.config.token && !Slack.config.token.empty?
20
20
 
21
21
  if global_options['debug']
22
22
  require 'logger'
@@ -29,6 +29,8 @@ pre do |global_options, _command, options, _args|
29
29
 
30
30
  # Offline VCR cassette
31
31
  if global_options['vcr-cassette-name']
32
+ require 'webmock'
33
+ WebMock.enable!
32
34
  require 'vcr'
33
35
  VCR.configure do |config|
34
36
  config.cassette_library_dir = 'spec/fixtures/slack'
@@ -27,8 +27,12 @@ client.on :message do |data|
27
27
  end
28
28
 
29
29
  client.on :close do |_data|
30
- puts 'Connection closed, exiting.'
30
+ puts 'Connection closing, exiting.'
31
31
  EM.stop
32
32
  end
33
33
 
34
+ client.on :closed do |_data|
35
+ puts 'Connection has been disconnected.'
36
+ end
37
+
34
38
  client.start!
@@ -119,6 +119,7 @@ module Slack
119
119
  logger.debug("#{self.class}##{__method__}") { event.class.name }
120
120
  callback(event, :close)
121
121
  close(event)
122
+ callback(event, :closed)
122
123
  end
123
124
  end
124
125
  end
@@ -13,7 +13,7 @@ module Slack
13
13
  :start_options,
14
14
  :store_class,
15
15
  :logger
16
- ]
16
+ ].freeze
17
17
 
18
18
  attr_accessor(*Config::ATTRIBUTES)
19
19