slack-ruby-client 0.5.3 → 0.5.4

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 (47) hide show
  1. checksums.yaml +4 -4
  2. data/.rubocop_todo.yml +10 -6
  3. data/CHANGELOG.md +6 -0
  4. data/README.md +40 -2
  5. data/bin/commands/channels.rb +9 -0
  6. data/bin/commands/groups.rb +9 -0
  7. data/bin/commands/users.rb +9 -0
  8. data/examples/hi_real_time/hi.rb +5 -0
  9. data/lib/slack-ruby-client.rb +1 -0
  10. data/lib/slack/real_time/concurrency/celluloid.rb +4 -4
  11. data/lib/slack/version.rb +1 -1
  12. data/lib/slack/web/api/endpoints.rb +4 -0
  13. data/lib/slack/web/api/endpoints/channels.rb +13 -0
  14. data/lib/slack/web/api/endpoints/chat.rb +2 -0
  15. data/lib/slack/web/api/endpoints/dnd.rb +1 -0
  16. data/lib/slack/web/api/endpoints/files.rb +1 -0
  17. data/lib/slack/web/api/endpoints/groups.rb +16 -0
  18. data/lib/slack/web/api/endpoints/im.rb +4 -0
  19. data/lib/slack/web/api/endpoints/mpim.rb +3 -0
  20. data/lib/slack/web/api/endpoints/pins.rb +3 -0
  21. data/lib/slack/web/api/endpoints/reactions.rb +4 -0
  22. data/lib/slack/web/api/endpoints/stars.rb +3 -0
  23. data/lib/slack/web/api/endpoints/team.rb +1 -0
  24. data/lib/slack/web/api/endpoints/users.rb +2 -0
  25. data/lib/slack/web/api/error.rb +1 -1
  26. data/lib/slack/web/api/mixins.rb +3 -0
  27. data/lib/slack/web/api/mixins/channels.id.json +20 -0
  28. data/lib/slack/web/api/mixins/channels.id.rb +26 -0
  29. data/lib/slack/web/api/mixins/groups.id.json +20 -0
  30. data/lib/slack/web/api/mixins/groups.id.rb +26 -0
  31. data/lib/slack/web/api/mixins/users.id.json +20 -0
  32. data/lib/slack/web/api/mixins/users.id.rb +26 -0
  33. data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +1 -1
  34. data/lib/slack/web/api/tasks/generate.rake +4 -1
  35. data/lib/slack/web/api/templates/endpoints.erb +4 -0
  36. data/lib/slack/web/api/templates/method.erb +14 -5
  37. data/spec/fixtures/slack/web/channels_info.yml +46 -0
  38. data/spec/fixtures/slack/web/groups_info.yml +43 -0
  39. data/spec/fixtures/slack/web/users_info.yml +130 -0
  40. data/spec/integration/integration_spec.rb +11 -2
  41. data/spec/slack/web/api/endpoints/channels_spec.rb +11 -0
  42. data/spec/slack/web/api/endpoints/groups_spec.rb +11 -0
  43. data/spec/slack/web/api/endpoints/users_spec.rb +4 -0
  44. data/spec/slack/web/api/mixins/channels_spec.rb +31 -0
  45. data/spec/slack/web/api/mixins/groups_spec.rb +31 -0
  46. data/spec/slack/web/api/mixins/users_spec.rb +31 -0
  47. metadata +25 -2
