rocketchat 0.0.2 → 0.0.3
Sign up to get free protection for your applications and to get access to all the features.
- 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
|
[![Travis Build Status](http://img.shields.io/travis/abrom/rocketchat-ruby.svg?style=flat)](https://travis-ci.org/abrom/rocketchat-ruby)
|
2
2
|
[![Code Climate Score](http://img.shields.io/codeclimate/github/abrom/rocketchat-ruby.svg?style=flat)](https://codeclimate.com/github/abrom/rocketchat-ruby)
|
3
|
-
[![Gem Version](http://img.shields.io/gem/v/rocketchat
|
3
|
+
[![Gem Version](http://img.shields.io/gem/v/rocketchat.svg?style=flat)](#)
|
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
|