slack-api-wrapper 0.0.5 → 0.0.6
Sign up to get free protection for your applications and to get access to all the features.
- 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
|