@@ -0,0 +1,43 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://slack.com/api/groups.list
6
+ body:
7
+ encoding: UTF-8
8
+ string: token=token
9
+ response:
10
+ status:
11
+ code: 200
12
+ message: OK
13
+ headers:
14
+ Content-Type:
15
+ - application/json; charset=utf-8
16
+ body:
17
+ encoding: ASCII-8BIT
18
+ string: '{"ok":true,"groups":[{"id":"G0K7EV5A7","name":"mpdm-dblock--rubybot--player1-1","is_group":true,"created":1453561861,"creator":"U04KB5WQR","is_archived":false,"is_mpim":true,"members":["U04KB5WQR","U0HLFUZLJ","U07518DTL"],"topic":{"value":"Group
19
+ messaging","creator":"U04KB5WQR","last_set":1453561861},"purpose":{"value":"Group
20
+ messaging with: @dblock @rubybot @player1","creator":"U04KB5WQR","last_set":1453561861}}]}'
21
+ http_version:
22
+ recorded_at: Sat, 23 Jan 2016 15:19:10 GMT
23
+ - request:
24
+ method: post
25
+ uri: https://slack.com/api/groups.info
26
+ body:
27
+ encoding: UTF-8
28
+ string: channel=G0K7EV5A7&token=token
29
+ response:
30
+ status:
31
+ code: 200
32
+ message: OK
33
+ headers:
34
+ Content-Type:
35
+ - application/json; charset=utf-8
36
+ body:
37
+ encoding: ASCII-8BIT
38
+ string: '{"ok":true,"group":{"id":"G0K7EV5A7","name":"mpdm-dblock--rubybot--player1-1","is_group":true,"created":1453561861,"creator":"U04KB5WQR","is_archived":false,"is_mpim":true,"is_open":false,"last_read":"0000000000.000000","latest":null,"unread_count":0,"unread_count_display":0,"members":["U04KB5WQR","U0HLFUZLJ","U07518DTL"],"topic":{"value":"Group
39
+ messaging","creator":"U04KB5WQR","last_set":1453561861},"purpose":{"value":"Group
40
+ messaging with: @dblock @rubybot @player1","creator":"U04KB5WQR","last_set":1453561861}}}'
41
+ http_version:
42
+ recorded_at: Sat, 23 Jan 2016 15:19:46 GMT
43
+ recorded_with: VCR 3.0.0
@@ -0,0 +1,130 @@
1
+ ---
2
+ http_interactions:
3
+ - request:
4
+ method: post
5
+ uri: https://slack.com/api/users.list
6
+ body:
7
+ encoding: UTF-8
8
+ string: presence=true&token=token
9
+ headers:
10
+ Accept:
11
+ - application/json; charset=utf-8
12
+ User-Agent:
13
+ - Slack Ruby Client/0.5.0
14
+ Content-Type:
15
+ - application/x-www-form-urlencoded
16
+ Accept-Encoding:
17
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
18
+ response:
19
+ status:
20
+ code: 200
21
+ message: OK
22
+ headers:
23
+ Access-Control-Allow-Origin:
24
+ - '*'
25
+ Cache-Control:
26
+ - private, no-cache, no-store, must-revalidate
27
+ Content-Security-Policy:
28
+ - referrer no-referrer;
29
+ Content-Type:
30
+ - application/json; charset=utf-8
31
+ Date:
32
+ - Sun, 06 Dec 2015 20:18:45 GMT
33
+ Expires:
34
+ - Mon, 26 Jul 1997 05:00:00 GMT
35
+ Pragma:
36
+ - no-cache
37
+ Server:
38
+ - Apache
39
+ Strict-Transport-Security:
40
+ - max-age=31536000; includeSubDomains; preload
41
+ Vary:
42
+ - Accept-Encoding
43
+ X-Accepted-Oauth-Scopes:
44
+ - users:read,read
45
+ X-Content-Type-Options:
46
+ - nosniff
47
+ X-Oauth-Scopes:
48
+ - identify,read,post,client
49
+ X-Xss-Protection:
50
+ - '0'
51
+ Content-Length:
52
+ - '1450'
53
+ Connection:
54
+ - keep-alive
55
+ body:
56
+ encoding: ASCII-8BIT
57
+ string: '{"ok":true,"members":[{"id":"U092BDCLV","team_id":"T04KB5WQH","name":"artsy","deleted":false,"status":null,"color":"e0a729","real_name":"Artsy
58
+ Bot","tz":null,"tz_label":"Pacific Standard Time","tz_offset":-28800,"profile":{"bot_id":"B092B5DDG","image_24":"https:\/\/avatars.slack-edge.com\/2015-08-13\/9080316676_7bbab49314a0429c7f7d_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2015-08-13\/9080316676_7bbab49314a0429c7f7d_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2015-08-13\/9080316676_7bbab49314a0429c7f7d_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2015-08-13\/9080316676_7bbab49314a0429c7f7d_48.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2015-08-13\/9080316676_7bbab49314a0429c7f7d_48.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2015-08-13\/9080316676_7bbab49314a0429c7f7d_48.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2015-08-13\/9080316676_7bbab49314a0429c7f7d_48.jpg","image_original":"https:\/\/avatars.slack-edge.com\/2015-08-13\/9080316676_7bbab49314a0429c7f7d_original.jpg","first_name":"Artsy","last_name":"Bot","title":"Searches
59
+ Artsy.","real_name":"Artsy Bot","real_name_normalized":"Artsy Bot"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"presence":"away"},{"id":"U07KECJ77","team_id":"T04KB5WQH","name":"aws","deleted":false,"status":null,"color":"e96699","real_name":"AWS
60
+ Cloud","tz":null,"tz_label":"Pacific Standard Time","tz_offset":-28800,"profile":{"bot_id":"B07KECJ6R","image_24":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_48.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_48.jpg","image_original":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_original.jpg","first_name":"AWS","last_name":"Cloud","real_name":"AWS
61
+ Cloud","real_name_normalized":"AWS Cloud"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"presence":"away"},{"id":"U0EA7TZJN","team_id":"T04KB5WQH","name":"bar","deleted":false,"status":null,"color":"5b89d5","real_name":"","tz":null,"tz_label":"Pacific
62
+ Standard Time","tz_offset":-28800,"profile":{"bot_id":"B0EA31LQM","image_24":"https:\/\/avatars.slack-edge.com\/2015-11-11\/14346833313_f359ba59a1211d17912b_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2015-11-11\/14346833313_f359ba59a1211d17912b_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2015-11-11\/14346833313_f359ba59a1211d17912b_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2015-11-11\/14346833313_f359ba59a1211d17912b_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2015-11-11\/14346833313_f359ba59a1211d17912b_192.jpg","image_512":"https:\/\/avatars.slack-edge.com\/2015-11-11\/14346833313_f359ba59a1211d17912b_512.jpg","image_1024":"https:\/\/avatars.slack-edge.com\/2015-11-11\/14346833313_f359ba59a1211d17912b_512.jpg","image_original":"https:\/\/avatars.slack-edge.com\/2015-11-11\/14346833313_f359ba59a1211d17912b_original.jpg","real_name":"","real_name_normalized":""},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"presence":"away"},{"id":"U092V4E9L","team_id":"T04KB5WQH","name":"broskoski","deleted":false,"status":null,"color":"684b6c","real_name":"Cab","tz":"America\/Indiana\/Indianapolis","tz_label":"Eastern
63
+ Standard Time","tz_offset":-18000,"profile":{"first_name":"Cab","real_name":"Cab","real_name_normalized":"Cab","email":"cab@artsymail.com","image_24":"https:\/\/secure.gravatar.com\/avatar\/99621cbca6ea94706a8f5dcdc5e8af4a.jpg?s=24&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0017-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/99621cbca6ea94706a8f5dcdc5e8af4a.jpg?s=32&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0017-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/99621cbca6ea94706a8f5dcdc5e8af4a.jpg?s=48&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0017-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/99621cbca6ea94706a8f5dcdc5e8af4a.jpg?s=72&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0017-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/99621cbca6ea94706a8f5dcdc5e8af4a.jpg?s=192&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F7fa9%2Fimg%2Favatars%2Fava_0017-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/99621cbca6ea94706a8f5dcdc5e8af4a.jpg?s=512&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F7fa9%2Fimg%2Favatars%2Fava_0017-512.png"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"presence":"away"},{"id":"U04KB5WQR","team_id":"T04KB5WQH","name":"example","deleted":false,"status":null,"color":"9f69e7","real_name":"","tz":"America\/Indiana\/Indianapolis","tz_label":"Eastern
64
+ Standard Time","tz_offset":-18000,"profile":{"real_name":"","real_name_normalized":"","email":"user@example.org","image_24":"https:\/\/secure.gravatar.com\/avatar\/3d925b45ac07ec0ae5bd04888f6c5b61.jpg?s=24&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0015-24.png","image_32":"https:\/\/secure.gravatar.com\/avatar\/3d925b45ac07ec0ae5bd04888f6c5b61.jpg?s=32&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0015-32.png","image_48":"https:\/\/secure.gravatar.com\/avatar\/3d925b45ac07ec0ae5bd04888f6c5b61.jpg?s=48&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0015-48.png","image_72":"https:\/\/secure.gravatar.com\/avatar\/3d925b45ac07ec0ae5bd04888f6c5b61.jpg?s=72&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F66f9%2Fimg%2Favatars%2Fava_0015-72.png","image_192":"https:\/\/secure.gravatar.com\/avatar\/3d925b45ac07ec0ae5bd04888f6c5b61.jpg?s=192&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F7fa9%2Fimg%2Favatars%2Fava_0015-192.png","image_512":"https:\/\/secure.gravatar.com\/avatar\/3d925b45ac07ec0ae5bd04888f6c5b61.jpg?s=512&d=https%3A%2F%2Fslack.global.ssl.fastly.net%2F7fa9%2Fimg%2Favatars%2Fava_0015-512.png"},"is_admin":true,"is_owner":true,"is_primary_owner":true,"is_restricted":false,"is_ultra_restricted":false,"is_bot":false,"presence":"active"},{"id":"U04JZBDQQ","team_id":"T04KB5WQH","name":"foo","deleted":true,"profile":{"bot_id":"B04JZBDQC","image_24":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4645387956_44604ca32e800d947f22_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4645387956_44604ca32e800d947f22_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4645387956_44604ca32e800d947f22_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4645387956_44604ca32e800d947f22_72.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4645387956_44604ca32e800d947f22_192.jpg","image_original":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4645387956_44604ca32e800d947f22_original.jpg","real_name":"","real_name_normalized":""},"is_bot":true,"presence":"away"},{"id":"U04JPQ0JS","team_id":"T04KB5WQH","name":"gamebot","deleted":false,"status":null,"color":"4bbe2e","real_name":"Game
65
+ Bot","tz":null,"tz_label":"Pacific Standard Time","tz_offset":-28800,"profile":{"bot_id":"B04JPQ0JE","image_24":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4635825662_28d3661bf00dc6013442_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4635825662_28d3661bf00dc6013442_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4635825662_28d3661bf00dc6013442_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4635825662_28d3661bf00dc6013442_48.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4635825662_28d3661bf00dc6013442_48.jpg","image_original":"https:\/\/avatars.slack-edge.com\/2015-04-28\/4635825662_28d3661bf00dc6013442_original.jpg","first_name":"Game","last_name":"Bot","title":"Game
66
+ ons.","real_name":"Game Bot","real_name_normalized":"Game Bot"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"presence":"away"},{"id":"U06JGTU5V","team_id":"T04KB5WQH","name":"mathbot","deleted":false,"status":null,"color":"3c989f","real_name":"Math
67
+ Bot","tz":null,"tz_label":"Pacific Standard Time","tz_offset":-28800,"profile":{"bot_id":"B06JH1N93","image_24":"https:\/\/avatars.slack-edge.com\/2015-06-19\/6629501812_c507c80d735dfc75bbc8_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2015-06-19\/6629501812_c507c80d735dfc75bbc8_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2015-06-19\/6629501812_c507c80d735dfc75bbc8_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2015-06-19\/6629501812_c507c80d735dfc75bbc8_48.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2015-06-19\/6629501812_c507c80d735dfc75bbc8_48.jpg","image_original":"https:\/\/avatars.slack-edge.com\/2015-06-19\/6629501812_c507c80d735dfc75bbc8_original.jpg","first_name":"Math","last_name":"Bot","real_name":"Math
68
+ Bot","real_name_normalized":"Math Bot"},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"presence":"away"},{"id":"U07518DTL","team_id":"T04KB5WQH","name":"rubybot","deleted":false,"status":null,"color":"674b1b","real_name":"","tz":null,"tz_label":"Pacific
69
+ Standard Time","tz_offset":-28800,"profile":{"bot_id":"B0751JU2H","image_24":"https:\/\/avatars.slack-edge.com\/2015-07-02\/7171641589_359bf095c1fe0841e582_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2015-07-02\/7171641589_359bf095c1fe0841e582_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2015-07-02\/7171641589_359bf095c1fe0841e582_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2015-07-02\/7171641589_359bf095c1fe0841e582_48.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2015-07-02\/7171641589_359bf095c1fe0841e582_48.jpg","image_original":"https:\/\/avatars.slack-edge.com\/2015-07-02\/7171641589_359bf095c1fe0841e582_original.jpg","real_name":"","real_name_normalized":""},"is_admin":false,"is_owner":false,"is_primary_owner":false,"is_restricted":false,"is_ultra_restricted":false,"is_bot":true,"presence":"away"}]}'
70
+ http_version:
71
+ recorded_at: Sun, 06 Dec 2015 20:18:46 GMT
72
+ - request:
73
+ method: post
74
+ uri: https://slack.com/api/users.info
75
+ body:
76
+ encoding: UTF-8
77
+ string: token=token
78
+ headers:
79
+ Accept:
80
+ - application/json; charset=utf-8
81
+ User-Agent:
82
+ - Slack Ruby Client/0.5.4
83
+ Content-Type:
84
+ - application/x-www-form-urlencoded
85
+ Accept-Encoding:
86
+ - gzip;q=1.0,deflate;q=0.6,identity;q=0.3
87
+ response:
88
+ status:
89
+ code: 200
90
+ message: OK
91
+ headers:
92
+ Access-Control-Allow-Origin:
93
+ - '*'
94
+ Cache-Control:
95
+ - private, no-cache, no-store, must-revalidate
96
+ Content-Security-Policy:
97
+ - referrer no-referrer;
98
+ Content-Type:
99
+ - application/json; charset=utf-8
100
+ Date:
101
+ - Fri, 22 Jan 2016 19:17:18 GMT
102
+ Expires:
103
+ - Mon, 26 Jul 1997 05:00:00 GMT
104
+ Pragma:
105
+ - no-cache
106
+ Server:
107
+ - Apache
108
+ Strict-Transport-Security:
109
+ - max-age=31536000; includeSubDomains; preload
110
+ Vary:
111
+ - Accept-Encoding
112
+ X-Accepted-Oauth-Scopes:
113
+ - users:read,read
114
+ X-Content-Type-Options:
115
+ - nosniff
116
+ X-Oauth-Scopes:
117
+ - identify,read,post,client
118
+ X-Xss-Protection:
119
+ - '0'
120
+ Content-Length:
121
+ - '287'
122
+ Connection:
123
+ - keep-alive
124
+ body:
125
+ encoding: UTF-8
126
+ string: '{"ok":true,"user":{"id":"U07KECJ77","team_id":"T04KB5WQH","name":"aws","deleted":true,"profile":{"bot_id":"B07KECJ6R","image_24":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_24.jpg","image_32":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_32.jpg","image_48":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_48.jpg","image_72":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_48.jpg","image_192":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_48.jpg","image_original":"https:\/\/avatars.slack-edge.com\/2015-07-14\/7660472085_4755a86e204c9706c84f_original.jpg","first_name":"AWS","last_name":"Cloud","real_name":"AWS
127
+ Cloud","real_name_normalized":"AWS Cloud"},"is_bot":true}}'
128
+ http_version:
129
+ recorded_at: Fri, 22 Jan 2016 19:17:18 GMT
130
+ recorded_with: VCR 3.0.1
@@ -69,11 +69,15 @@ RSpec.describe 'integration test', skip: !ENV['SLACK_API_TOKEN'] && 'missing SLA
69
69
  start_server
