slack-api-wrapper 0.0.5 → 0.0.6
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/Gemfile +1 -1
- data/lib/slack-api-wrapper.rb +40 -7
- data/lib/slack/client.rb +6 -4
- data/lib/slack/error.rb +12 -1
- data/lib/slack/oauth2.rb +4 -0
- data/lib/slack/oauth2/flow.rb +28 -18
- data/lib/slack/oauth2/flow_base.rb +5 -2
- data/lib/slack/session.rb +7 -3
- data/lib/slack/version.rb +5 -1
- data/lib/slack/web.rb +6 -1
- data/lib/slack/web/api.rb +15 -1
- data/lib/slack/web/auth.rb +14 -1
- data/lib/slack/web/channels.rb +143 -19
- data/lib/slack/web/chat.rb +63 -10
- data/lib/slack/web/emoji.rb +10 -0
- data/lib/slack/web/files.rb +72 -3
- data/lib/slack/web/groups.rb +151 -21
- data/lib/slack/web/im.rb +54 -5
- data/lib/slack/web/search.rb +60 -3
- data/lib/slack/web/stars.rb +16 -0
- data/lib/slack/web/team.rb +14 -0
- data/lib/slack/web/users.rb +40 -3
- data/slack-api-wrapper.gemspec +1 -0
- metadata +23 -2
data/lib/slack/web/chat.rb
CHANGED
@@ -1,29 +1,82 @@
|
|
1
|
+
# Copyright (c) 2015 Gustavo Bazan
|
2
|
+
# MIT License
|
3
|
+
|
1
4
|
module Slack
|
2
5
|
module Web
|
6
|
+
# Module for the chat methods.
|
7
|
+
# Post chat messages to Slack.
|
3
8
|
module Chat
|
9
|
+
# Endpoint scope
|
4
10
|
SCOPE = "chat"
|
5
11
|
|
6
12
|
# Deletes a message.
|
7
|
-
|
8
|
-
|
9
|
-
|
13
|
+
#
|
14
|
+
# @param [Hash] params
|
15
|
+
# API call arguments
|
16
|
+
# @option params [Object] 'ts'
|
17
|
+
# Timestamp of the message to be deleted.
|
18
|
+
# @option params [channel] 'channel'
|
19
|
+
# Channel containing the message to be deleted.
|
20
|
+
#
|
21
|
+
# @see https://api.slack.com/methods/chat.delete
|
22
|
+
def chat_delete(params={})
|
23
|
+
raise ArgumentError.new("Required arguments 'ts' missing") if params['ts'].nil?
|
24
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
10
25
|
response = @session.do_get "#{SCOPE}.delete", params
|
11
26
|
Slack::parse_response(response)
|
12
27
|
end
|
13
28
|
|
14
29
|
# Sends a message to a channel.
|
15
|
-
|
16
|
-
|
17
|
-
|
30
|
+
#
|
31
|
+
# @param [Hash] params
|
32
|
+
# API call arguments
|
33
|
+
# @option params [channel] 'channel'
|
34
|
+
# Channel to send message to. Can be a public channel, private group or IM channel. Can be an encoded ID, or a name.
|
35
|
+
# @option params [Object] 'text'
|
36
|
+
# Text of the message to send.
|
37
|
+
# @option params [Object] 'username'
|
38
|
+
# Name of bot.
|
39
|
+
# @option params [Object] 'as_user'
|
40
|
+
# Pass true to post the message as the authed user, instead of as a bot
|
41
|
+
# @option params [Object] 'parse'
|
42
|
+
# Change how messages are treated.
|
43
|
+
# @option params [Object] 'link_names'
|
44
|
+
# Find and link channel names and usernames.
|
45
|
+
# @option params [Object] 'attachments'
|
46
|
+
# Structured message attachments.
|
47
|
+
# @option params [Object] 'unfurl_links'
|
48
|
+
# Pass true to enable unfurling of primarily text-based content.
|
49
|
+
# @option params [Object] 'unfurl_media'
|
50
|
+
# Pass false to disable unfurling of media content.
|
51
|
+
# @option params [Object] 'icon_url'
|
52
|
+
# URL to an image to use as the icon for this message
|
53
|
+
# @option params [Object] 'icon_emoji'
|
54
|
+
# emoji to use as the icon for this message. Overrides `icon_url`.
|
55
|
+
#
|
56
|
+
# @see https://api.slack.com/methods/chat.postMessage
|
57
|
+
def chat_post_message(params={})
|
58
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
59
|
+
raise ArgumentError.new("Required arguments 'text' missing") if params['text'].nil?
|
18
60
|
response = @session.do_get "#{SCOPE}.postMessage", params
|
19
61
|
Slack::parse_response(response)
|
20
62
|
end
|
21
63
|
|
22
64
|
# Updates a message.
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
65
|
+
#
|
66
|
+
# @param [Hash] params
|
67
|
+
# API call arguments
|
68
|
+
# @option params [Object] 'ts'
|
69
|
+
# Timestamp of the message to be updated.
|
70
|
+
# @option params [channel] 'channel'
|
71
|
+
# Channel containing the message to be updated.
|
72
|
+
# @option params [Object] 'text'
|
73
|
+
# New text for the message, using the default formatting rules.
|
74
|
+
#
|
75
|
+
# @see https://api.slack.com/methods/chat.update
|
76
|
+
def chat_update(params={})
|
77
|
+
raise ArgumentError.new("Required arguments 'ts' missing") if params['ts'].nil?
|
78
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
79
|
+
raise ArgumentError.new("Required arguments 'text' missing") if params['text'].nil?
|
27
80
|
response = @session.do_get "#{SCOPE}.update", params
|
28
81
|
Slack::parse_response(response)
|
29
82
|
end
|
data/lib/slack/web/emoji.rb
CHANGED
@@ -1,9 +1,19 @@
|
|
1
|
+
# Copyright (c) 2015 Gustavo Bazan
|
2
|
+
# MIT License
|
3
|
+
|
1
4
|
module Slack
|
2
5
|
module Web
|
6
|
+
# Module for the emoji methods.
|
3
7
|
module Emoji
|
8
|
+
# Endpoint scope
|
4
9
|
SCOPE = "emoji"
|
5
10
|
|
6
11
|
# Lists custom emoji for a team.
|
12
|
+
#
|
13
|
+
# @param [Hash] params
|
14
|
+
# API call arguments
|
15
|
+
#
|
16
|
+
# @see https://api.slack.com/methods/emoji.list
|
7
17
|
def emoji_list(params={})
|
8
18
|
response = @session.do_get "#{SCOPE}.list", params
|
9
19
|
Slack::parse_response(response)
|
data/lib/slack/web/files.rb
CHANGED
@@ -1,29 +1,98 @@
|
|
1
|
+
# Copyright (c) 2015 Gustavo Bazan
|
2
|
+
# MIT License
|
3
|
+
|
1
4
|
module Slack
|
2
5
|
module Web
|
6
|
+
# Module for the files methods.
|
7
|
+
# Get info on files uploaded to Slack, upload new files to Slack.
|
3
8
|
module Files
|
9
|
+
# Endpoint scope
|
4
10
|
SCOPE = "files"
|
5
11
|
|
6
|
-
#Deletes a file.
|
12
|
+
# Deletes a file.
|
13
|
+
#
|
14
|
+
# @param [Hash] params
|
15
|
+
# API call arguments
|
16
|
+
# @option params [file] 'file'
|
17
|
+
# ID of file to delete.
|
18
|
+
#
|
19
|
+
# @see https://api.slack.com/methods/files.delete
|
7
20
|
def files_delete(params={})
|
8
|
-
|
21
|
+
raise ArgumentError.new("Required arguments 'file' missing") if params['file'].nil?
|
9
22
|
response = @session.do_get "#{SCOPE}.delete", params
|
10
23
|
Slack::parse_response(response)
|
11
24
|
end
|
12
25
|
|
13
26
|
# Gets information about a team file.
|
27
|
+
#
|
28
|
+
# @param [Hash] params
|
29
|
+
# API call arguments
|
30
|
+
# @option params [file] 'file'
|
31
|
+
# File to fetch info for
|
32
|
+
# @option params [Object] 'count'
|
33
|
+
# Number of items to return per page.
|
34
|
+
# @option params [Object] 'page'
|
35
|
+
# Page number of results to return.
|
36
|
+
#
|
37
|
+
# @see https://api.slack.com/methods/files.info
|
14
38
|
def files_info(params={})
|
15
|
-
|
39
|
+
raise ArgumentError.new("Required arguments :file missing") if params['file'].nil
|
16
40
|
response = @session.do_get "#{SCOPE}.info", params
|
17
41
|
Slack::parse_response(response)
|
18
42
|
end
|
19
43
|
|
20
44
|
# Lists & filters team files.
|
45
|
+
#
|
46
|
+
# @param [Hash] params
|
47
|
+
# API call arguments
|
48
|
+
# @option params [user] 'user'
|
49
|
+
# Filter files created by a single user.
|
50
|
+
# @option params [Object] 'ts_from'
|
51
|
+
# Filter files created after this timestamp (inclusive).
|
52
|
+
# @option params [Object] 'ts_to'
|
53
|
+
# Filter files created before this timestamp (inclusive).
|
54
|
+
# @option params [Object] 'types'
|
55
|
+
# Filter files by type:
|
56
|
+
#
|
57
|
+
# * `all` - All files
|
58
|
+
# * `posts` - Posts
|
59
|
+
# * `snippets` - Snippets
|
60
|
+
# * `images` - Image files
|
61
|
+
# * `gdocs` - Google docs
|
62
|
+
# * `zips` - Zip files
|
63
|
+
# * `pdfs` - PDF files
|
64
|
+
#
|
65
|
+
# You can pass multiple values in the types argument, like `types=posts,snippets`.The default value is `all`, which does not filter the list.
|
66
|
+
# @option params [Object] 'count'
|
67
|
+
# Number of items to return per page.
|
68
|
+
# @option params [Object] 'page'
|
69
|
+
# Page number of results to return.
|
70
|
+
#
|
71
|
+
# @see https://api.slack.com/methods/files.list
|
21
72
|
def files_list(params={})
|
22
73
|
response = @session.do_get "#{SCOPE}.list", params
|
23
74
|
Slack::parse_response(response)
|
24
75
|
end
|
25
76
|
|
26
77
|
# Uploads or creates a file.
|
78
|
+
#
|
79
|
+
# @param [Hash] params
|
80
|
+
# API call arguments
|
81
|
+
# @option params [Object] 'file'
|
82
|
+
# File contents via `multipart/form-data`.
|
83
|
+
# @option params [Object] 'content'
|
84
|
+
# File contents via a POST var.
|
85
|
+
# @option params [Object] 'filetype'
|
86
|
+
# Slack-internal file type identifier.
|
87
|
+
# @option params [Object] 'filename'
|
88
|
+
# Filename of file.
|
89
|
+
# @option options [Object] 'title'
|
90
|
+
# Title of file.
|
91
|
+
# @option params [Object] 'initial_comment'
|
92
|
+
# Initial comment to add to file.
|
93
|
+
# @option params [channel] 'channels'
|
94
|
+
# Comma separated list of channels to share the file into.
|
95
|
+
# @see https://api.slack.com/methods/files.upload
|
27
96
|
def files_upload(params={})
|
28
97
|
response = @session.do_get "#{SCOPE}.upload", params
|
29
98
|
Slack::parse_response(response)
|
data/lib/slack/web/groups.rb
CHANGED
@@ -1,114 +1,244 @@
|
|
1
|
+
# Copyright (c) 2015 Gustavo Bazan
|
2
|
+
# MIT License
|
3
|
+
|
1
4
|
module Slack
|
2
5
|
module Web
|
6
|
+
# Module for the groups methods.
|
7
|
+
# Get info on your team's private groups.
|
3
8
|
module Groups
|
9
|
+
# Endpoint scope
|
4
10
|
SCOPE = "groups"
|
5
11
|
|
6
12
|
# Archives a private group.
|
13
|
+
#
|
14
|
+
# @param [Hash] params
|
15
|
+
# API call arguments
|
16
|
+
# @option params [group] 'channel'
|
17
|
+
# Private group to archive
|
18
|
+
#
|
19
|
+
# @see https://api.slack.com/methods/groups.archive
|
7
20
|
def groups_archive(params={})
|
8
|
-
|
21
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
9
22
|
response = @session.do_get "#{SCOPE}.archive", params
|
10
23
|
Slack::parse_response(response)
|
11
24
|
end
|
12
25
|
|
13
26
|
# Closes a private group.
|
27
|
+
#
|
28
|
+
# @param [Hash] params
|
29
|
+
# API call arguments
|
30
|
+
# @option params [group] 'channel'
|
31
|
+
# Group to close.
|
32
|
+
#
|
33
|
+
# @see https://api.slack.com/methods/groups.close
|
14
34
|
def groups_close(params={})
|
15
|
-
|
35
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
16
36
|
response = @session.do_get "#{SCOPE}.close", params
|
17
37
|
Slack::parse_response(response)
|
18
38
|
end
|
19
39
|
|
20
40
|
# Creates a private group.
|
41
|
+
#
|
42
|
+
# @param [Hash] params
|
43
|
+
# API call arguments
|
44
|
+
# @option params [Object] 'name'
|
45
|
+
# Name of group to create
|
46
|
+
#
|
47
|
+
# @see https://api.slack.com/methods/groups.create
|
21
48
|
def groups_create(params={})
|
22
|
-
|
49
|
+
raise ArgumentError.new("Required arguments 'name' missing") if params['name'].nil?
|
23
50
|
response = @session.do_get "#{SCOPE}.create", params
|
24
51
|
Slack::parse_response(response)
|
25
52
|
end
|
26
53
|
|
27
54
|
# Clones and archives a private group.
|
55
|
+
#
|
56
|
+
# @param [Hash] params
|
57
|
+
# API call arguments
|
58
|
+
# @option params [Object] 'channel'
|
59
|
+
# Group to clone and archive.
|
60
|
+
#
|
61
|
+
# @see https://api.slack.com/methods/groups.createChild
|
28
62
|
def groups_create_child(params={})
|
29
|
-
|
63
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
30
64
|
response = @session.do_get "#{SCOPE}.createChild", params
|
31
65
|
Slack::parse_response(response)
|
32
66
|
end
|
33
67
|
|
34
68
|
# Fetches history of messages and events from a private group.
|
69
|
+
#
|
70
|
+
# @param [Hash] params
|
71
|
+
# API call arguments
|
72
|
+
# @option params [group] 'channel'
|
73
|
+
# Group to fetch history for.
|
74
|
+
# @option params [timestamp] 'latest'
|
75
|
+
# Latest message timestamp to include in results.
|
76
|
+
# @option params [timestamp] 'oldest'
|
77
|
+
# Oldest message timestamp to include in results.
|
78
|
+
# @option params [Object] 'inclusive'
|
79
|
+
# Include messages with latest or oldest timestamp in results.
|
80
|
+
# @option params [Object] 'count'
|
81
|
+
# Number of messages to return, between 1 and 1000.
|
82
|
+
#
|
83
|
+
# @see https://api.slack.com/methods/groups.history
|
35
84
|
def groups_history(params={})
|
36
|
-
|
85
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
37
86
|
response = @session.do_get "#{SCOPE}.history", params
|
38
87
|
Slack::parse_response(response)
|
39
88
|
end
|
40
89
|
|
41
90
|
# Invites a user to a private group.
|
91
|
+
#
|
92
|
+
# @param [Hash] params
|
93
|
+
# API call arguments
|
94
|
+
# @option params [group] 'channel'
|
95
|
+
# Private group to invite user to.
|
96
|
+
# @option params [user] 'user'
|
97
|
+
# User to invite.
|
98
|
+
#
|
99
|
+
# @see https://api.slack.com/methods/groups.invite
|
42
100
|
def groups_invite(params={})
|
43
|
-
|
44
|
-
|
101
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
102
|
+
raise ArgumentError.new("Required arguments 'user' missing") if params['user'].nil?
|
45
103
|
response = @session.do_get "#{SCOPE}.invite", params
|
46
104
|
Slack::parse_response(response)
|
47
105
|
end
|
48
106
|
|
49
107
|
# Removes a user from a private group.
|
108
|
+
#
|
109
|
+
# @param [Hash] params
|
110
|
+
# API call arguments
|
111
|
+
# @option params [group] 'channel'
|
112
|
+
# Group to remove user from.
|
113
|
+
# @option params [user] 'user'
|
114
|
+
# User to remove from group.
|
115
|
+
#
|
116
|
+
# @see https://api.slack.com/methods/groups.kick
|
50
117
|
def groups_kick(params={})
|
51
|
-
|
52
|
-
|
118
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
119
|
+
raise ArgumentError.new("Required arguments 'user' missing") if params['user'].nil?
|
53
120
|
response = @session.do_get "#{SCOPE}.kick", params
|
54
121
|
Slack::parse_response(response)
|
55
122
|
end
|
56
123
|
|
57
124
|
# Leaves a private group.
|
125
|
+
# @param [Hash] params
|
126
|
+
# API call arguments
|
127
|
+
# @option params [group] 'channel'
|
128
|
+
# Group to leave
|
129
|
+
#
|
130
|
+
# @see https://api.slack.com/methods/groups.leave
|
58
131
|
def groups_leave(params={})
|
59
|
-
|
132
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
60
133
|
response = @session.do_get "#{SCOPE}.leave", params
|
61
134
|
Slack::parse_response(response)
|
62
135
|
end
|
63
136
|
|
64
|
-
# Lists private groups that the calling user has access to
|
137
|
+
# Lists private groups that the calling user has access to.
|
138
|
+
#
|
139
|
+
# @param [Hash] params
|
140
|
+
# API call arguments
|
141
|
+
# @option params [Object] 'exclude_archived'
|
142
|
+
# Don't return archived groups.
|
143
|
+
#
|
144
|
+
# @see https://api.slack.com/methods/groups.list
|
65
145
|
def groups_list(params={})
|
66
146
|
response = @session.do_get "#{SCOPE}.list", params
|
67
147
|
Slack::parse_response(response)
|
68
148
|
end
|
69
149
|
|
70
150
|
# Sets the read cursor in a private group.
|
151
|
+
#
|
152
|
+
# @param [Hash] params
|
153
|
+
# API call arguments
|
154
|
+
# @option params [group] 'channel'
|
155
|
+
# Group to set reading cursor in.
|
156
|
+
# @option params [timestamp] 'ts'
|
157
|
+
# Timestamp of the most recently seen message.
|
158
|
+
#
|
159
|
+
# @see https://api.slack.com/methods/groups.mark
|
71
160
|
def groups_mark(params={})
|
72
|
-
|
73
|
-
|
161
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
162
|
+
raise ArgumentError.new("Required arguments 'ts' missing") if params['ts'].nil?
|
74
163
|
response = @session.do_get "#{SCOPE}.mark", params
|
75
164
|
Slack::parse_response(response)
|
76
165
|
end
|
77
166
|
|
78
167
|
# Opens a private group.
|
168
|
+
#
|
169
|
+
# @param [Hash] params
|
170
|
+
# API call arguments
|
171
|
+
# @option params [group] 'channel'
|
172
|
+
# Group to open.
|
173
|
+
#
|
174
|
+
# @see https://api.slack.com/methods/groups.open
|
79
175
|
def groups_open(params={})
|
80
|
-
|
176
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
81
177
|
response = @session.do_get "#{SCOPE}.open", params
|
82
178
|
Slack::parse_response(response)
|
83
179
|
end
|
84
180
|
|
85
181
|
# Renames a private group.
|
182
|
+
#
|
183
|
+
# @param [Hash] params
|
184
|
+
# API call arguments
|
185
|
+
# @option params [group] 'channel'
|
186
|
+
# Group to rename
|
187
|
+
# @option params [Object] 'name'
|
188
|
+
# New name for group.
|
189
|
+
#
|
190
|
+
# @see https://api.slack.com/methods/groups.rename
|
86
191
|
def groups_rename(params={})
|
87
|
-
|
88
|
-
|
192
|
+
raise ArgumentError.new("Required arguments 'channel' missing") if params['channel'].nil?
|
193
|
+
raise ArgumentError.new("Required arguments 'name' missing") if params['name'].nil?
|
89
194
|
response = @session.do_get "#{SCOPE}.rename", params
|
90
195
|
Slack::parse_response(response)
|
91
196
|
end
|
92
197
|
|
93
198
|
# Sets the purpose for a private group.
|
199
|
+
#
|
200
|
+
# @param [Hash] params
|
201
|
+
# API call arguments
|
202
|
+
# @option params [group] 'channel'
|
203
|
+
# Private group to set the purpose of
|
204
|
+
# @option params [Object] 'purpose'
|
205
|
+
# The new purpose
|
206
|
+
#
|
207
|
+
# @see https://api.slack.com/methods/groups.setPurpose
|
94
208
|
def groups_set_purpose(params={})
|
95
|
-
|
96
|
-
|
209
|
+
raise ArgumentError.new("Required arguments :channel missing") if params['channel'].nil?
|
210
|
+
raise ArgumentError.new("Required arguments :pupose missing") if params['purpos'].nil?
|
97
211
|
response = @session.do_get "#{SCOPE}.setPurpose", params
|
98
212
|
Slack::parse_response(response)
|
99
213
|
end
|
100
214
|
|
101
215
|
# Sets the topic for a private group.
|
216
|
+
#
|
217
|
+
# @param [Hash] params
|
218
|
+
# API call arguments
|
219
|
+
# @option params [group] 'channel'
|
220
|
+
# Private group to set the purpose of
|
221
|
+
# @option params [Object] 'topic'
|
222
|
+
# The new topic
|
223
|
+
#
|
224
|
+
# @see https://api.slack.com/methods/groups.setTopic
|
102
225
|
def groups_set_topic(params={})
|
103
|
-
|
104
|
-
|
226
|
+
raise ArgumentError.new("Required arguments :channel missing") if params['channel'].nil?
|
227
|
+
raise ArgumentError.new("Required arguments :topic missing") if params['topic'].nil?
|
105
228
|
response = @session.do_get "#{SCOPE}.setTopic", params
|
106
229
|
Slack::parse_response(response)
|
107
230
|
end
|
108
231
|
|
109
232
|
# Unarchives a private group.
|
233
|
+
#
|
234
|
+
# @param [Hash] params
|
235
|
+
# API call arguments
|
236
|
+
# @option params [group] 'channel'
|
237
|
+
# Group to unarchive
|
238
|
+
# @raise [ArgumentError] if 'channel' is not present
|
239
|
+
# @see https://api.slack.com/methods/groups.unarchive
|
110
240
|
def groups_unarchive(params={})
|
111
|
-
|
241
|
+
raise ArgumentError.new("Required arguments :channel missing") if params['channel'].nil?
|
112
242
|
response = @session.do_get "#{SCOPE}.unarchive", params
|
113
243
|
Slack::parse_response(response)
|
114
244
|
end
|