rocketchat 0.1.17 → 0.1.21

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: '0296b13f4f910dc6b063a96505772863ce05b46ebf50a2766091bbd3e5de2c92'
4
- data.tar.gz: 1a0c6a828f549f57479583bd07f03a8c619d21e0fc2c256373815bdfd80915a4
3
+ metadata.gz: 0414d925c282330700662c6a617328a2c91610c5969285da247c653a1b512133
4
+ data.tar.gz: db1fab6b741dd083488e1a1b60f36fff5130e5cff10ee88ed2847ef4853cee14
5
5
  SHA512:
6
- metadata.gz: 6c141be5cf5f3553e64fe014df2696769fd4b6adc922ca191b3538b7f39a300876d75ff0fc6712aeda0594b4c0be0d4a4c7f66a515fd1416cda614d683ac18ca
7
- data.tar.gz: 4706a56eaeddfbbd10c3757e75b7567027764ca57d0f39248d612f8ff15b2dbb8ffb8bf3792161714219ea6425340f0bada37c5438150ea6005fe24367dea009
6
+ metadata.gz: 002475521b99ee9dcc766622ed1630c08daf488ba68c0f10dd620b568882b022aace8e79a6f2419b8fa6d8780290ea2df442b1537118d97415ca759cb53254bc
7
+ data.tar.gz: 6f896d0c30470e16702567320ed083c63d6cce9325734295bfd553d710f8669bfd11148d79c590a89465ba06f0e7be870c02679ddab01d60858be9af6ab7b9bb
data/.rubocop.yml CHANGED
@@ -1,24 +1,79 @@
1
- require: rubocop-rspec
1
+ require:
2
+ - rubocop-performance
3
+ - rubocop-rake
4
+ - rubocop-rspec
5
+
6
+ AllCops:
7
+ NewCops: enable
8
+ TargetRubyVersion: 2.5
9
+
10
+ Layout/EmptyLinesAroundAttributeAccessor:
11
+ Enabled: true
12
+
13
+ Layout/LineLength:
14
+ Max: 120
15
+
16
+ Layout/SpaceAroundMethodCallOperator:
17
+ Enabled: true
18
+
19
+ Lint/DeprecatedOpenSSLConstant:
20
+ Enabled: true
21
+
22
+ Lint/MixedRegexpCaptureTypes:
23
+ Enabled: true
24
+
25
+ Lint/RaiseException:
26
+ Enabled: true
27
+
28
+ Lint/StructNewOverride:
29
+ Enabled: true
2
30
 
3
31
  Metrics/BlockLength:
4
32
  Exclude:
5
33
  - "**/*_spec.rb"
6
34
  - "spec/shared/*.rb"
7
35
 
8
- Metrics/LineLength:
9
- Max: 120
10
-
11
36
  Metrics/MethodLength:
12
37
  Max: 15
13
38
  Exclude:
14
39
  - "**/*_spec.rb"
15
40
 
16
- Style/NumericLiterals:
17
- Exclude:
18
- - "**/*_spec.rb"
19
-
20
41
  RSpec/ExampleLength:
21
42
  Max: 10
22
43
 
23
44
  RSpec/MultipleExpectations:
24
45
  Max: 5
46
+
47
+ RSpec/MultipleMemoizedHelpers:
48
+ Max: 15
49
+
50
+ RSpec/NestedGroups:
51
+ Max: 4
52
+
53
+ Style/ExponentialNotation:
54
+ Enabled: true
55
+
56
+ Style/HashEachMethods:
57
+ Enabled: true
58
+
59
+ Style/HashTransformKeys:
60
+ Enabled: true
61
+
62
+ Style/HashTransformValues:
63
+ Enabled: true
64
+
65
+ Style/NumericLiterals:
66
+ Exclude:
67
+ - "**/*_spec.rb"
68
+
69
+ Style/RedundantFetchBlock:
70
+ Enabled: true
71
+
72
+ Style/RedundantRegexpCharacterClass:
73
+ Enabled: true
74
+
75
+ Style/RedundantRegexpEscape:
76
+ Enabled: true
77
+
78
+ Style/SlicingWithRange:
79
+ Enabled: true
data/.travis.yml CHANGED
@@ -5,11 +5,10 @@ env:
5
5
  language: ruby