70
70
  end
71
71
 
72
+ let(:channel) { "@#{client.self['name']}" }
73
+
72
74
  it 'responds to message' do
73
75
  message = SecureRandom.hex
74
76
 
75
77
  client.on :message do |data|
76
78
  logger.debug data
79
+ # concurrent execution of tests causes messages to arrive in any order
80
+ next unless data['text'] == message
77
81
  expect(data['text']).to eq message
78
82
  expect(data['subtype']).to eq 'bot_message'
79
83
  logger.debug 'client.stop!'
@@ -81,8 +85,13 @@ RSpec.describe 'integration test', skip: !ENV['SLACK_API_TOKEN'] && 'missing SLA
81
85
  client.stop!
82
86
  end
83
87
 
84
- logger.debug "chat_postMessage, channel=@#{client.self['name']}, message=#{message}"
85
- client.web_client.chat_postMessage channel: "@#{client.self['name']}", text: message
88
+ logger.debug "chat_postMessage, channel=#{channel}, message=#{message}"
89
+ client.web_client.chat_postMessage channel: channel, text: message
90
+ end
91
+
92
+ it 'sends message' do
93
+ client.message(channel: channel, text: 'Hello world!')
94
+ client.stop!
86
95
  end
87
96
  end
88
97
 
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Slack::Web::Api::Endpoints::Channels do
4
+ let(:client) { Slack::Web::Client.new }
5
+ context 'channels' do
6
+ it 'info', vcr: { cassette_name: 'web/channels_info' } do
7
+ json = client.channels_info(channel: '#general')
8
+ expect(json['channel']['name']).to eq 'general'
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,11 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Slack::Web::Api::Endpoints::Groups do
4
+ let(:client) { Slack::Web::Client.new }
5
+ context 'groups' do
6
+ it 'info', vcr: { cassette_name: 'web/groups_info' } do
7
+ json = client.groups_info(channel: '#mpdm-dblock--rubybot--player1-1')
8
+ expect(json['group']['name']).to eq 'mpdm-dblock--rubybot--player1-1'
9
+ end
10
+ end
11
+ end
@@ -9,5 +9,9 @@ RSpec.describe Slack::Web::Api::Endpoints::Users do
9
9
  expect(json['members'].size).to eq 9
