rocketchat 0.0.2 → 0.0.3
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.yml +1 -1
- data/README.md +6 -3
- data/lib/rocket_chat/gem_version.rb +1 -1
- data/lib/rocket_chat/messages/user.rb +78 -0
- data/lib/rocket_chat/request_helper.rb +15 -8
- data/lib/rocket_chat/session.rb +14 -4
- data/lib/rocket_chat/util.rb +29 -4
- data/lib/rocketchat.rb +2 -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: a3c6a81c9b24af32e67ddee2d35a461271507a73
|
4
|
+
data.tar.gz: 2adb561c2bbe7474cfdf961dcc8b576bb02f549a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4719b5dce2ba7c22951e6a1848eeb999f3b89ce34eb056f1265b4b21bb688172cf842774f6800b0fef7628842963c035743f8e44b84bc9087c045925d758de38
|
7
|
+
data.tar.gz: 066d66b376d3e6529874ea1f397319e433c5b7e1c65206d5b0326456a99834cf6bd7daeefff7fe6b96d19f72fbd83366f534ae1620e9b3417f6031ad4237ace7
|
data/.rubocop.yml
CHANGED
data/README.md
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
[](https://travis-ci.org/abrom/rocketchat-ruby)
|
2
2
|
[](https://codeclimate.com/github/abrom/rocketchat-ruby)
|
3
|
-
[](#)
|
4
4
|
|
5
5
|
# Rocket.Chat REST API for Ruby
|
6
6
|
|
7
7
|
This is a gem wrapping the v1 REST API for [Rocket.Chat](https://rocket.chat/).
|
8
8
|
|
9
|
-
The gem is based on a fork of int2xx9/ruby-rocketchat however that gem implemented v0.1
|
10
|
-
of the Rocket.Chat API and it was not forward compatible. Thanks to @int2xx9 for the
|
9
|
+
The gem is based on a fork of http://github.com/int2xx9/ruby-rocketchat however that gem implemented v0.1
|
10
|
+
of the Rocket.Chat API and it was not forward compatible. Thanks to [@int2xx9](http://github.com/int2xx9) for the
|
11
11
|
framework on which this gem was based
|
12
12
|
|
13
13
|
## Installation
|
@@ -35,6 +35,9 @@ This gem supports the following Rocket.Chat APIs (Tested against Rocket.Chat v0.
|
|
35
35
|
* /api/v1/logout
|
36
36
|
* /api/v1/me
|
37
37
|
|
38
|
+
### Users
|
39
|
+
* /api/v1/users.create
|
40
|
+
|
38
41
|
|
39
42
|
## Usage
|
40
43
|
|
@@ -0,0 +1,78 @@
|
|
1
|
+
module RocketChat
|
2
|
+
module Messages
|
3
|
+
#
|
4
|
+
# Rocket.Chat User messages
|
5
|
+
#
|
6
|
+
class User
|
7
|
+
#
|
8
|
+
# @param [Session] session Session
|
9
|
+
#
|
10
|
+
def initialize(session)
|
11
|
+
@session = session
|
12
|
+
end
|
13
|
+
|
14
|
+
#
|
15
|
+
# users.create REST API
|
16
|
+
# @param [String] username Username
|
17
|
+
# @param [String] email Email
|
18
|
+
# @param [String] name Name
|
19
|
+
# @param [String] password Password
|
20
|
+
# @param [Hash] options Additional options
|
21
|
+
# @return [User]
|
22
|
+
# @raise [HTTPError, StatusError]
|
23
|
+
#
|
24
|
+
def create(username, email, name, password, options = {})
|
25
|
+
response = session.request_json(
|
26
|
+
'/api/v1/users.create',
|
27
|
+
method: :post,
|
28
|
+
body: {
|
29
|
+
username: username,
|
30
|
+
email: email,
|
31
|
+
name: name,
|
32
|
+
password: password
|
33
|
+
}.merge(user_option_hash(options))
|
34
|
+
)
|
35
|
+
RocketChat::User.new response['user']
|
36
|
+
end
|
37
|
+
|
38
|
+
#
|
39
|
+
# users.update REST API
|
40
|
+
# @param [String] id Rocket.Chat user id
|
41
|
+
# @param [String] new_email Email
|
42
|
+
# @param [String] new_name Name
|
43
|
+
# @return [User]
|
44
|
+
# @raise [HTTPError, StatusError]
|
45
|
+
#
|
46
|
+
def update(id, new_email, new_name, options = {})
|
47
|
+
response = session.request_json(
|
48
|
+
'/api/v1/users.update',
|
49
|
+
method: :post,
|
50
|
+
body: {
|
51
|
+
userId: id,
|
52
|
+
data: {
|
53
|
+
email: new_email,
|
54
|
+
name: new_name
|
55
|
+
}.merge(user_option_hash(options))
|
56
|
+
}
|
57
|
+
)
|
58
|
+
RocketChat::User.new response['user']
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
attr_reader :session
|
64
|
+
|
65
|
+
def user_option_hash(options)
|
66
|
+
options = Util.slice_hash(
|
67
|
+
options, :active, :roles, :join_default_channels, :require_password_change,
|
68
|
+
:send_welcome_email, :verified, :custom_fields, :username, :password
|
69
|
+
)
|
70
|
+
return {} if options.empty?
|
71
|
+
|
72
|
+
new_hash = {}
|
73
|
+
options.each { |key, value| new_hash[Util.camelize(key)] = value }
|
74
|
+
new_hash
|
75
|
+
end
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
@@ -22,17 +22,17 @@ module RocketChat
|
|
22
22
|
|
23
23
|
def request_json(path, options = {})
|
24
24
|
fail_unless_ok = options.delete :fail_unless_ok
|
25
|
-
skip_status_check = options.delete :skip_status_check
|
26
25
|
|
27
26
|
response = request path, options
|
28
|
-
|
29
27
|
if fail_unless_ok && !response.is_a?(Net::HTTPOK)
|
30
28
|
raise RocketChat::HTTPError, "Invalid http response code: #{response.code}"
|
31
29
|
end
|
32
30
|
|
33
31
|
response_json = JSON.parse(response.body)
|
34
|
-
|
35
|
-
raise RocketChat::StatusError, response_json['
|
32
|
+
if response_json.has_key? 'success'
|
33
|
+
raise RocketChat::StatusError, response_json['error'] unless response_json['success']
|
34
|
+
else
|
35
|
+
raise RocketChat::StatusError, response_json['message'] unless response_json['status'] == 'success'
|
36
36
|
end
|
37
37
|
|
38
38
|
response_json
|
@@ -84,16 +84,23 @@ module RocketChat
|
|
84
84
|
req = Net::HTTP.const_get(options[:method].to_s.capitalize).new(path, headers)
|
85
85
|
|
86
86
|
body = options[:body]
|
87
|
-
req
|
87
|
+
add_body(req, body) unless body.nil?
|
88
88
|
|
89
89
|
req
|
90
90
|
end
|
91
91
|
|
92
|
+
def add_body(request, body)
|
93
|
+
if body.is_a? Hash
|
94
|
+
request.body = body.to_json
|
95
|
+
request.content_type = 'application/json'
|
96
|
+
else
|
97
|
+
request.body = url_encode(body)
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
92
101
|
def url_encode(body)
|
93
102
|
if body.is_a?(Hash)
|
94
|
-
|
95
|
-
"#{URI.escape(key.to_s)}=#{URI.escape(value.to_s)}"
|
96
|
-
end.join('&')
|
103
|
+
URI.encode_www_form body
|
97
104
|
else
|
98
105
|
body.to_s
|
99
106
|
end
|
data/lib/rocket_chat/session.rb
CHANGED
@@ -17,13 +17,17 @@ module RocketChat
|
|
17
17
|
@token = token.dup.freeze
|
18
18
|
end
|
19
19
|
|
20
|
+
def request_json(path, options = {})
|
21
|
+
server.request_json path, options.merge(token: token)
|
22
|
+
end
|
23
|
+
|
20
24
|
#
|
21
25
|
# logout REST API
|
22
26
|
# @return [NilClass]
|
23
27
|
# @raise [HTTPError, StatusError]
|
24
28
|
#
|
25
29
|
def logout
|
26
|
-
|
30
|
+
request_json('/api/v1/logout', method: :post)
|
27
31
|
nil
|
28
32
|
end
|
29
33
|
|
@@ -33,9 +37,15 @@ module RocketChat
|
|
33
37
|
# @raise [HTTPError, StatusError]
|
34
38
|
#
|
35
39
|
def me
|
36
|
-
|
37
|
-
|
38
|
-
|
40
|
+
User.new request_json('/api/v1/me', method: :get)
|
41
|
+
end
|
42
|
+
|
43
|
+
#
|
44
|
+
# User messages proxy
|
45
|
+
# @return [Messages::User]
|
46
|
+
#
|
47
|
+
def users
|
48
|
+
@users ||= RocketChat::Messages::User.new(self)
|
39
49
|
end
|
40
50
|
end
|
41
51
|
end
|
data/lib/rocket_chat/util.rb
CHANGED
@@ -9,12 +9,37 @@ module RocketChat
|
|
9
9
|
# @return Stringified hash
|
10
10
|
#
|
11
11
|
def stringify_hash_keys(hash)
|
12
|
-
|
12
|
+
new_hash = {}
|
13
|
+
hash.each { |key, value| new_hash[key.to_s] = value }
|
14
|
+
new_hash
|
15
|
+
end
|
16
|
+
module_function :stringify_hash_keys
|
17
|
+
|
18
|
+
#
|
19
|
+
# Slice keys from hash
|
20
|
+
# @param [Hash] hash A hash to slice key/value pairs from
|
21
|
+
# @param [Array] *keys The keys to be sliced
|
22
|
+
# @return Hash filtered by keys
|
23
|
+
#
|
24
|
+
def slice_hash(hash, *keys)
|
25
|
+
return {} if keys.length.zero?
|
26
|
+
|
27
|
+
new_hash = {}
|
13
28
|
hash.each do |key, value|
|
14
|
-
|
29
|
+
new_hash[key] = value if keys.include? key
|
15
30
|
end
|
16
|
-
|
31
|
+
new_hash
|
17
32
|
end
|
18
|
-
module_function :
|
33
|
+
module_function :slice_hash
|
34
|
+
|
35
|
+
#
|
36
|
+
# Camelize a string or symbol
|
37
|
+
# @param [String/Symbol] string A string or symbol
|
38
|
+
# @return a camelized string
|
39
|
+
#
|
40
|
+
def camelize(string)
|
41
|
+
string.to_s.gsub(/_([a-z])/) { $1.upcase }
|
42
|
+
end
|
43
|
+
module_function :camelize
|
19
44
|
end
|
20
45
|
end
|
data/lib/rocketchat.rb
CHANGED
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.0.
|
4
|
+
version: 0.0.3
|
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-04-
|
12
|
+
date: 2017-04-14 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|
@@ -115,6 +115,7 @@ files:
|
|
115
115
|
- lib/rocket_chat/error.rb
|
116
116
|
- lib/rocket_chat/gem_version.rb
|
117
117
|
- lib/rocket_chat/info.rb
|
118
|
+
- lib/rocket_chat/messages/user.rb
|
118
119
|
- lib/rocket_chat/request_helper.rb
|
119
120
|
- lib/rocket_chat/server.rb
|
120
121
|
- lib/rocket_chat/session.rb
|