6
6
 
7
7
  rvm:
8
- - 2.2
9
- - 2.3
10
- - 2.4
11
8
  - 2.5
12
9
  - 2.6
10
+ - 2.7
11
+ - 3.0
13
12
 
14
13
  before_install:
15
14
  - gem update bundler
@@ -24,7 +23,7 @@ before_script:
24
23
  - ./cc-test-reporter before-build
25
24
 
26
25
  script:
27
- - rubocop
26
+ - bundle exec rubocop
28
27
  - bundle exec rake
29
28
 
30
29
  after_script:
data/CHANGELOG.md CHANGED
@@ -3,21 +3,40 @@
3
3
  ## Unreleased
4
4
  - None
5
5
 
6
+ ## [0.1.21](releases/tag/v0.1.21) - 2021-08-30
7
+ ### Added
8
+ - [#36] Improve support for various REST APIs ([@abrom][])
9
+
10
+ ## [0.1.20](releases/tag/v0.1.20) - 2021-03-29
11
+ ### Added
12
+ - [#34] Support for channels.members and groups.members ([@alinavancea][])
13
+
14
+ ### Deprecation
15
+ - [#35] Drop Ruby 2.3 and 2.4 support ([@abrom][])
16
+
17
+ ## [0.1.19](releases/tag/v0.1.19) - 2019-03-01
18
+ ### Fixed
19
+ - Address CVE-2020-8130 - `rake` OS command injection vulnerability ([@abrom][])
20
+
21
+ ## [0.1.18](releases/tag/v0.1.18) - 2018-01-05
22
+ ### Added
23
+ - [#29] Support for im.create and im.counters ([@christianmoretti][])
24
+
6
25
  ## [0.1.17](releases/tag/v0.1.17) - 2019-01-05
7
26
  ### Deprecation
8
- - Drop Ruby 2.1 from build matrix
27
+ - Drop Ruby 2.1 from build matrix ([@abrom][])
9
28
 
10
29
  ## [0.1.16](releases/tag/v0.1.16) - 2018-10-3
11
30
  ### Deprecation
12
- - Drop Ruby 2.0 from build matrix
31
+ - Drop Ruby 2.0 from build matrix ([@abrom][])
13
32
 
14
33
  ### Added
15
34
  - [#27] Support for channels.online ([@chrisstime][])
16
- - `rubocop-rspec` dependency and fixed new lints
35
+ - [#28] `rubocop-rspec` dependency and fixed new lints ([@abrom][])
17
36
 
18
37
  ## [0.1.15](releases/tag/v0.1.15) - 2017-12-21
19
38
  ### Fixed
20
- - Updated yard to resolve potential security vulnerability
39
+ - Updated yard to resolve potential security vulnerability ([@abrom][])
21
40
 
22
41
  ## [0.1.14](releases/tag/v0.1.14) - 2017-10-9
23
42
  ### Added
@@ -25,16 +44,16 @@
25
44
 
26
45
  ## [0.1.13](releases/tag/v0.1.13) - 2017-10-9
27
46
  ### Added
28
- - Support for channel/group addAll endpoint
47
+ - Support for channel/group addAll endpoint ([@abrom][])
29
48
 
30
49
  ## [0.1.12](releases/tag/v0.1.12) - 2017-08-28
31
50
  ### Fixed
32
- - GET request parameter encoding
51
+ - GET request parameter encoding ([@abrom][])
33
52
 
34
53
  ## [0.1.11](releases/tag/v0.1.11) - 2017-08-22
35
54
  ### Fixed
36
55
  - [#15] Response parser improvements ([@reist][],[@danischreiber][])
37
- - [#17] Fixed a missing dependency issue with `net/http`
56
+ - [#17] Fixed a missing dependency issue with `net/http` ([@abrom][])
38
57
 
39
58
  ### Added
40
59
  - [#14] Add/remove moderator from room ([@danischreiber][])
@@ -45,11 +64,11 @@
45
64
 
46
65
  ## [0.1.9](releases/tag/v0.1.9) - 2017-07-16
47
66
  ### Fixed
48
- - Update chat message handlers to support Ruby 2.0
67
+ - Update chat message handlers to support Ruby 2.0 ([@abrom][])
49
68
 
50
69
  ## [0.1.8](releases/tag/v0.1.8) - 2017-07-16
51
70
  ### Added
52
- - Messages chat API support
71
+ - Messages chat API support ([@abrom][])
53
72
 
54
73
  ## [0.1.7](releases/tag/v0.1.7) - 2017-07-16
55
74
  ### Added
@@ -66,7 +85,7 @@
66
85
 
67
86
  ## [0.1.4](releases/tag/v0.1.4) - 2017-07-9
68
87
  ### Fixed
69
- - Fixed a missing dependency issue with `uri`
88
+ - Fixed a missing dependency issue with `uri` ([@abrom][])
70
89
 
71
90
  ## [0.1.2](releases/tag/v0.1.2) - 2017-05-24
72
91
  ### Added
@@ -74,15 +93,15 @@
74
93
 
75
94
  ## [0.1.1](releases/tag/v0.1.1) - 2017-05-1
76
95
  ### Added
77
- - Support for settings get/set endpoints
96
+ - Support for settings get/set endpoints ([@abrom][])
78
97
 
79
98
  ## [0.0.8](releases/tag/v0.0.8) - 2017-04-30
80
99
  ### Added
81
- - Support for Users `getPresence` endpoint
100
+ - Support for Users `getPresence` endpoint ([@abrom][])
82
101
 
83
102
  ## [0.0.7](releases/tag/v0.0.7) - 2017-04-30
84
103
  ### Added
85
- - Support for Users `list` endpoint
104
+ - Support for Users `list` endpoint ([@abrom][])
86
105
 
87
106
  ## [0.0.6](releases/tag/v0.0.6) - 2017-04-25
88
107
  ### Fixed
@@ -91,3 +110,12 @@
91
110
  ## [0.0.5](releases/tag/v0.0.5) - 2017-04-25
92
111
  ### Added
93
112
  - [#1] Added Users `info` and `delete` endpoints ([@reist][])
113
+
114
+ [@abrom]: https://github.com/abrom
115
+ [@reist]: https://github.com/reist
116
+ [@danischreiber]: https://github.com/danischreiber
117
+ [@hardik127]: https://github.com/hardik127
118
+ [@chrisstime]: https://github.com/chrisstime
119
+ [@christianmoretti]: https://github.com/christianmoretti
120
+ [@alinavancea]: https://github.com/alinavancea
121
+
data/Gemfile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  source 'https://rubygems.org'
2
4
 
3
5
  # Specify your gem's dependencies in rocketchat.gemspec
data/README.md CHANGED
@@ -42,6 +42,10 @@ This gem supports the following Rocket.Chat APIs (Tested against Rocket.Chat v0.
42
42
  * [/api/v1/chat.postMessage](docs/chat.md#postmessage)
43
43
  * [/api/v1/chat.update](docs/chat.md#update)
44
44
 
45
+ #### IM
46
+ * [/api/v1/im.create](docs/im.md#create)
47
+ * [/api/v1/im.counters](docs/im.md#counters)
48
+
45
49
  #### Channels
46
50
  * /api/v1/channels.archive
47
51
  * [/api/v1/channels.create](docs/channels.md#channelscreate)
@@ -64,6 +68,7 @@ This gem supports the following Rocket.Chat APIs (Tested against Rocket.Chat v0.
64
68
  * [/api/v1/channels.setTopic](docs/channels.md#channelsset_attr)
65
69
  * [/api/v1/channels.setType](docs/channels.md#channelsset_attr)
66
70
  * [/api/v1/channels.online](docs/channels.md#channelsonline)
71
+ * [/api/v1/channels.members](docs/channels.md#channelsmembers)
67
72
  * /api/v1/channels.unarchive
68
73
 
69
74
  #### Groups
@@ -85,6 +90,7 @@ This gem supports the following Rocket.Chat APIs (Tested against Rocket.Chat v0.
85
90
  * /api/v1/groups.setReadOnly
86
91
  * /api/v1/groups.setTopic
87
92
  * /api/v1/groups.setType
93
+ * [/api/v1/groups.members](docs/groups.md#groupsmembers)
88
94
  * /api/v1/groups.unarchive
89
95
 
90
96
  #### Users
data/Rakefile CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'bundler/gem_tasks'
2
4
  require 'rspec/core/rake_task'
3
5
 
data/bin/console CHANGED
@@ -1,4 +1,5 @@
1
1
  #!/usr/bin/env ruby
2
+ # frozen_string_literal: true
2
3
 
3
4
  require 'bundler/setup'
4
5
  require 'rocketchat'
@@ -1,7 +1,13 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  class Error < StandardError; end
5
+
3
6
  class HTTPError < Error; end
7
+
4
8
  class InvalidMethodError < HTTPError; end
9
+
5
10
  class JsonParseError < Error; end
11
+
6
12
  class StatusError < Error; end
7
13
  end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
- VERSION = '0.1.17'.freeze
4
+ VERSION = '0.1.21'
3
5
  end
@@ -0,0 +1,56 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RocketChat
4
+ #
5
+ # Rocket.Chat IM Summary
6
+ #
7
+ class ImSummary
8
+ # Raw info data
9
+ attr_reader :data
10
+
11
+ #
12
+ # @param [Hash] data Raw info data
13
+ #
14
+ def initialize(data)
15
+ @data = Util.stringify_hash_keys data
16
+ end
17
+
18
+ def joined
19
+ data['joined']
20
+ end
21
+
22
+ # Qty of members in the chat
23
+ def members
24
+ data['members']
25
+ end
26
+
27
+ # Qty of unread messages
28
+ def unreads
29
+ data['unreads']
30
+ end
31
+
32
+ # Timestamp
33
+ def unreads_from
34
+ data['unreadsFrom']
35
+ end
36
+
37
+ # Qty of messages in the chat
38
+ def msgs
39
+ data['msgs']
40
+ end
41
+
42
+ # Last message sent
43
+ def latest
44
+ data['latest']
45
+ end
46
+
47
+ # Qty of mentions
48
+ def user_mentions
49
+ data['userMentions']
50
+ end
51
+
52
+ def success
53
+ data['success']
54
+ end
55
+ end
56
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  #
3
5
  # Rocket.Chat Info
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  #
3
5
  # Rocket.Chat Message
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  module Messages
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  module Messages
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  module Messages
3
5
  #
@@ -55,6 +57,38 @@ module RocketChat
55
57
  response['groups'].map { |hash| RocketChat::Room.new hash } if response['success']
56
58
  end
57
59
 
60
+ # groups.listAll REST API
61
+ # @param [Integer] offset Query offset
62
+ # @param [Integer] count Query count/limit
63
+ # @param [Hash] sort Query field sort hash. eg `{ msgs: 1, name: -1 }`
64
+ # @param [Hash] fields Query fields to return. eg `{ name: 1, ro: 0 }`
65
+ # @return [Room[]]
66
+ # @raise [HTTPError, StatusError]
67
+ #
68
+ def list_all(offset: nil, count: nil, sort: nil, fields: nil, query: nil)
69
+ response = session.request_json(
70
+ '/api/v1/groups.listAll',
71
+ body: build_list_body(offset, count, sort, fields, query)
72
+ )
73
+
74
+ response['groups'].map { |hash| RocketChat::Room.new hash } if response['success']
75
+ end
76
+
77
+ #
78
+ # groups.online REST API
79
+ # @param [String] room_id Rocket.Chat room id
80
+ # @return [Users[]]
81
+ # @raise [HTTPError, StatusError]
82
+ #
83
+ def online(room_id: nil, name: nil)
84
+ response = session.request_json(
85
+ '/api/v1/groups.online',
86
+ body: room_params(room_id, name)
87
+ )
88
+
89
+ response['online'].map { |hash| RocketChat::User.new hash } if response['success']
90
+ end
91
+
58
92
  # Keys for set_attr:
59
93
  # * [String] description A room's description
60
94
  # * [String] purpose Alias for description
@@ -0,0 +1,101 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RocketChat
4
+ module Messages
5
+ #
6
+ # Rocket.Chat Direct messages
7
+ #
8
+ class Im
9
+ include ListSupport
10
+
11
+ #
12
+ # @param [Session] session Session
13
+ #
14
+ def initialize(session)
15
+ @session = session
16
+ end
17
+
18
+ #
19
+ # im.create REST API
20
+ # @param [String] username Rocket.Chat username
21
+ # @param [String[]] usernames Array of Rocket.Chat usernames
22
+ # @param [Boolean] exclude_self Flag indicating whether the authenticated user should be included in the group
23
+ # @return [RocketChat::Room]
24
+ # @raise [HTTPError, StatusError]
25
+ #
26
+ def create(username: nil, usernames: nil, exclude_self: false)
27
+ params =
28
+ if exclude_self
29
+ { usernames: usernames.join(','), excludeSelf: true }
30
+ elsif usernames
31
+ { usernames: usernames.join(',') }
32
+ else
33
+ { username: username }
34
+ end
35
+
36
+ response = session.request_json(
37
+ '/api/v1/im.create',
38
+ method: :post,
39
+ body: params
40
+ )
41
+ RocketChat::Room.new response['room']
42
+ end
43
+
44
+ #
45
+ # im.delete REST API
46
+ # @param [String] room_id Rocket.Chat direct message room ID
47
+ # @return [Boolean]
48
+ # @raise [HTTPError, StatusError]
49
+ #
50
+ def delete(room_id: nil)
51
+ session.request_json(
52
+ '/api/v1/im.delete',
53
+ method: :post,
54
+ body: { roomId: room_id },
55
+ upstreamed_errors: ['error-room-not-found']
56
+ )['success']
57
+ end
58
+
59
+ #
60
+ # im.list.everyone REST API
61
+ # @param [Integer] offset Query offset
62
+ # @param [Integer] count Query count/limit
63
+ # @param [Hash] sort Query field sort hash. eg `{ msgs: 1, name: -1 }`
64
+ # @param [Hash] fields Query fields to return. eg `{ name: 1, ro: 0 }`
65
+ # @param [Hash] query The query. `{ active: true, type: { '$in': ['name', 'general'] } }`
66
+ # @return [Room[]]
67
+ # @raise [HTTPError, StatusError]
68
+ #
69
+ def list_everyone(offset: nil, count: nil, sort: nil, fields: nil, query: nil)
70
+ response = session.request_json(
71
+ '/api/v1/im.list.everyone',
72
+ body: build_list_body(offset, count, sort, fields, query)
73
+ )
74
+
75
+ response['ims'].map { |hash| RocketChat::Room.new hash } if response['success']
76
+ end
77
+
78
+ #
79
+ # im.counters REST API
80
+ # @param [String] room_id Rocket.Chat roomId
81
+ # @param [String] username Rocket.Chat username
82
+ # @return [RocketChat::ImSummary]
83
+ # @raise [HTTPError, StatusError]
84
+ #
85
+ def counters(room_id:, username: nil)
86
+ response = session.request_json(
87
+ '/api/v1/im.counters',
88
+ body: {
89
+ roomId: room_id,
90
+ username: username
91
+ }
92
+ )
93
+ RocketChat::ImSummary.new response
94
+ end
95
+
96
+ private
97
+
98
+ attr_reader :session
99
+ end
100
+ end
101
+ end
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  module Messages
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  module Messages
3
5
  #
@@ -9,9 +11,11 @@ module RocketChat
9
11
 
10
12
  def self.inherited(subclass)
11
13
  field = subclass.name.split('::')[-1].downcase
12
- collection = field + 's'
14
+ collection = "#{field}s"
13
15
  subclass.send(:define_singleton_method, :field) { field }
14
16
  subclass.send(:define_singleton_method, :collection) { collection }
17
+
18
+ super
15
19
  end
16
20
 
17
21
  #
@@ -281,6 +285,25 @@ module RocketChat
281
285
  )['success']
282
286
  end
283
287
 
288
+ #
289
+ # *.members* REST API
290
+ # @param [String] room_id Rocket.Chat room id
291
+ # @param [String] name Rocket.Chat room name
292
+ # @param [Integer] offset Query offset
293
+ # @param [Integer] count Query count/limit
294
+ # @param [Hash] sort Query field sort hash. eg `{ msgs: 1, name: -1 }`
295
+ # @return [Users[]]
296
+ # @raise [HTTPError, StatusError]
297
+ #
298
+ def members(room_id: nil, name: nil, offset: nil, count: nil, sort: nil)
299
+ response = session.request_json(
300
+ self.class.api_path('members'),
301
+ body: room_params(room_id, name).merge(build_list_body(offset, count, sort, nil, nil))
302
+ )
303
+
304
+ response['members'].map { |hash| RocketChat::User.new hash } if response['success']
305
+ end
306
+
284
307
  private
285
308
 
286
309
  attr_reader :session
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  module Messages
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  module Messages
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  module Messages
3
5
  #
@@ -67,7 +69,7 @@ module RocketChat
67
69
  method: :post,
68
70
  body: {
69
71
  userId: id,
70
- data: user_option_hash(options, true)
72
+ data: user_option_hash(options, include_personal_fields: true)
71
73
  }
72
74
  )
73
75
  RocketChat::User.new response['user']
@@ -112,13 +114,16 @@ module RocketChat
112
114
  # users.info REST API
113
115
  # @param [String] user_id Rocket.Chat user id
114
116
  # @param [String] username Username
117
+ # @param [Boolean] include_rooms Whether to include rooms in the response.
118
+ # Requires calling user to have the `view-other-user-channels` permission
115
119
  # @return [User]
116
120
  # @raise [HTTPError, StatusError]
117
121
  #
118
- def info(user_id: nil, username: nil)
122
+ def info(user_id: nil, username: nil, include_rooms: false)
119
123
  response = session.request_json(
120
124
  '/api/v1/users.info',
121
- body: user_params(user_id, username),
125
+ body: user_params(user_id, username)
126
+ .merge(include_rooms ? { fields: { userRooms: 1 }.to_json } : {}),
122
127
  upstreamed_errors: ['error-invalid-user']
123
128
  )
124
129
 
@@ -177,7 +182,7 @@ module RocketChat
177
182
 
178
183
  attr_reader :session
179
184
 
180
- def user_option_hash(options, include_personal_fields = false)
185
+ def user_option_hash(options, include_personal_fields: false)
181
186
  args = [options, :active, :roles, :join_default_channels, :require_password_change,
182
187
  :send_welcome_email, :verified, :custom_fields]
183
188
  args += %i[username email name password] if include_personal_fields
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  module Messages
3
5
  #
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  #
3
5
  # Rocket.Chat PresenceStatus
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'uri'
2
4
  require 'openssl'
3
5
  require 'net/http'
@@ -30,7 +32,7 @@ module RocketChat
30
32
  check_response response, fail_unless_ok
31
33
 
32
34
  response_json = parse_response(response.body)
33
- options[:debug].puts("Response: #{response_json.inspect}") if options[:debug]
35
+ options[:debug]&.puts("Response: #{response_json.inspect}")
34
36
  check_response_json response_json, upstreamed_errors
35
37
 
36
38
  response_json
@@ -109,7 +111,7 @@ module RocketChat
109
111
  add_body(req, body) if body
110
112
  else
111
113
  uri = path
112
- uri += '?' + body.map { |k, v| "#{k}=#{v}" }.join('&') if body
114
+ uri += "?#{body.map { |k, v| "#{k}=#{v}" }.join('&')}" if body
113
115
  req = Net::HTTP::Get.new(uri, headers)
114
116
  end
115
117
 
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  #
3
5
  # Rocket.Chat Room
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  #
3
5
  # Rocket.Chat Server
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  #
3
5
  # Rocket.Chat Session
@@ -58,6 +60,10 @@ module RocketChat
58
60
  @chat ||= RocketChat::Messages::Chat.new(self)
59
61
  end
60
62
 
63
+ def im
64
+ @im ||= RocketChat::Messages::Im.new(self)
65
+ end
66
+
61
67
  #
62
68
  # Settings messages proxy
63
69
  # @return [Messages::Settings]
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  #
3
5
  # Rocket.Chat Token
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  #
3
5
  # Rocket.Chat User
@@ -68,6 +70,21 @@ module RocketChat
68
70
  data['roles']
69
71
  end
70
72
 
73
+ # User rooms
74
+ def rooms
75
+ return [] unless data['rooms'].is_a? Array
76
+
77
+ data['rooms'].map do |hash|
78
+ # the users.info API returns the rooms data with the subscription ID as `_id` and room ID as `rid`
79
+ if hash['rid']
80
+ hash['subscription_id'] = hash['_id']
81
+ hash['_id'] = hash['rid']
82
+ end
83
+
84
+ RocketChat::Room.new hash
85
+ end
86
+ end
87
+
71
88
  def inspect
72
89
  format(
73
90
  '#<%<class_name>s:0x%<object_id>p @id="%<id>s" @username="%<username>s" @active="%<active>s">',
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  #
3
5
  # Rocket.Chat generic utility functions
data/lib/rocketchat.rb CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'rocket_chat/gem_version'
2
4
 
3
5
  require 'json'
@@ -16,6 +18,7 @@ require 'rocket_chat/messages/room'
16
18
  require 'rocket_chat/messages/channel'
17
19
  require 'rocket_chat/messages/group'
18
20
  require 'rocket_chat/messages/chat'
21
+ require 'rocket_chat/messages/im'
19
22
 
20
23
  require 'rocket_chat/server'
21
24
  require 'rocket_chat/session'
@@ -25,3 +28,4 @@ require 'rocket_chat/presence_status'
25
28
  require 'rocket_chat/room'
26
29
  require 'rocket_chat/user'
27
30
  require 'rocket_chat/message'
31
+ require 'rocket_chat/im_summary'
data/rocketchat.gemspec CHANGED
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
 
@@ -13,17 +15,20 @@ Gem::Specification.new do |spec|
13
15
  spec.description = 'Rocket.Chat REST API v1 for Ruby'
14
16
  spec.homepage = 'https://github.com/abrom/rocketchat-ruby'
15
17
  spec.license = 'MIT'
18
+ spec.required_ruby_version = ['>= 2.5.0', '< 3.1.0']
16
19
 
17
20
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|docs)/}) }
18
21
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
19
22
  spec.require_paths = ['lib']
20
23
 
21
24
  spec.add_development_dependency 'bundler', ['>= 1.11', '< 3.0']
22
- spec.add_development_dependency 'rake', '~> 10.0'
25
+ spec.add_development_dependency 'rake', '>= 12.3.3'
23
26
  spec.add_development_dependency 'rspec', '~> 3.0'
24
- spec.add_development_dependency 'rubocop', '~> 0.62'
25
- spec.add_development_dependency 'rubocop-rspec', '~> 1.31'
27
+ spec.add_development_dependency 'rubocop', '~> 1.12'
28
+ spec.add_development_dependency 'rubocop-performance', '~> 1.10'
29
+ spec.add_development_dependency 'rubocop-rake', '~> 0.5'
30
+ spec.add_development_dependency 'rubocop-rspec', '~> 2.2'
26
31
  spec.add_development_dependency 'simplecov', '~> 0.16'
27
- spec.add_development_dependency 'webmock', '~> 2.3'
32
+ spec.add_development_dependency 'webmock', '~> 3.12'
28
33
  spec.add_development_dependency 'yard', '~> 0.9.11'
29
34
  end
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.17
4
+ version: 0.1.21
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: 2019-01-05 00:00:00.000000000 Z
12
+ date: 2021-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
@@ -35,16 +35,16 @@ dependencies:
35
35
  name: rake
36
36
  requirement: !ruby/object:Gem::Requirement
37
37
  requirements:
38
- - - "~>"
38
+ - - ">="
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: 12.3.3
41
41
  type: :development
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '10.0'
47
+ version: 12.3.3
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: rspec
50
50
  requirement: !ruby/object:Gem::Requirement
@@ -65,28 +65,56 @@ dependencies:
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: '0.62'
68
+ version: '1.12'
69
+ type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '1.12'
76
+ - !ruby/object:Gem::Dependency
77
+ name: rubocop-performance
78
+ requirement: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '1.10'
83
+ type: :development
84
+ prerelease: false
85
+ version_requirements: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - "~>"
88
+ - !ruby/object:Gem::Version
89
+ version: '1.10'
90
+ - !ruby/object:Gem::Dependency
91
+ name: rubocop-rake
92
+ requirement: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - "~>"
95
+ - !ruby/object:Gem::Version
96
+ version: '0.5'
69
97
  type: :development
70
98
  prerelease: false
71
99
  version_requirements: !ruby/object:Gem::Requirement
72
100
  requirements:
73
101
  - - "~>"
74
102
  - !ruby/object:Gem::Version
75
- version: '0.62'
103
+ version: '0.5'
76
104
  - !ruby/object:Gem::Dependency
77
105
  name: rubocop-rspec
78
106
  requirement: !ruby/object:Gem::Requirement
79
107
  requirements:
80
108
  - - "~>"
81
109
  - !ruby/object:Gem::Version
82
- version: '1.31'
110
+ version: '2.2'
83
111
  type: :development
84
112
  prerelease: false
85
113
  version_requirements: !ruby/object:Gem::Requirement
86
114
  requirements:
87
115
  - - "~>"
88
116
  - !ruby/object:Gem::Version
89
- version: '1.31'
117
+ version: '2.2'
90
118
  - !ruby/object:Gem::Dependency
91
119
  name: simplecov
92
120
  requirement: !ruby/object:Gem::Requirement
@@ -107,14 +135,14 @@ dependencies:
107
135
  requirements:
108
136
  - - "~>"
109
137
  - !ruby/object:Gem::Version
110
- version: '2.3'
138
+ version: '3.12'
111
139
  type: :development
112
140
  prerelease: false
113
141
  version_requirements: !ruby/object:Gem::Requirement
114
142
  requirements:
115
143
  - - "~>"
116
144
  - !ruby/object:Gem::Version
117
- version: '2.3'
145
+ version: '3.12'
118
146
  - !ruby/object:Gem::Dependency
119
147
  name: yard
120
148
  requirement: !ruby/object:Gem::Requirement
@@ -149,11 +177,13 @@ files:
149
177
  - bin/console
150
178
  - lib/rocket_chat/error.rb
151
179
  - lib/rocket_chat/gem_version.rb
180
+ - lib/rocket_chat/im_summary.rb
152
181
  - lib/rocket_chat/info.rb
153
182
  - lib/rocket_chat/message.rb
154
183
  - lib/rocket_chat/messages/channel.rb
155
184
  - lib/rocket_chat/messages/chat.rb
156
185
  - lib/rocket_chat/messages/group.rb
186
+ - lib/rocket_chat/messages/im.rb
157
187
  - lib/rocket_chat/messages/list_support.rb
158
188
  - lib/rocket_chat/messages/room.rb
159
189
  - lib/rocket_chat/messages/room_support.rb
@@ -182,15 +212,17 @@ required_ruby_version: !ruby/object:Gem::Requirement
182
212
  requirements:
183
213
  - - ">="
184
214
  - !ruby/object:Gem::Version
185
- version: '0'
215
+ version: 2.5.0
216
+ - - "<"
217
+ - !ruby/object:Gem::Version
218
+ version: 3.1.0
186
219
  required_rubygems_version: !ruby/object:Gem::Requirement
187
220
  requirements:
188
221
  - - ">="
189
222
  - !ruby/object:Gem::Version
190
223
  version: '0'
191
224
  requirements: []
192
- rubyforge_project:
193
- rubygems_version: 2.7.6
225
+ rubygems_version: 3.0.6
194
226
  signing_key:
195
227
  specification_version: 4
196
228
  summary: Rocket.Chat REST API v1 for Ruby