10
10
  expect(json['members'].first['presence']).to eq 'away'
11
11
  end
12
+ it 'info', vcr: { cassette_name: 'web/users_info' } do
13
+ json = client.users_info(user: '@aws')
14
+ expect(json['user']['name']).to eq 'aws'
15
+ end
12
16
  end
13
17
  end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Slack::Web::Api::Mixins::Channels do
4
+ let(:klass) do
5
+ Class.new do
6
+ include Slack::Web::Api::Mixins::Channels
7
+ end
8
+ end
9
+ subject do
10
+ klass.new
11
+ end
12
+ before do
13
+ allow(subject).to receive(:channels_list).and_return(
14
+ 'channels' => [{
15
+ 'id' => 'CDEADBEEF',
16
+ 'name' => 'general'
17
+ }]
18
+ )
19
+ end
20
+ context '#channels_id' do
21
+ it 'leaves channels specified by ID alone' do
22
+ expect(subject.channels_id(channel: 'C123456')).to eq('ok' => true, 'channel' => { 'id' => 'C123456' })
23
+ end
24
+ it 'translates a channel that starts with a #' do
25
+ expect(subject.channels_id(channel: '#general')).to eq('ok' => true, 'channel' => { 'id' => 'CDEADBEEF' })
26
+ end
27
+ it 'fails with an exception' do
28
+ expect { subject.channels_id(channel: '#invalid') }.to raise_error Slack::Web::Api::Error, 'channel_not_found'
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Slack::Web::Api::Mixins::Groups do
4
+ let(:klass) do
5
+ Class.new do
6
+ include Slack::Web::Api::Mixins::Groups
7
+ end
8
+ end
9
+ subject do
10
+ klass.new
11
+ end
12
+ before do
13
+ allow(subject).to receive(:groups_list).and_return(
14
+ 'groups' => [{
15
+ 'id' => 'CDEADBEEF',
16
+ 'name' => 'general'
17
+ }]
18
+ )
19
+ end
20
+ context '#groups_id' do
21
+ it 'leaves groups specified by ID alone' do
22
+ expect(subject.groups_id(channel: 'C123456')).to eq('ok' => true, 'group' => { 'id' => 'C123456' })
23
+ end
24
+ it 'translates a channel that starts with a #' do
25
+ expect(subject.groups_id(channel: '#general')).to eq('ok' => true, 'group' => { 'id' => 'CDEADBEEF' })
26
+ end
27
+ it 'fails with an exception' do
28
+ expect { subject.groups_id(channel: '#invalid') }.to raise_error Slack::Web::Api::Error, 'channel_not_found'
29
+ end
30
+ end
31
+ end
@@ -0,0 +1,31 @@
1
+ require 'spec_helper'
2
+
3
+ RSpec.describe Slack::Web::Api::Mixins::Users do
4
+ let(:klass) do
5
+ Class.new do
6
+ include Slack::Web::Api::Mixins::Users
7
+ end
8
+ end
9
+ subject do
10
+ klass.new
11
+ end
12
+ before do
13
+ allow(subject).to receive(:users_list).and_return(
14
+ 'members' => [{
15
+ 'id' => 'UDEADBEEF',
16
+ 'name' => 'aws'
17
+ }]
18
+ )
19
+ end
20
+ context '#users_id' do
21
+ it 'leaves users specified by ID alone' do
22
+ expect(subject.users_id(user: 'U123456')).to eq('ok' => true, 'user' => { 'id' => 'U123456' })
23
+ end
24
+ it 'translates a user that starts with a #' do
25
+ expect(subject.users_id(user: '@aws')).to eq('ok' => true, 'user' => { 'id' => 'UDEADBEEF' })
26
+ end
27
+ it 'fails with an exception' do
28
+ expect { subject.users_id(user: '@foo') }.to raise_error Slack::Web::Api::Error, 'user_not_found'
29
+ end
30
+ end
31
+ end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: slack-ruby-client
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.3
4
+ version: 0.5.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Daniel Doubrovkine
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-01-12 00:00:00.000000000 Z
11
+ date: 2016-01-23 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -270,6 +270,13 @@ files:
270
270
  - lib/slack/web/api/endpoints/usergroups.rb
