slack-ruby-client 0.3.1 → 0.4.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.
- checksums.yaml +4 -4
- data/.rubocop_todo.yml +21 -10
- data/CHANGELOG.md +21 -11
- data/CONTRIBUTING.md +20 -0
- data/README.md +5 -1
- data/examples/hi_web/hi.rb +1 -3
- data/examples/new_ticket/Gemfile +3 -0
- data/examples/new_ticket/new_ticket.rb +25 -0
- data/lib/slack-ruby-client.rb +1 -0
- data/lib/slack/version.rb +1 -1
- data/lib/slack/web/api/endpoints.rb +2 -0
- data/lib/slack/web/api/endpoints/channels.rb +2 -0
- data/lib/slack/web/api/endpoints/chat.rb +7 -1
- data/lib/slack/web/api/endpoints/groups.rb +2 -0
- data/lib/slack/web/api/endpoints/im.rb +2 -0
- data/lib/slack/web/api/endpoints/mpim.rb +81 -0
- data/lib/slack/web/api/endpoints/rtm.rb +2 -0
- data/lib/slack/web/api/endpoints/team.rb +17 -0
- data/lib/slack/web/api/patches/chat.1.text-attachments-required.patch +13 -0
- data/lib/slack/web/api/patches/chat.2.attachments-json.patch +17 -0
- data/lib/slack/web/api/tasks/generate.rake +6 -1
- data/slack-ruby-client.gemspec +2 -1
- data/slack.png +0 -0
- data/spec/slack/web/api/endpoints/chat_spec.rb +33 -0
- metadata +55 -33
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: cdfb697bdb471743bc8c46c29e685af650570952
|
|
4
|
+
data.tar.gz: 0e0b770c177930831491961f36097cf6fc1c1c17
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1e79611aef6f955e67f2a250a7c0a48080634ba61066375cbca7882897b41e5f0043f60d5bd878dddaa67ca0b8cc66bde5a48cb4edc9bb82c567b5e216aa8c59
|
|
7
|
+
data.tar.gz: 38d866a7132a1981866bb055a24ef8ba6ee8661007b46662dc97e669f335850fa69c01bdd57dd84c2caa0278afff6e70a7eb669e20d2307cff83bef5f836aa9b
|
data/.rubocop_todo.yml
CHANGED
|
@@ -1,38 +1,49 @@
|
|
|
1
|
-
# This configuration was generated by
|
|
2
|
-
#
|
|
1
|
+
# This configuration was generated by
|
|
2
|
+
# `rubocop --auto-gen-config`
|
|
3
|
+
# on 2015-11-08 16:15:14 -0500 using RuboCop version 0.35.0.
|
|
3
4
|
# The point is for the user to remove these configuration records
|
|
4
5
|
# one by one as the offenses are removed from the code base.
|
|
5
6
|
# Note that changes in the inspected code, or installation of new
|
|
6
7
|
# versions of RuboCop, may require this file to be generated again.
|
|
7
8
|
|
|
8
|
-
# Offense count:
|
|
9
|
+
# Offense count: 3
|
|
9
10
|
Metrics/AbcSize:
|
|
10
|
-
Max:
|
|
11
|
+
Max: 19
|
|
11
12
|
|
|
12
|
-
# Offense count:
|
|
13
|
+
# Offense count: 178
|
|
13
14
|
# Configuration parameters: AllowURI, URISchemes.
|
|
14
15
|
Metrics/LineLength:
|
|
15
|
-
Max:
|
|
16
|
+
Max: 174
|
|
16
17
|
|
|
17
18
|
# Offense count: 3
|
|
18
19
|
# Configuration parameters: CountComments.
|
|
19
20
|
Metrics/MethodLength:
|
|
20
21
|
Max: 19
|
|
21
22
|
|
|
22
|
-
# Offense count:
|
|
23
|
+
# Offense count: 1
|
|
24
|
+
Style/AsciiComments:
|
|
25
|
+
Exclude:
|
|
26
|
+
- 'lib/slack/web/api/endpoints/team.rb'
|
|
27
|
+
|
|
28
|
+
# Offense count: 36
|
|
29
|
+
# Configuration parameters: Exclude.
|
|
23
30
|
Style/Documentation:
|
|
24
31
|
Enabled: false
|
|
25
32
|
|
|
26
33
|
# Offense count: 1
|
|
27
34
|
# Configuration parameters: Exclude.
|
|
28
35
|
Style/FileName:
|
|
29
|
-
|
|
36
|
+
Exclude:
|
|
37
|
+
- 'lib/slack-ruby-client.rb'
|
|
30
38
|
|
|
31
|
-
# Offense count:
|
|
39
|
+
# Offense count: 11
|
|
32
40
|
# Configuration parameters: EnforcedStyle, SupportedStyles.
|
|
33
41
|
Style/MethodName:
|
|
34
42
|
Enabled: false
|
|
35
43
|
|
|
36
44
|
# Offense count: 3
|
|
37
45
|
Style/ModuleFunction:
|
|
38
|
-
|
|
46
|
+
Exclude:
|
|
47
|
+
- 'lib/slack/config.rb'
|
|
48
|
+
- 'lib/slack/real_time/config.rb'
|
|
49
|
+
- 'lib/slack/web/config.rb'
|
data/CHANGELOG.md
CHANGED
|
@@ -1,20 +1,30 @@
|
|
|
1
|
+
### 0.4.0 (11/8/2015)
|
|
2
|
+
|
|
3
|
+
* Added `team_integrationLogs` to Web API - [@dblock](https://github.com/dblock).
|
|
4
|
+
* [#11](https://github.com/dblock/slack-ruby-client/pull/11) - Web API `chat_postMessage` errors only if both `attachments` and `text` are missing - [@dblock](https://github.com/dblock).
|
|
5
|
+
* [#20](https://github.com/dblock/slack-ruby-client/issues/20) - Web API `chat_postMessage` will automatically `to_json` attachments - [@dblock](https://github.com/dblock).
|
|
6
|
+
* Added `mpim_aware` to `rtm_start` to Web API - [@dblock](https://github.com/dblock).
|
|
7
|
+
* Added `mpim_close`, `mpim_history`, `mpim_list`, `mpim_mark` and `mpim_open` to Web API - [@dblock](https://github.com/dblock).
|
|
8
|
+
* Added `unreads` to `channels_history`, `groups_history` and `im_history` to Web API - [@dblock](https://github.com/dblock).
|
|
9
|
+
* Added `stars_add` and `stars_remove` to Web API - [@dblock](https://github.com/dblock).
|
|
10
|
+
|
|
1
11
|
### 0.3.1 (10/16/2015)
|
|
2
12
|
|
|
3
|
-
* Added `
|
|
4
|
-
* Added `attachments`, `parse` and `link_names` to `
|
|
13
|
+
* Added `stars_list`, `stars_add` and `stars_remove` to Web API - [@dblock](https://github.com/dblock).
|
|
14
|
+
* Added `attachments`, `parse` and `link_names` to `chat_update` in Web API - [@dblock](https://github.com/dblock).
|
|
5
15
|
|
|
6
16
|
### 0.3.0 (9/1/2015)
|
|
7
17
|
|
|
8
|
-
* Added `team.info` and `accessLogs` - [@dblock](https://github.com/dblock).
|
|
9
|
-
* Removed obsolete `presence` API - [@dblock](https://github.com/dblock).
|
|
10
|
-
* Added `
|
|
11
|
-
* Added `
|
|
12
|
-
* Added `
|
|
13
|
-
* Added `
|
|
14
|
-
* Added `
|
|
15
|
-
* Added `
|
|
18
|
+
* Added `team.info` and `accessLogs` to Web API - [@dblock](https://github.com/dblock).
|
|
19
|
+
* Removed obsolete `presence` Web API - [@dblock](https://github.com/dblock).
|
|
20
|
+
* Added `pins_add`, `pins_list` and `pins_remove` from Web API - [@dblock](https://github.com/dblock).
|
|
21
|
+
* Added `presence` to `users_list` in Web API - [@dblock](https://github.com/dblock).
|
|
22
|
+
* Added `groups_info` to Web API - [@dblock](https://github.com/dblock).
|
|
23
|
+
* Added `inclusive` to `groups_history` and `im_history` in Web API - [@dblock](https://github.com/dblock).
|
|
24
|
+
* Added `files_delete` to Web API - [@dblock](https://github.com/dblock).
|
|
25
|
+
* Added `as_user` to `chat_postMessage` in Web API - [@dblock](https://github.com/dblock).
|
|
16
26
|
* Use API reference schema from [github.com/dblock/slack-api-ref](https://github.com/dblock/slack-api-ref) - [@dblock](https://github.com/dblock).
|
|
17
|
-
* Added `
|
|
27
|
+
* Added `reactions_add`, `reactions_list`, `reactions_get` and `reactions_remove` to Web API - [@jakedahn](https://github.com/jakedahn)
|
|
18
28
|
|
|
19
29
|
### 0.2.1 (8/2/2015)
|
|
20
30
|
|
data/CONTRIBUTING.md
CHANGED
|
@@ -63,6 +63,26 @@ Ruby style is enforced with [Rubocop](https://github.com/bbatsov/rubocop). Run `
|
|
|
63
63
|
|
|
64
64
|
Make sure that `bundle exec rake` completes without errors.
|
|
65
65
|
|
|
66
|
+
### Update Slack Web API
|
|
67
|
+
|
|
68
|
+
Slack Web API is updated from https://github.com/dblock/slack-api-ref, a maintained, machine-readable version of Slack API Docs, generated by scraping [api.slack.com](https://api.slack.com). To update the Web API from the latest definition run the following Rake task.
|
|
69
|
+
|
|
70
|
+
```
|
|
71
|
+
rake slack:web:api:update
|
|
72
|
+
```
|
|
73
|
+
|
|
74
|
+
#### Patching Slack Web API
|
|
75
|
+
|
|
76
|
+
Sometimes it's necessary to patch auto-generated Slack Web API methods. For example, we want to help clients with calling `to_json` on the `attachments` parameter sent to `chat_postMessage`. See [#20](https://github.com/dblock/slack-ruby-client/issues/20).
|
|
77
|
+
|
|
78
|
+
Make a change to a generated file, for example `lib/slack/web/api/endpoints/chat.rb` and generate a patch.
|
|
79
|
+
|
|
80
|
+
```
|
|
81
|
+
git diff HEAD lib/slack/web/api/endpoints/chat.rb > lib/slack/web/api/patches/chat.1.patch
|
|
82
|
+
```
|
|
83
|
+
|
|
84
|
+
Run `rake slack:web:api:update` to ensure that the patch is cleanly applied. Implement a test for the added or modified functionality and commit the patch file.
|
|
85
|
+
|
|
66
86
|
### Write Documentation
|
|
67
87
|
|
|
68
88
|
Document any external behavior in the [README](README.md).
|
data/README.md
CHANGED
|
@@ -4,7 +4,11 @@ Slack Ruby Client
|
|
|
4
4
|
[](http://badge.fury.io/rb/slack-ruby-client)
|
|
5
5
|
[](https://travis-ci.org/dblock/slack-ruby-client)
|
|
6
6
|
|
|
7
|
-
A Ruby client for the Slack [Web](https://api.slack.com/web) and [RealTime Messaging](https://api.slack.com/rtm) APIs.
|
|
7
|
+
A Ruby client for the Slack [Web](https://api.slack.com/web) and [RealTime Messaging](https://api.slack.com/rtm) APIs.
|
|
8
|
+
|
|
9
|
+
Writing a bot? Try [slack-ruby-bot](https://github.com/dblock/slack-ruby-bot) instead.
|
|
10
|
+
|
|
11
|
+

|
|
8
12
|
|
|
9
13
|
## Installation
|
|
10
14
|
|
data/examples/hi_web/hi.rb
CHANGED
|
@@ -9,6 +9,4 @@ client = Slack::Web::Client.new
|
|
|
9
9
|
|
|
10
10
|
client.auth_test
|
|
11
11
|
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
client.chat_postMessage(channel: general_channel['id'], text: 'Hello World', as_user: true)
|
|
12
|
+
client.chat_postMessage(channel: '#general', text: 'Hello World', as_user: true)
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
require 'slack-ruby-client'
|
|
2
|
+
|
|
3
|
+
Slack.configure do |config|
|
|
4
|
+
config.token = ENV['SLACK_API_TOKEN']
|
|
5
|
+
fail 'Missing ENV[SLACK_API_TOKEN]!' unless config.token
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
client = Slack::Web::Client.new
|
|
9
|
+
|
|
10
|
+
client.auth_test
|
|
11
|
+
|
|
12
|
+
client.chat_postMessage(
|
|
13
|
+
channel: '#general',
|
|
14
|
+
as_user: true,
|
|
15
|
+
attachments: [
|
|
16
|
+
{
|
|
17
|
+
fallback: "Ticket #1943: Can't rest my password - https://groove.hq/path/to/ticket/1943",
|
|
18
|
+
pretext: 'New ticket from Andrea Lee',
|
|
19
|
+
title: "Ticket #1943: Can't reset my password",
|
|
20
|
+
title_link: 'https://groove.hq/path/to/ticket/1943',
|
|
21
|
+
text: 'Help! I tried to reset my password but nothing happened!',
|
|
22
|
+
color: '#7CD197'
|
|
23
|
+
}
|
|
24
|
+
]
|
|
25
|
+
)
|
data/lib/slack-ruby-client.rb
CHANGED
data/lib/slack/version.rb
CHANGED
|
@@ -8,6 +8,7 @@ require 'slack/web/api/endpoints/emoji'
|
|
|
8
8
|
require 'slack/web/api/endpoints/files'
|
|
9
9
|
require 'slack/web/api/endpoints/groups'
|
|
10
10
|
require 'slack/web/api/endpoints/im'
|
|
11
|
+
require 'slack/web/api/endpoints/mpim'
|
|
11
12
|
require 'slack/web/api/endpoints/oauth'
|
|
12
13
|
require 'slack/web/api/endpoints/pins'
|
|
13
14
|
require 'slack/web/api/endpoints/reactions'
|
|
@@ -29,6 +30,7 @@ module Slack
|
|
|
29
30
|
include Files
|
|
30
31
|
include Groups
|
|
31
32
|
include Im
|
|
33
|
+
include Mpim
|
|
32
34
|
include Oauth
|
|
33
35
|
include Pins
|
|
34
36
|
include Reactions
|
|
@@ -42,6 +42,8 @@ module Slack
|
|
|
42
42
|
# Start of time range of messages to include in results.
|
|
43
43
|
# @option options [Object] :inclusive
|
|
44
44
|
# Include messages with latest or oldest timestamp in results.
|
|
45
|
+
# @option options [Object] :unreads
|
|
46
|
+
# Include unread_count_display in the output?.
|
|
45
47
|
# @see https://api.slack.com/methods/channels.history
|
|
46
48
|
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/channels.history.json
|
|
47
49
|
def channels_history(options = {})
|
|
@@ -49,7 +49,13 @@ module Slack
|
|
|
49
49
|
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/chat.postMessage.json
|
|
50
50
|
def chat_postMessage(options = {})
|
|
51
51
|
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
52
|
-
throw ArgumentError.new('Required arguments :text missing') if options[:text].nil?
|
|
52
|
+
throw ArgumentError.new('Required arguments :text or :attachments missing') if options[:text].nil? && options[:attachments].nil?
|
|
53
|
+
# attachments must be passed as an encoded JSON string
|
|
54
|
+
if options.key?(:attachments)
|
|
55
|
+
attachments = options[:attachments]
|
|
56
|
+
attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
|
57
|
+
options = options.merge(attachments: attachments)
|
|
58
|
+
end
|
|
53
59
|
post('chat.postMessage', options)
|
|
54
60
|
end
|
|
55
61
|
|
|
@@ -66,6 +66,8 @@ module Slack
|
|
|
66
66
|
# Start of time range of messages to include in results.
|
|
67
67
|
# @option options [Object] :inclusive
|
|
68
68
|
# Include messages with latest or oldest timestamp in results.
|
|
69
|
+
# @option options [Object] :unreads
|
|
70
|
+
# Include unread_count_display in the output?.
|
|
69
71
|
# @see https://api.slack.com/methods/groups.history
|
|
70
72
|
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/groups.history.json
|
|
71
73
|
def groups_history(options = {})
|
|
@@ -30,6 +30,8 @@ module Slack
|
|
|
30
30
|
# Start of time range of messages to include in results.
|
|
31
31
|
# @option options [Object] :inclusive
|
|
32
32
|
# Include messages with latest or oldest timestamp in results.
|
|
33
|
+
# @option options [Object] :unreads
|
|
34
|
+
# Include unread_count_display in the output?.
|
|
33
35
|
# @see https://api.slack.com/methods/im.history
|
|
34
36
|
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/im.history.json
|
|
35
37
|
def im_history(options = {})
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
# This file was auto-generated by lib/slack/web/api/tasks/generate.rake
|
|
2
|
+
|
|
3
|
+
module Slack
|
|
4
|
+
module Web
|
|
5
|
+
module Api
|
|
6
|
+
module Endpoints
|
|
7
|
+
module Mpim
|
|
8
|
+
#
|
|
9
|
+
# This method closes a multiparty direct message channel.
|
|
10
|
+
#
|
|
11
|
+
# @option options [channel] :channel
|
|
12
|
+
# MPIM to close.
|
|
13
|
+
# @see https://api.slack.com/methods/mpim.close
|
|
14
|
+
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/mpim.close.json
|
|
15
|
+
def mpim_close(options = {})
|
|
16
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
17
|
+
post('mpim.close', options)
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
#
|
|
21
|
+
# This method returns a portion of messages/events from the specified multiparty direct message channel.
|
|
22
|
+
# To read the entire history for a multiparty direct message, call the method with no latest or
|
|
23
|
+
# oldest arguments, and then continue paging using the instructions below.
|
|
24
|
+
#
|
|
25
|
+
# @option options [channel] :channel
|
|
26
|
+
# Multiparty direct message to fetch history for.
|
|
27
|
+
# @option options [timestamp] :latest
|
|
28
|
+
# End of time range of messages to include in results.
|
|
29
|
+
# @option options [timestamp] :oldest
|
|
30
|
+
# Start of time range of messages to include in results.
|
|
31
|
+
# @option options [Object] :inclusive
|
|
32
|
+
# Include messages with latest or oldest timestamp in results.
|
|
33
|
+
# @option options [Object] :unreads
|
|
34
|
+
# Include unread_count_display in the output?.
|
|
35
|
+
# @see https://api.slack.com/methods/mpim.history
|
|
36
|
+
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/mpim.history.json
|
|
37
|
+
def mpim_history(options = {})
|
|
38
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
39
|
+
post('mpim.history', options)
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
#
|
|
43
|
+
# This method returns a list of all multiparty direct message channels that the user has.
|
|
44
|
+
#
|
|
45
|
+
# @see https://api.slack.com/methods/mpim.list
|
|
46
|
+
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/mpim.list.json
|
|
47
|
+
def mpim_list(options = {})
|
|
48
|
+
post('mpim.list', options)
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
#
|
|
52
|
+
# This method moves the read cursor in a multiparty direct message channel.
|
|
53
|
+
#
|
|
54
|
+
# @option options [channel] :channel
|
|
55
|
+
# multiparty direct message channel to set reading cursor in.
|
|
56
|
+
# @option options [timestamp] :ts
|
|
57
|
+
# Timestamp of the most recently seen message.
|
|
58
|
+
# @see https://api.slack.com/methods/mpim.mark
|
|
59
|
+
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/mpim.mark.json
|
|
60
|
+
def mpim_mark(options = {})
|
|
61
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
62
|
+
throw ArgumentError.new('Required arguments :ts missing') if options[:ts].nil?
|
|
63
|
+
post('mpim.mark', options)
|
|
64
|
+
end
|
|
65
|
+
|
|
66
|
+
#
|
|
67
|
+
# This method opens a multiparty direct message.
|
|
68
|
+
#
|
|
69
|
+
# @option options [Object] :users
|
|
70
|
+
# Comma separated lists of users. The ordering of the users is preserved whenever a MPIM group is returned.
|
|
71
|
+
# @see https://api.slack.com/methods/mpim.open
|
|
72
|
+
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/mpim.open.json
|
|
73
|
+
def mpim_open(options = {})
|
|
74
|
+
throw ArgumentError.new('Required arguments :users missing') if options[:users].nil?
|
|
75
|
+
post('mpim.open', options)
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
end
|
|
81
|
+
end
|
|
@@ -13,6 +13,8 @@ module Slack
|
|
|
13
13
|
# Return timestamp only for latest message object of each channel (improves performance).
|
|
14
14
|
# @option options [Object] :no_unreads
|
|
15
15
|
# Skip unread counts for each channel (improves performance).
|
|
16
|
+
# @option options [Object] :mpim_aware
|
|
17
|
+
# Returns MPIMs to the client in the API response.
|
|
16
18
|
# @see https://api.slack.com/methods/rtm.start
|
|
17
19
|
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/rtm.start.json
|
|
18
20
|
def rtm_start(options = {})
|
|
@@ -22,6 +22,23 @@ module Slack
|
|
|
22
22
|
def team_info(options = {})
|
|
23
23
|
post('team.info', options)
|
|
24
24
|
end
|
|
25
|
+
|
|
26
|
+
#
|
|
27
|
+
# This method lists the integration activity logs for a team, including when integrations are added, modified and removed. This method can only be called by Admins.
|
|
28
|
+
#
|
|
29
|
+
# @option options [Object] :service_id
|
|
30
|
+
# Filter logs to this service. Defaults to all logs.
|
|
31
|
+
# @option options [Object] :app_id
|
|
32
|
+
# Filter logs to this API application. Defaults to all logs.
|
|
33
|
+
# @option options [user] :user
|
|
34
|
+
# Filter logs generated by this user’s actions. Defaults to all logs.
|
|
35
|
+
# @option options [Object] :change_type
|
|
36
|
+
# Filter logs with this change type. Defaults to all logs.
|
|
37
|
+
# @see https://api.slack.com/methods/team.integrationLogs
|
|
38
|
+
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/team.integrationLogs.json
|
|
39
|
+
def team_integrationLogs(options = {})
|
|
40
|
+
post('team.integrationLogs', options)
|
|
41
|
+
end
|
|
25
42
|
end
|
|
26
43
|
end
|
|
27
44
|
end
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
diff --git a/lib/slack/web/api/endpoints/chat.rb b/lib/slack/web/api/endpoints/chat.rb
|
|
2
|
+
index 1f7a8d7..2ec4bed 100644
|
|
3
|
+
--- a/lib/slack/web/api/endpoints/chat.rb
|
|
4
|
+
+++ b/lib/slack/web/api/endpoints/chat.rb
|
|
5
|
+
@@ -49,7 +49,7 @@ module Slack
|
|
6
|
+
# @see https://github.com/dblock/slack-api-ref/blob/master/methods/chat.postMessage.json
|
|
7
|
+
def chat_postMessage(options = {})
|
|
8
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
9
|
+
- throw ArgumentError.new('Required arguments :text missing') if options[:text].nil?
|
|
10
|
+
+ throw ArgumentError.new('Required arguments :text or :attachments missing') if options[:text].nil? && options[:attachments].nil?
|
|
11
|
+
post('chat.postMessage', options)
|
|
12
|
+
end
|
|
13
|
+
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
diff --git a/lib/slack/web/api/endpoints/chat.rb b/lib/slack/web/api/endpoints/chat.rb
|
|
2
|
+
index 1f7a8d7..89b1562 100644
|
|
3
|
+
--- a/lib/slack/web/api/endpoints/chat.rb
|
|
4
|
+
+++ b/lib/slack/web/api/endpoints/chat.rb
|
|
5
|
+
@@ -50,6 +50,12 @@ module Slack
|
|
6
|
+
def chat_postMessage(options = {})
|
|
7
|
+
throw ArgumentError.new('Required arguments :channel missing') if options[:channel].nil?
|
|
8
|
+
throw ArgumentError.new('Required arguments :text or :attachments missing') if options[:text].nil? && options[:attachments].nil?
|
|
9
|
+
+ # attachments must be passed as an encoded JSON string
|
|
10
|
+
+ if options.key?(:attachments)
|
|
11
|
+
+ attachments = options[:attachments]
|
|
12
|
+
+ attachments = JSON.dump(attachments) unless attachments.is_a?(String)
|
|
13
|
+
+ options = options.merge(attachments: attachments)
|
|
14
|
+
+ end
|
|
15
|
+
post('chat.postMessage', options)
|
|
16
|
+
end
|
|
17
|
+
|
|
@@ -26,7 +26,12 @@ namespace :slack do
|
|
|
26
26
|
method_template = Erubis::Eruby.new(File.read('lib/slack/web/api/templates/method.erb'))
|
|
27
27
|
data.each_with_index do |(group, names), index|
|
|
28
28
|
printf "%2d/%2d %10s %s\n", index, data.size, group, names.keys
|
|
29
|
-
|
|
29
|
+
rendered = method_template.result(group: group, names: names)
|
|
30
|
+
File.write "lib/slack/web/api/endpoints/#{group}.rb", rendered
|
|
31
|
+
Dir.glob("lib/slack/web/api/patches/#{group}*.patch").sort.each do |patch|
|
|
32
|
+
puts "- patching #{patch}"
|
|
33
|
+
system("git apply #{patch}") || fail('failed to apply patch')
|
|
34
|
+
end
|
|
30
35
|
end
|
|
31
36
|
|
|
32
37
|
endpoints_template = Erubis::Eruby.new(File.read('lib/slack/web/api/templates/endpoints.erb'))
|
data/slack-ruby-client.gemspec
CHANGED
|
@@ -18,11 +18,12 @@ Gem::Specification.new do |s|
|
|
|
18
18
|
s.add_dependency 'faraday_middleware'
|
|
19
19
|
s.add_dependency 'faye-websocket'
|
|
20
20
|
s.add_dependency 'eventmachine'
|
|
21
|
+
s.add_dependency 'json'
|
|
21
22
|
s.add_development_dependency 'erubis'
|
|
22
23
|
s.add_development_dependency 'json-schema'
|
|
23
24
|
s.add_development_dependency 'rake'
|
|
24
25
|
s.add_development_dependency 'rspec'
|
|
25
26
|
s.add_development_dependency 'vcr'
|
|
26
27
|
s.add_development_dependency 'webmock'
|
|
27
|
-
s.add_development_dependency 'rubocop', '0.
|
|
28
|
+
s.add_development_dependency 'rubocop', '0.35.0'
|
|
28
29
|
end
|
data/slack.png
ADDED
|
Binary file
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'spec_helper'
|
|
2
|
+
|
|
3
|
+
RSpec.describe Slack::Web::Api::Endpoints::Chat do
|
|
4
|
+
let(:client) { Slack::Web::Client.new }
|
|
5
|
+
context 'chat_postMessage' do
|
|
6
|
+
it 'automatically converts attachments into JSON' do
|
|
7
|
+
expect(client).to receive(:post).with(
|
|
8
|
+
'chat.postMessage',
|
|
9
|
+
channel: 'channel',
|
|
10
|
+
text: 'text',
|
|
11
|
+
attachments: '[]'
|
|
12
|
+
)
|
|
13
|
+
client.chat_postMessage(channel: 'channel', text: 'text', attachments: [])
|
|
14
|
+
end
|
|
15
|
+
context 'text and attachment arguments' do
|
|
16
|
+
it 'requires text or attachments' do
|
|
17
|
+
expect { client.chat_postMessage(channel: 'channel') }.to raise_error ArgumentError, /Required arguments :text or :attachments missing/
|
|
18
|
+
end
|
|
19
|
+
it 'only text' do
|
|
20
|
+
expect(client).to receive(:post).with('chat.postMessage', hash_including(text: 'text'))
|
|
21
|
+
expect { client.chat_postMessage(channel: 'channel', text: 'text') }.to_not raise_error
|
|
22
|
+
end
|
|
23
|
+
it 'only attachments' do
|
|
24
|
+
expect(client).to receive(:post).with('chat.postMessage', hash_including(attachments: '[]'))
|
|
25
|
+
expect { client.chat_postMessage(channel: 'channel', attachments: []) }.to_not raise_error
|
|
26
|
+
end
|
|
27
|
+
it 'both text and attachments' do
|
|
28
|
+
expect(client).to receive(:post).with('chat.postMessage', hash_including(text: 'text', attachments: '[]'))
|
|
29
|
+
expect { client.chat_postMessage(channel: 'channel', text: 'text', attachments: []) }.to_not raise_error
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
metadata
CHANGED
|
@@ -1,153 +1,167 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: slack-ruby-client
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.4.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Daniel Doubrovkine
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2015-
|
|
11
|
+
date: 2015-11-08 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: faraday
|
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
|
16
16
|
requirements:
|
|
17
|
-
- -
|
|
17
|
+
- - ">="
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
19
|
version: '0'
|
|
20
20
|
type: :runtime
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
|
-
- -
|
|
24
|
+
- - ">="
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
26
|
version: '0'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: faraday_middleware
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
30
30
|
requirements:
|
|
31
|
-
- -
|
|
31
|
+
- - ">="
|
|
32
32
|
- !ruby/object:Gem::Version
|
|
33
33
|
version: '0'
|
|
34
34
|
type: :runtime
|
|
35
35
|
prerelease: false
|
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
|
37
37
|
requirements:
|
|
38
|
-
- -
|
|
38
|
+
- - ">="
|
|
39
39
|
- !ruby/object:Gem::Version
|
|
40
40
|
version: '0'
|
|
41
41
|
- !ruby/object:Gem::Dependency
|
|
42
42
|
name: faye-websocket
|
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
|
44
44
|
requirements:
|
|
45
|
-
- -
|
|
45
|
+
- - ">="
|
|
46
46
|
- !ruby/object:Gem::Version
|
|
47
47
|
version: '0'
|
|
48
48
|
type: :runtime
|
|
49
49
|
prerelease: false
|
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
|
51
51
|
requirements:
|
|
52
|
-
- -
|
|
52
|
+
- - ">="
|
|
53
53
|
- !ruby/object:Gem::Version
|
|
54
54
|
version: '0'
|
|
55
55
|
- !ruby/object:Gem::Dependency
|
|
56
56
|
name: eventmachine
|
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
|
58
58
|
requirements:
|
|
59
|
-
- -
|
|
59
|
+
- - ">="
|
|
60
60
|
- !ruby/object:Gem::Version
|
|
61
61
|
version: '0'
|
|
62
62
|
type: :runtime
|
|
63
63
|
prerelease: false
|
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
|
65
65
|
requirements:
|
|
66
|
-
- -
|
|
66
|
+
- - ">="
|
|
67
|
+
- !ruby/object:Gem::Version
|
|
68
|
+
version: '0'
|
|
69
|
+
- !ruby/object:Gem::Dependency
|
|
70
|
+
name: json
|
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
type: :runtime
|
|
77
|
+
prerelease: false
|
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
79
|
+
requirements:
|
|
80
|
+
- - ">="
|
|
67
81
|
- !ruby/object:Gem::Version
|
|
68
82
|
version: '0'
|
|
69
83
|
- !ruby/object:Gem::Dependency
|
|
70
84
|
name: erubis
|
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|
|
72
86
|
requirements:
|
|
73
|
-
- -
|
|
87
|
+
- - ">="
|
|
74
88
|
- !ruby/object:Gem::Version
|
|
75
89
|
version: '0'
|
|
76
90
|
type: :development
|
|
77
91
|
prerelease: false
|
|
78
92
|
version_requirements: !ruby/object:Gem::Requirement
|
|
79
93
|
requirements:
|
|
80
|
-
- -
|
|
94
|
+
- - ">="
|
|
81
95
|
- !ruby/object:Gem::Version
|
|
82
96
|
version: '0'
|
|
83
97
|
- !ruby/object:Gem::Dependency
|
|
84
98
|
name: json-schema
|
|
85
99
|
requirement: !ruby/object:Gem::Requirement
|
|
86
100
|
requirements:
|
|
87
|
-
- -
|
|
101
|
+
- - ">="
|
|
88
102
|
- !ruby/object:Gem::Version
|
|
89
103
|
version: '0'
|
|
90
104
|
type: :development
|
|
91
105
|
prerelease: false
|
|
92
106
|
version_requirements: !ruby/object:Gem::Requirement
|
|
93
107
|
requirements:
|
|
94
|
-
- -
|
|
108
|
+
- - ">="
|
|
95
109
|
- !ruby/object:Gem::Version
|
|
96
110
|
version: '0'
|
|
97
111
|
- !ruby/object:Gem::Dependency
|
|
98
112
|
name: rake
|
|
99
113
|
requirement: !ruby/object:Gem::Requirement
|
|
100
114
|
requirements:
|
|
101
|
-
- -
|
|
115
|
+
- - ">="
|
|
102
116
|
- !ruby/object:Gem::Version
|
|
103
117
|
version: '0'
|
|
104
118
|
type: :development
|
|
105
119
|
prerelease: false
|
|
106
120
|
version_requirements: !ruby/object:Gem::Requirement
|
|
107
121
|
requirements:
|
|
108
|
-
- -
|
|
122
|
+
- - ">="
|
|
109
123
|
- !ruby/object:Gem::Version
|
|
110
124
|
version: '0'
|
|
111
125
|
- !ruby/object:Gem::Dependency
|
|
112
126
|
name: rspec
|
|
113
127
|
requirement: !ruby/object:Gem::Requirement
|
|
114
128
|
requirements:
|
|
115
|
-
- -
|
|
129
|
+
- - ">="
|
|
116
130
|
- !ruby/object:Gem::Version
|
|
117
131
|
version: '0'
|
|
118
132
|
type: :development
|
|
119
133
|
prerelease: false
|
|
120
134
|
version_requirements: !ruby/object:Gem::Requirement
|
|
121
135
|
requirements:
|
|
122
|
-
- -
|
|
136
|
+
- - ">="
|
|
123
137
|
- !ruby/object:Gem::Version
|
|
124
138
|
version: '0'
|
|
125
139
|
- !ruby/object:Gem::Dependency
|
|
126
140
|
name: vcr
|
|
127
141
|
requirement: !ruby/object:Gem::Requirement
|
|
128
142
|
requirements:
|
|
129
|
-
- -
|
|
143
|
+
- - ">="
|
|
130
144
|
- !ruby/object:Gem::Version
|
|
131
145
|
version: '0'
|
|
132
146
|
type: :development
|
|
133
147
|
prerelease: false
|
|
134
148
|
version_requirements: !ruby/object:Gem::Requirement
|
|
135
149
|
requirements:
|
|
136
|
-
- -
|
|
150
|
+
- - ">="
|
|
137
151
|
- !ruby/object:Gem::Version
|
|
138
152
|
version: '0'
|
|
139
153
|
- !ruby/object:Gem::Dependency
|
|
140
154
|
name: webmock
|
|
141
155
|
requirement: !ruby/object:Gem::Requirement
|
|
142
156
|
requirements:
|
|
143
|
-
- -
|
|
157
|
+
- - ">="
|
|
144
158
|
- !ruby/object:Gem::Version
|
|
145
159
|
version: '0'
|
|
146
160
|
type: :development
|
|
147
161
|
prerelease: false
|
|
148
162
|
version_requirements: !ruby/object:Gem::Requirement
|
|
149
163
|
requirements:
|
|
150
|
-
- -
|
|
164
|
+
- - ">="
|
|
151
165
|
- !ruby/object:Gem::Version
|
|
152
166
|
version: '0'
|
|
153
167
|
- !ruby/object:Gem::Dependency
|
|
@@ -156,26 +170,26 @@ dependencies:
|
|
|
156
170
|
requirements:
|
|
157
171
|
- - '='
|
|
158
172
|
- !ruby/object:Gem::Version
|
|
159
|
-
version: 0.
|
|
173
|
+
version: 0.35.0
|
|
160
174
|
type: :development
|
|
161
175
|
prerelease: false
|
|
162
176
|
version_requirements: !ruby/object:Gem::Requirement
|
|
163
177
|
requirements:
|
|
164
178
|
- - '='
|
|
165
179
|
- !ruby/object:Gem::Version
|
|
166
|
-
version: 0.
|
|
180
|
+
version: 0.35.0
|
|
167
181
|
description:
|
|
168
182
|
email: dblock@dblock.org
|
|
169
183
|
executables: []
|
|
170
184
|
extensions: []
|
|
171
185
|
extra_rdoc_files: []
|
|
172
186
|
files:
|
|
173
|
-
- .gitignore
|
|
174
|
-
- .gitmodules
|
|
175
|
-
- .rspec
|
|
176
|
-
- .rubocop.yml
|
|
177
|
-
- .rubocop_todo.yml
|
|
178
|
-
- .travis.yml
|
|
187
|
+
- ".gitignore"
|
|
188
|
+
- ".gitmodules"
|
|
189
|
+
- ".rspec"
|
|
190
|
+
- ".rubocop.yml"
|
|
191
|
+
- ".rubocop_todo.yml"
|
|
192
|
+
- ".travis.yml"
|
|
179
193
|
- CHANGELOG.md
|
|
180
194
|
- CONTRIBUTING.md
|
|
181
195
|
- Gemfile
|
|
@@ -192,6 +206,8 @@ files:
|
|
|
192
206
|
- examples/hi_web/Gemfile
|
|
193
207
|
- examples/hi_web/hi.gif
|
|
194
208
|
- examples/hi_web/hi.rb
|
|
209
|
+
- examples/new_ticket/Gemfile
|
|
210
|
+
- examples/new_ticket/new_ticket.rb
|
|
195
211
|
- lib/slack-ruby-client.rb
|
|
196
212
|
- lib/slack.rb
|
|
197
213
|
- lib/slack/config.rb
|
|
@@ -212,6 +228,7 @@ files:
|
|
|
212
228
|
- lib/slack/web/api/endpoints/files.rb
|
|
213
229
|
- lib/slack/web/api/endpoints/groups.rb
|
|
214
230
|
- lib/slack/web/api/endpoints/im.rb
|
|
231
|
+
- lib/slack/web/api/endpoints/mpim.rb
|
|
215
232
|
- lib/slack/web/api/endpoints/oauth.rb
|
|
216
233
|
- lib/slack/web/api/endpoints/pins.rb
|
|
217
234
|
- lib/slack/web/api/endpoints/presence.rb
|
|
@@ -222,6 +239,8 @@ files:
|
|
|
222
239
|
- lib/slack/web/api/endpoints/team.rb
|
|
223
240
|
- lib/slack/web/api/endpoints/users.rb
|
|
224
241
|
- lib/slack/web/api/error.rb
|
|
242
|
+
- lib/slack/web/api/patches/chat.1.text-attachments-required.patch
|
|
243
|
+
- lib/slack/web/api/patches/chat.2.attachments-json.patch
|
|
225
244
|
- lib/slack/web/api/schema/method.json
|
|
226
245
|
- lib/slack/web/api/tasks/generate.rake
|
|
227
246
|
- lib/slack/web/api/templates/endpoints.erb
|
|
@@ -234,6 +253,7 @@ files:
|
|
|
234
253
|
- lib/slack_ruby_client.rb
|
|
235
254
|
- screenshots/register-bot.png
|
|
236
255
|
- slack-ruby-client.gemspec
|
|
256
|
+
- slack.png
|
|
237
257
|
- spec/fixtures/slack/web/auth_test_error.yml
|
|
238
258
|
- spec/fixtures/slack/web/auth_test_success.yml
|
|
239
259
|
- spec/fixtures/slack/web/rtm_start.yml
|
|
@@ -245,6 +265,7 @@ files:
|
|
|
245
265
|
- spec/slack/real_time/socket_spec.rb
|
|
246
266
|
- spec/slack/version_spec.rb
|
|
247
267
|
- spec/slack/web/api/endpoints/auth_spec.rb
|
|
268
|
+
- spec/slack/web/api/endpoints/chat_spec.rb
|
|
248
269
|
- spec/slack/web/client_spec.rb
|
|
249
270
|
- spec/spec_helper.rb
|
|
250
271
|
- spec/support/real_time/connected_client.rb
|
|
@@ -260,17 +281,17 @@ require_paths:
|
|
|
260
281
|
- lib
|
|
261
282
|
required_ruby_version: !ruby/object:Gem::Requirement
|
|
262
283
|
requirements:
|
|
263
|
-
- -
|
|
284
|
+
- - ">="
|
|
264
285
|
- !ruby/object:Gem::Version
|
|
265
286
|
version: '0'
|
|
266
287
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
267
288
|
requirements:
|
|
268
|
-
- -
|
|
289
|
+
- - ">="
|
|
269
290
|
- !ruby/object:Gem::Version
|
|
270
291
|
version: 1.3.6
|
|
271
292
|
requirements: []
|
|
272
293
|
rubyforge_project:
|
|
273
|
-
rubygems_version: 2.4.
|
|
294
|
+
rubygems_version: 2.4.8
|
|
274
295
|
signing_key:
|
|
275
296
|
specification_version: 4
|
|
276
297
|
summary: Slack Web and RealTime API client.
|
|
@@ -286,6 +307,7 @@ test_files:
|
|
|
286
307
|
- spec/slack/real_time/socket_spec.rb
|
|
287
308
|
- spec/slack/version_spec.rb
|
|
288
309
|
- spec/slack/web/api/endpoints/auth_spec.rb
|
|
310
|
+
- spec/slack/web/api/endpoints/chat_spec.rb
|
|
289
311
|
- spec/slack/web/client_spec.rb
|
|
290
312
|
- spec/spec_helper.rb
|
|
291
313
|
- spec/support/real_time/connected_client.rb
|