rocketchat 0.1.5 → 0.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +18 -0
- data/lib/rocket_chat/gem_version.rb +1 -1
- data/lib/rocket_chat/messages/channel.rb +27 -0
- data/lib/rocket_chat/messages/group.rb +48 -0
- data/lib/rocket_chat/messages/room.rb +116 -1
- data/lib/rocket_chat/messages/user.rb +2 -9
- data/lib/rocket_chat/messages/user_support.rb +18 -0
- data/lib/rocketchat.rb +1 -0
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ed12cd37565f3e4906733b1023bfac88e5a6f3cb
|
4
|
+
data.tar.gz: cd0d89858645ca5385aca940d2ba7efd7f4357a4
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2cbd52d970d141b7938dfbd8ffbbf3bad29b0f38788e1da079b63ac67c78dfb2bd5338d8f87fd10ff98d1ebee97b01495ccf452404e6be381dc1f8e0b277bad
|
7
|
+
data.tar.gz: 5879c04d4384ef56ac148c9608a4c7606c1521e4d3b2336021ee43fbe7d76c0a775caead524cb7ca49a66e35f5411faab267bbdbf59c46e35f7a7ecab32d0086
|
data/README.md
CHANGED
@@ -37,15 +37,33 @@ This gem supports the following Rocket.Chat APIs (Tested against Rocket.Chat v0.
|
|
37
37
|
|
38
38
|
#### Channels
|
39
39
|
* [/api/v1/channels.create](docs/channels.md#channelscreate)
|
40
|
+
* [/api/v1/channels.delete](docs/channels.md#channelsdelete)
|
40
41
|
* [/api/v1/channels.info](docs/channels.md#channelsinfo)
|
42
|
+
* [/api/v1/channels.invite](docs/channels.md#channelsinvite)
|
43
|
+
* [/api/v1/channels.join](docs/channels.md#channelsjoin)
|
44
|
+
* [/api/v1/channels.leave](docs/channels.md#channelsleave)
|
41
45
|
* [/api/v1/channels.list](docs/channels.md#channelslist)
|
42
46
|
* [/api/v1/channels.rename](docs/channels.md#channelsrename)
|
47
|
+
* [/api/v1/channels.setDescription](docs/channels.md#channelsset_attr)
|
48
|
+
* [/api/v1/channels.setJoinCode](docs/channels.md#channelsset_attr)
|
49
|
+
* [/api/v1/channels.setPurpose](docs/channels.md#channelsset_attr)
|
50
|
+
* [/api/v1/channels.setReadOnly](docs/channels.md#channelsset_attr)
|
51
|
+
* [/api/v1/channels.setTopic](docs/channels.md#channelsset_attr)
|
52
|
+
* [/api/v1/channels.setType](docs/channels.md#channelsset_attr)
|
43
53
|
|
44
54
|
#### Groups
|
45
55
|
* /api/v1/groups.create
|
56
|
+
* /api/v1/groups.delete
|
46
57
|
* /api/v1/groups.info
|
58
|
+
* /api/v1/groups.invite
|
59
|
+
* /api/v1/groups.leave
|
47
60
|
* [/api/v1/groups.list](docs/groups.md#groupslist)
|
48
61
|
* /api/v1/groups.rename
|
62
|
+
* /api/v1/groups.setDescription
|
63
|
+
* /api/v1/groups.setPurpose
|
64
|
+
* /api/v1/groups.setReadOnly
|
65
|
+
* /api/v1/groups.setTopic
|
66
|
+
* /api/v1/groups.setType
|
49
67
|
|
50
68
|
#### Users
|
51
69
|
* [/api/v1/users.create](docs/users.md#userscreate)
|
@@ -6,6 +6,22 @@ module RocketChat
|
|
6
6
|
class Channel < Room
|
7
7
|
include ListSupport
|
8
8
|
|
9
|
+
#
|
10
|
+
# channels.join REST API
|
11
|
+
# @param [String] room_id Rocket.Chat room id
|
12
|
+
# @param [String] name Rocket.Chat room name (coming soon)
|
13
|
+
# @return [Boolean]
|
14
|
+
# @raise [HTTPError, StatusError]
|
15
|
+
#
|
16
|
+
def join(room_id: nil, name: nil)
|
17
|
+
session.request_json(
|
18
|
+
'/api/v1/channels.join',
|
19
|
+
method: :post,
|
20
|
+
body: room_params(room_id, name)
|
21
|
+
)['success']
|
22
|
+
end
|
23
|
+
|
24
|
+
#
|
9
25
|
# channels.list REST API
|
10
26
|
# @param [Integer] offset Query offset
|
11
27
|
# @param [Integer] count Query count/limit
|
@@ -23,6 +39,17 @@ module RocketChat
|
|
23
39
|
|
24
40
|
response['channels'].map { |hash| RocketChat::Room.new hash } if response['success']
|
25
41
|
end
|
42
|
+
|
43
|
+
# Keys for set_attr:
|
44
|
+
# * [String] description A room's description
|
45
|
+
# * [String] join_code Code to join a channel
|
46
|
+
# * [String] purpose Alias for description
|
47
|
+
# * [Boolean] read_only Read-only status
|
48
|
+
# * [String] topic A room's topic
|
49
|
+
# * [Strong] type c (channel) or p (private group)
|
50
|
+
def self.settable_attributes
|
51
|
+
%i[description join_code purpose read_only topic type]
|
52
|
+
end
|
26
53
|
end
|
27
54
|
end
|
28
55
|
end
|
@@ -6,6 +6,44 @@ module RocketChat
|
|
6
6
|
class Group < Room
|
7
7
|
include ListSupport
|
8
8
|
|
9
|
+
#
|
10
|
+
# *.add_leader REST API
|
11
|
+
# @param [String] room_id Rocket.Chat room id
|
12
|
+
# @param [String] leader Rocket.Chat user id
|
13
|
+
# @return [Boolean]
|
14
|
+
# @raise [HTTPError, StatusError]
|
15
|
+
#
|
16
|
+
def add_leader(room_id: nil, user_id: nil)
|
17
|
+
session.request_json(
|
18
|
+
self.class.api_path('addLeader'),
|
19
|
+
method: :post,
|
20
|
+
body: {
|
21
|
+
roomId: room_id,
|
22
|
+
userId: user_id
|
23
|
+
},
|
24
|
+
upstreamed_errors: ['error-room-not-found']
|
25
|
+
)['success']
|
26
|
+
end
|
27
|
+
|
28
|
+
#
|
29
|
+
# *.remove_leader REST API
|
30
|
+
# @param [String] room_id Rocket.Chat room id
|
31
|
+
# @param [String] leader Rocket.Chat user id
|
32
|
+
# @return [Boolean]
|
33
|
+
# @raise [HTTPError, StatusError]
|
34
|
+
#
|
35
|
+
def remove_leader(room_id: nil, user_id: nil)
|
36
|
+
session.request_json(
|
37
|
+
self.class.api_path('removeLeader'),
|
38
|
+
method: :post,
|
39
|
+
body: {
|
40
|
+
roomId: room_id,
|
41
|
+
userId: user_id
|
42
|
+
},
|
43
|
+
upstreamed_errors: ['error-room-not-found']
|
44
|
+
)['success']
|
45
|
+
end
|
46
|
+
|
9
47
|
# groups.list REST API
|
10
48
|
# @param [Integer] offset Query offset
|
11
49
|
# @param [Integer] count Query count/limit
|
@@ -22,6 +60,16 @@ module RocketChat
|
|
22
60
|
|
23
61
|
response['groups'].map { |hash| RocketChat::Room.new hash } if response['success']
|
24
62
|
end
|
63
|
+
|
64
|
+
# Keys for set_attr:
|
65
|
+
# * [String] description A room's description
|
66
|
+
# * [String] purpose Alias for description
|
67
|
+
# * [Boolean] read_only Read-only status
|
68
|
+
# * [String] topic A room's topic
|
69
|
+
# * [Strong] type c (channel) or p (private group)
|
70
|
+
def self.settable_attributes
|
71
|
+
%i[description purpose read_only topic type]
|
72
|
+
end
|
25
73
|
end
|
26
74
|
end
|
27
75
|
end
|
@@ -3,7 +3,9 @@ module RocketChat
|
|
3
3
|
#
|
4
4
|
# Rocket.Chat Room messages template (groups&channels)
|
5
5
|
#
|
6
|
-
class Room
|
6
|
+
class Room # rubocop:disable Metrics/ClassLength
|
7
|
+
include UserSupport
|
8
|
+
|
7
9
|
def self.inherited(subclass)
|
8
10
|
field = subclass.name.split('::')[-1].downcase
|
9
11
|
collection = field + 's'
|
@@ -41,6 +43,60 @@ module RocketChat
|
|
41
43
|
RocketChat::Room.new response[self.class.field]
|
42
44
|
end
|
43
45
|
|
46
|
+
#
|
47
|
+
# *.delete REST API
|
48
|
+
# @param [String] room_id Rocket.Chat room id
|
49
|
+
# @param [String] name Rocket.Chat room name (coming soon)
|
50
|
+
# @return [Boolean]
|
51
|
+
# @raise [HTTPError, StatusError]
|
52
|
+
#
|
53
|
+
def delete(room_id: nil, name: nil)
|
54
|
+
session.request_json(
|
55
|
+
self.class.api_path('delete'),
|
56
|
+
method: :post,
|
57
|
+
body: room_params(room_id, name),
|
58
|
+
upstreamed_errors: ['error-room-not-found']
|
59
|
+
)['success']
|
60
|
+
end
|
61
|
+
|
62
|
+
#
|
63
|
+
# *.add_owner REST API
|
64
|
+
# @param [String] room_id Rocket.Chat room id
|
65
|
+
# @param [String] user_id Rocket.Chat user id
|
66
|
+
# @return [Boolean]
|
67
|
+
# @raise [HTTPError, StatusError]
|
68
|
+
#
|
69
|
+
def add_owner(room_id: nil, user_id: nil)
|
70
|
+
session.request_json(
|
71
|
+
self.class.api_path('addOwner'),
|
72
|
+
method: :post,
|
73
|
+
body: {
|
74
|
+
roomId: room_id,
|
75
|
+
userId: user_id
|
76
|
+
},
|
77
|
+
upstreamed_errors: ['error-room-not-found']
|
78
|
+
)['success']
|
79
|
+
end
|
80
|
+
|
81
|
+
#
|
82
|
+
# *.remove_owner REST API
|
83
|
+
# @param [String] room_id Rocket.Chat room id
|
84
|
+
# @param [String] user_id Rocket.Chat user id
|
85
|
+
# @return [Boolean]
|
86
|
+
# @raise [HTTPError, StatusError]
|
87
|
+
#
|
88
|
+
def remove_owner(room_id: nil, user_id: nil)
|
89
|
+
session.request_json(
|
90
|
+
self.class.api_path('removeOwner'),
|
91
|
+
method: :post,
|
92
|
+
body: {
|
93
|
+
roomId: room_id,
|
94
|
+
userId: user_id
|
95
|
+
},
|
96
|
+
upstreamed_errors: ['error-room-not-found']
|
97
|
+
)['success']
|
98
|
+
end
|
99
|
+
|
44
100
|
#
|
45
101
|
# *.info REST API
|
46
102
|
# @param [String] room_id Rocket.Chat room id
|
@@ -58,6 +114,39 @@ module RocketChat
|
|
58
114
|
RocketChat::Room.new response[self.class.field] if response['success']
|
59
115
|
end
|
60
116
|
|
117
|
+
#
|
118
|
+
# *.invite REST API
|
119
|
+
# @param [String] room_id Rocket.Chat room id
|
120
|
+
# @param [String] name Rocket.Chat room name (coming soon)
|
121
|
+
# @param [String] user_id Rocket.Chat user id
|
122
|
+
# @param [String] username Username
|
123
|
+
# @return [Boolean]
|
124
|
+
# @raise [HTTPError, StatusError]
|
125
|
+
#
|
126
|
+
def invite(room_id: nil, name: nil, user_id: nil, username: nil)
|
127
|
+
session.request_json(
|
128
|
+
self.class.api_path('invite'),
|
129
|
+
method: :post,
|
130
|
+
body: room_params(room_id, name)
|
131
|
+
.merge(user_params(user_id, username))
|
132
|
+
)['success']
|
133
|
+
end
|
134
|
+
|
135
|
+
#
|
136
|
+
# *.leave REST API
|
137
|
+
# @param [String] room_id Rocket.Chat room id
|
138
|
+
# @param [String] name Rocket.Chat room name (coming soon)
|
139
|
+
# @return [Boolean]
|
140
|
+
# @raise [HTTPError, StatusError]
|
141
|
+
#
|
142
|
+
def leave(room_id: nil, name: nil)
|
143
|
+
session.request_json(
|
144
|
+
self.class.api_path('leave'),
|
145
|
+
method: :post,
|
146
|
+
body: room_params(room_id, name)
|
147
|
+
)['success']
|
148
|
+
end
|
149
|
+
|
61
150
|
#
|
62
151
|
# *.rename REST API
|
63
152
|
# @param [String] room_id Rocket.Chat room id
|
@@ -73,6 +162,25 @@ module RocketChat
|
|
73
162
|
)['success']
|
74
163
|
end
|
75
164
|
|
165
|
+
#
|
166
|
+
# *.set* REST API
|
167
|
+
# @param [String] room_id Rocket.Chat room id
|
168
|
+
# @param [String] new_name New room name
|
169
|
+
# @param [Hash] setting Single key-value
|
170
|
+
# @return [Boolean]
|
171
|
+
# @raise [ArgumentError, HTTPError, StatusError]
|
172
|
+
#
|
173
|
+
def set_attr(room_id: nil, name: nil, **setting)
|
174
|
+
attribute, value = setting.first
|
175
|
+
validate_attribute(attribute)
|
176
|
+
session.request_json(
|
177
|
+
self.class.api_path(Util.camelize("set_#{attribute}")),
|
178
|
+
method: :post,
|
179
|
+
body: room_params(room_id, name)
|
180
|
+
.merge(Util.camelize(attribute) => value)
|
181
|
+
)['success']
|
182
|
+
end
|
183
|
+
|
76
184
|
private
|
77
185
|
|
78
186
|
attr_reader :session
|
@@ -82,6 +190,8 @@ module RocketChat
|
|
82
190
|
{ roomId: id }
|
83
191
|
elsif name
|
84
192
|
{ roomName: name }
|
193
|
+
else
|
194
|
+
{}
|
85
195
|
end
|
86
196
|
end
|
87
197
|
|
@@ -95,6 +205,11 @@ module RocketChat
|
|
95
205
|
options.each { |key, value| new_hash[Util.camelize(key)] = value }
|
96
206
|
new_hash
|
97
207
|
end
|
208
|
+
|
209
|
+
def validate_attribute(attribute)
|
210
|
+
raise ArgumentError, "Unsettable attribute: #{attribute || 'nil'}" unless \
|
211
|
+
self.class.settable_attributes.include?(attribute)
|
212
|
+
end
|
98
213
|
end
|
99
214
|
end
|
100
215
|
end
|
@@ -3,8 +3,9 @@ module RocketChat
|
|
3
3
|
#
|
4
4
|
# Rocket.Chat User messages
|
5
5
|
#
|
6
|
-
class User
|
6
|
+
class User
|
7
7
|
include ListSupport
|
8
|
+
include UserSupport
|
8
9
|
|
9
10
|
#
|
10
11
|
# @param [Session] session Session
|
@@ -188,14 +189,6 @@ module RocketChat
|
|
188
189
|
options.each { |key, value| new_hash[Util.camelize(key)] = value }
|
189
190
|
new_hash
|
190
191
|
end
|
191
|
-
|
192
|
-
def user_params(id, username)
|
193
|
-
if id
|
194
|
-
{ userId: id }
|
195
|
-
elsif username
|
196
|
-
{ username: username }
|
197
|
-
end
|
198
|
-
end
|
199
192
|
end
|
200
193
|
end
|
201
194
|
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module RocketChat
|
2
|
+
module Messages
|
3
|
+
#
|
4
|
+
# User params builder for calls with user parameters
|
5
|
+
#
|
6
|
+
module UserSupport
|
7
|
+
def user_params(id, username)
|
8
|
+
if id
|
9
|
+
{ userId: id }
|
10
|
+
elsif username
|
11
|
+
{ username: username }
|
12
|
+
else
|
13
|
+
{}
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
data/lib/rocketchat.rb
CHANGED
@@ -7,6 +7,7 @@ require 'rocket_chat/util'
|
|
7
7
|
require 'rocket_chat/request_helper'
|
8
8
|
|
9
9
|
require 'rocket_chat/messages/list_support'
|
10
|
+
require 'rocket_chat/messages/user_support'
|
10
11
|
require 'rocket_chat/messages/user'
|
11
12
|
require 'rocket_chat/messages/settings'
|
12
13
|
require 'rocket_chat/messages/room'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: rocketchat
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- int512
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-07-
|
12
|
+
date: 2017-07-11 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -121,6 +121,7 @@ files:
|
|
121
121
|
- lib/rocket_chat/messages/room.rb
|
122
122
|
- lib/rocket_chat/messages/settings.rb
|
123
123
|
- lib/rocket_chat/messages/user.rb
|
124
|
+
- lib/rocket_chat/messages/user_support.rb
|
124
125
|
- lib/rocket_chat/presence_status.rb
|
125
126
|
- lib/rocket_chat/request_helper.rb
|
126
127
|
- lib/rocket_chat/room.rb
|