271
271
  - lib/slack/web/api/endpoints/users.rb
272
272
  - lib/slack/web/api/error.rb
273
+ - lib/slack/web/api/mixins.rb
274
+ - lib/slack/web/api/mixins/channels.id.json
275
+ - lib/slack/web/api/mixins/channels.id.rb
276
+ - lib/slack/web/api/mixins/groups.id.json
277
+ - lib/slack/web/api/mixins/groups.id.rb
278
+ - lib/slack/web/api/mixins/users.id.json
279
+ - lib/slack/web/api/mixins/users.id.rb
273
280
  - lib/slack/web/api/patches/chat.1.text-attachments-required.patch
274
281
  - lib/slack/web/api/patches/chat.2.attachments-json.patch
275
282
  - lib/slack/web/api/schema/group.json
@@ -291,7 +298,10 @@ files:
291
298
  - spec/fixtures/slack/web/429_error.yml
292
299
  - spec/fixtures/slack/web/auth_test_error.yml
293
300
  - spec/fixtures/slack/web/auth_test_success.yml
301
+ - spec/fixtures/slack/web/channels_info.yml
302
+ - spec/fixtures/slack/web/groups_info.yml
294
303
  - spec/fixtures/slack/web/rtm_start.yml
304
+ - spec/fixtures/slack/web/users_info.yml
295
305
  - spec/fixtures/slack/web/users_list.yml
296
306
  - spec/integration/integration_spec.rb
297
307
  - spec/slack/config_spec.rb
@@ -305,9 +315,14 @@ files:
305
315
  - spec/slack/slack_spec.rb
306
316
  - spec/slack/version_spec.rb
307
317
  - spec/slack/web/api/endpoints/auth_spec.rb
318
+ - spec/slack/web/api/endpoints/channels_spec.rb
308
319
  - spec/slack/web/api/endpoints/chat_spec.rb
320
+ - spec/slack/web/api/endpoints/groups_spec.rb
309
321
  - spec/slack/web/api/endpoints/users_spec.rb
310
322
  - spec/slack/web/api/error_spec.rb
323
+ - spec/slack/web/api/mixins/channels_spec.rb
324
+ - spec/slack/web/api/mixins/groups_spec.rb
325
+ - spec/slack/web/api/mixins/users_spec.rb
311
326
  - spec/slack/web/client_spec.rb
312
327
  - spec/spec_helper.rb
313
328
  - spec/support/queue_with_timeout.rb
@@ -343,7 +358,10 @@ test_files:
343
358
  - spec/fixtures/slack/web/429_error.yml
344
359
  - spec/fixtures/slack/web/auth_test_error.yml
345
360
  - spec/fixtures/slack/web/auth_test_success.yml
361
+ - spec/fixtures/slack/web/channels_info.yml
362
+ - spec/fixtures/slack/web/groups_info.yml
346
363
  - spec/fixtures/slack/web/rtm_start.yml
364
+ - spec/fixtures/slack/web/users_info.yml
347
365
  - spec/fixtures/slack/web/users_list.yml
348
366
  - spec/integration/integration_spec.rb
349
367
  - spec/slack/config_spec.rb
@@ -357,9 +375,14 @@ test_files:
357
375
  - spec/slack/slack_spec.rb
358
376
  - spec/slack/version_spec.rb
359
377
  - spec/slack/web/api/endpoints/auth_spec.rb
378
+ - spec/slack/web/api/endpoints/channels_spec.rb
360
379
  - spec/slack/web/api/endpoints/chat_spec.rb
380
+ - spec/slack/web/api/endpoints/groups_spec.rb
361
381
  - spec/slack/web/api/endpoints/users_spec.rb
362
382
  - spec/slack/web/api/error_spec.rb
383
+ - spec/slack/web/api/mixins/channels_spec.rb
384
+ - spec/slack/web/api/mixins/groups_spec.rb
385
+ - spec/slack/web/api/mixins/users_spec.rb
363
386
  - spec/slack/web/client_spec.rb
364
387
  - spec/spec_helper.rb
365
388
  - spec/support/queue_with_timeout.rb