rocketchat 0.1.15 → 0.1.20

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 7a00601e46ef5efebc3469ce63a08dd821e2764d
4
- data.tar.gz: 6984f7743b729b0a8c3824d6e124d9e1fe220c30
2
+ SHA256:
3
+ metadata.gz: b5f446da6cb7e901ef27edc15d4294fdb1db3a7c6386c35aeec2acbf513a2246
4
+ data.tar.gz: 19bda5415f803dd4a7cf7bc05ec2ec1fcf925d364e55068f0d7630d28e5da190
5
5
  SHA512:
6
- metadata.gz: 1898efe39d392d89c64ddfe76b8539fe6b590edae5906c62959608d7d2fef93ece984bde1e5e51af17279c1fa78808f21dc1552ab09c427f0d2b3db883e7a985
7
- data.tar.gz: e8d7676d832229398c61092d50f3d1ea1f551d11e13aaa0001f5243766d07f06652d7205431593f214cf51eee96325f43e5438ea3c40e351c1611e48a1fb1d94
6
+ metadata.gz: d9c94588357cbeb32f18afe79b3439bded7fc8191b31627a440288642842d971119591cdf47e981836c7ea8b3d4ff76ed36040701b6c0fb24d33e9e7a349ef1a
7
+ data.tar.gz: b14f92c34a2b9a6f17d4da573b793268b3c8f83590326b5faca1e1d6b0b4ebba5bbdea73c1ea5bcc406aa5a729988ac6eb230359f1fbbb8de23b2694b60bc652
data/.gitignore CHANGED
@@ -2,3 +2,4 @@ Gemfile.lock
2
2
  *.gem
3
3
  .bundle
4
4
  vendor/bundle
5
+ coverage
data/.rubocop.yml CHANGED
@@ -1,16 +1,73 @@
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
30
+
1
31
  Metrics/BlockLength:
2
32
  Exclude:
3
33
  - "**/*_spec.rb"
4
34
  - "spec/shared/*.rb"
5
35
 
6
- Metrics/LineLength:
7
- Max: 120
8
-
9
36
  Metrics/MethodLength:
10
37
  Max: 15
11
38
  Exclude:
12
39
  - "**/*_spec.rb"
13
40
 
41
+ RSpec/ExampleLength:
42
+ Max: 10
43
+
44
+ RSpec/MultipleExpectations:
45
+ Max: 5
46
+
47
+ RSpec/MultipleMemoizedHelpers:
48
+ Max: 15
49
+
50
+ Style/ExponentialNotation:
51
+ Enabled: true
52
+
53
+ Style/HashEachMethods:
54
+ Enabled: true
55
+
56
+ Style/HashTransformKeys:
57
+ Enabled: true
58
+
59
+ Style/HashTransformValues:
60
+ Enabled: true
61
+
14
62
  Style/NumericLiterals:
15
63
  Exclude:
16
64
  - "**/*_spec.rb"
65
+
66
+ Style/RedundantRegexpCharacterClass:
67
+ Enabled: true
68
+
69
+ Style/RedundantRegexpEscape:
70
+ Enabled: true
71
+
72
+ Style/SlicingWithRange:
73
+ Enabled: true
data/.travis.yml CHANGED
@@ -1,10 +1,14 @@
1
+ env:
2
+ global:
3
+ - CC_TEST_REPORTER_ID=abf0a371ff8851f13b563671914b195bb46f0997f0f93142e666d9acad08e22f
4
+
1
5
  language: ruby
6
+
2
7
  rvm:
3
- - 2.0
4
- - 2.1
5
- - 2.2
6
- - 2.3
7
- - 2.4
8
+ - 2.5
9
+ - 2.6
10
+ - 2.7
11
+ - 3.0
8
12
 
9
13
  before_install:
10
14
  - gem update bundler
@@ -13,6 +17,14 @@ install:
13
17
  - bundle install --jobs=3 --retry=3
14
18
  - gem install rubocop
15
19
 
20
+ before_script:
21
+ - curl -L https://codeclimate.com/downloads/test-reporter/test-reporter-latest-linux-amd64 > ./cc-test-reporter
22
+ - chmod +x ./cc-test-reporter
23
+ - ./cc-test-reporter before-build
24
+
16
25
  script:
17
- - rubocop
26
+ - bundle exec rubocop
18
27
  - bundle exec rake
28
+
29
+ after_script:
30
+ - ./cc-test-reporter after-build --exit-code $TRAVIS_TEST_RESULT
data/CHANGELOG.md ADDED
@@ -0,0 +1,117 @@
1
+ # Changelog
2
+
3
+ ## Unreleased
4
+ - None
5
+
6
+ ## [0.1.20](releases/tag/v0.1.20) - 2021-03-29
7
+ ### Added
8
+ - [#34] Support for channels.members and groups.members ([@alinavancea][])
9
+
10
+ ### Deprecation
11
+ - [#35] Drop Ruby 2.3 and 2.4 support ([@abrom][])
12
+
13
+ ## [0.1.19](releases/tag/v0.1.19) - 2019-03-01
14
+ ### Fixed
15
+ - Address CVE-2020-8130 - `rake` OS command injection vulnerability ([@abrom][])
16
+
17
+ ## [0.1.18](releases/tag/v0.1.18) - 2018-01-05
18
+ ### Added
19
+ - [#29] Support for im.create and im.counters ([@christianmoretti][])
20
+
21
+ ## [0.1.17](releases/tag/v0.1.17) - 2019-01-05
22
+ ### Deprecation
23
+ - Drop Ruby 2.1 from build matrix ([@abrom][])
24
+
25
+ ## [0.1.16](releases/tag/v0.1.16) - 2018-10-3
26
+ ### Deprecation
27
+ - Drop Ruby 2.0 from build matrix ([@abrom][])
28
+
29
+ ### Added
30
+ - [#27] Support for channels.online ([@chrisstime][])
31
+ - [#28] `rubocop-rspec` dependency and fixed new lints ([@abrom][])
32
+
33
+ ## [0.1.15](releases/tag/v0.1.15) - 2017-12-21
34
+ ### Fixed
35
+ - Updated yard to resolve potential security vulnerability ([@abrom][])
36
+
37
+ ## [0.1.14](releases/tag/v0.1.14) - 2017-10-9
38
+ ### Added
39
+ - [#19] Room/channel kick function ([@hardik127][])
40
+
41
+ ## [0.1.13](releases/tag/v0.1.13) - 2017-10-9
42
+ ### Added
43
+ - Support for channel/group addAll endpoint ([@abrom][])
44
+
45
+ ## [0.1.12](releases/tag/v0.1.12) - 2017-08-28
46
+ ### Fixed
47
+ - GET request parameter encoding ([@abrom][])
48
+
49
+ ## [0.1.11](releases/tag/v0.1.11) - 2017-08-22
50
+ ### Fixed
51
+ - [#15] Response parser improvements ([@reist][],[@danischreiber][])
52
+ - [#17] Fixed a missing dependency issue with `net/http` ([@abrom][])
53
+
54
+ ### Added
55
+ - [#14] Add/remove moderator from room ([@danischreiber][])
56
+
57
+ ## [0.1.10](releases/tag/v0.1.10) - 2017-07-31
58
+ ### Added
59
+ - [#13] Allow query to be passed through for `list` requests ([@danischreiber][])
60
+
61
+ ## [0.1.9](releases/tag/v0.1.9) - 2017-07-16
62
+ ### Fixed
63
+ - Update chat message handlers to support Ruby 2.0 ([@abrom][])
64
+
65
+ ## [0.1.8](releases/tag/v0.1.8) - 2017-07-16
66
+ ### Added
67
+ - Messages chat API support ([@abrom][])
68
+
69
+ ## [0.1.7](releases/tag/v0.1.7) - 2017-07-16
70
+ ### Added
71
+ - [#10] Archive/unarchive room support ([@danischreiber][])
72
+
73
+ ## [0.1.6](releases/tag/v0.1.6) - 2017-07-12
74
+ ### Added
75
+ - [#8] Various channel/group (room) API support ([@reist][],[@danischreiber][])
76
+
77
+ ## [0.1.5](releases/tag/v0.1.5) - 2017-07-9
78
+ ### Added
79
+ - [#6] User createToken and resetAvatar endpoints ([@reist][])
80
+ - [#7] Support for debugging server calls ([@reist][])
81
+
82
+ ## [0.1.4](releases/tag/v0.1.4) - 2017-07-9
83
+ ### Fixed
84
+ - Fixed a missing dependency issue with `uri` ([@abrom][])
85
+
86
+ ## [0.1.2](releases/tag/v0.1.2) - 2017-05-24
87
+ ### Added
88
+ - [#3] Initial support for 'Room' endpoints ([@reist][])
89
+
90
+ ## [0.1.1](releases/tag/v0.1.1) - 2017-05-1
91
+ ### Added
92
+ - Support for settings get/set endpoints ([@abrom][])
93
+
94
+ ## [0.0.8](releases/tag/v0.0.8) - 2017-04-30
95
+ ### Added
96
+ - Support for Users `getPresence` endpoint ([@abrom][])
97
+
98
+ ## [0.0.7](releases/tag/v0.0.7) - 2017-04-30
99
+ ### Added
100
+ - Support for Users `list` endpoint ([@abrom][])
101
+
102
+ ## [0.0.6](releases/tag/v0.0.6) - 2017-04-25
103
+ ### Fixed
104
+ - [#2] Allow requests to include server options ([@reist][])
105
+
106
+ ## [0.0.5](releases/tag/v0.0.5) - 2017-04-25
107
+ ### Added
108
+ - [#1] Added Users `info` and `delete` endpoints ([@reist][])
109
+
110
+ [@abrom]: https://github.com/abrom
111
+ [@reist]: https://github.com/reist
112
+ [@danischreiber]: https://github.com/danischreiber
113
+ [@hardik127]: https://github.com/hardik127
114
+ [@chrisstime]: https://github.com/chrisstime
115
+ [@christianmoretti]: https://github.com/christianmoretti
116
+ [@alinavancea]: https://github.com/alinavancea
117
+
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/LICENSE CHANGED
@@ -1,7 +1,7 @@
1
1
  MIT License
2
2
 
3
3
  Copyright (c) 2016 int512
4
- Copyright (c) 2017 Andrew Bromwich
4
+ Copyright (c) 2019 Andrew Bromwich
5
5
 
6
6
  Permission is hereby granted, free of charge, to any person obtaining a copy
7
7
  of this software and associated documentation files (the "Software"), to deal
data/README.md CHANGED
@@ -1,5 +1,6 @@
1
1
  [![Travis Build Status](http://img.shields.io/travis/abrom/rocketchat-ruby.svg?style=flat)](https://travis-ci.org/abrom/rocketchat-ruby)
2
- [![Code Climate Score](http://img.shields.io/codeclimate/github/abrom/rocketchat-ruby.svg?style=flat)](https://codeclimate.com/github/abrom/rocketchat-ruby)
2
+ [![Maintainability](https://api.codeclimate.com/v1/badges/9de85764122a44a14c22/maintainability)](https://codeclimate.com/github/abrom/rocketchat-ruby/maintainability)
3
+ [![Test Coverage](https://api.codeclimate.com/v1/badges/9de85764122a44a14c22/test_coverage)](https://codeclimate.com/github/abrom/rocketchat-ruby/test_coverage)
3
4
  [![Gem Version](http://img.shields.io/gem/v/rocketchat.svg?style=flat)](#)
4
5
 
5
6
  # Rocket.Chat REST API for Ruby
@@ -31,15 +32,19 @@ This gem supports the following Rocket.Chat APIs (Tested against Rocket.Chat v0.
31
32
  * [/api/v1/info](#info)
32
33
 
33
34
  #### Authentication
34
- * [/api/v1/login](#authentication)
35
- * [/api/v1/logout](#authentication)
35
+ * [/api/v1/login](docs/authentication.md#login)
36
+ * [/api/v1/logout](docs/authentication.md#logout)
36
37
  * /api/v1/me
37
38
 
38
39
  #### Chat
39
- * /api/v1/chat.delete
40
- * /api/v1/chat.getMessage
41
- * /api/v1/chat.postMessage
42
- * /api/v1/chat.update
40
+ * [/api/v1/chat.delete](docs/chat.md#delete)
41
+ * [/api/v1/chat.getMessage](docs/chat.md#getmessage)
42
+ * [/api/v1/chat.postMessage](docs/chat.md#postmessage)
43
+ * [/api/v1/chat.update](docs/chat.md#update)
44
+
45
+ #### IM
46
+ * [/api/v1/im.create](docs/im.md#create)
47
+ * [/api/v1/im.counters](docs/im.md#counters)
43
48
 
44
49
  #### Channels
45
50
  * /api/v1/channels.archive
@@ -62,6 +67,8 @@ This gem supports the following Rocket.Chat APIs (Tested against Rocket.Chat v0.
62
67
  * [/api/v1/channels.setReadOnly](docs/channels.md#channelsset_attr)
63
68
  * [/api/v1/channels.setTopic](docs/channels.md#channelsset_attr)
64
69
  * [/api/v1/channels.setType](docs/channels.md#channelsset_attr)
70
+ * [/api/v1/channels.online](docs/channels.md#channelsonline)
71
+ * [/api/v1/channels.members](docs/channels.md#channelsmembers)
65
72
  * /api/v1/channels.unarchive
66
73
 
67
74
  #### Groups
@@ -83,6 +90,7 @@ This gem supports the following Rocket.Chat APIs (Tested against Rocket.Chat v0.
83
90
  * /api/v1/groups.setReadOnly
84
91
  * /api/v1/groups.setTopic
85
92
  * /api/v1/groups.setType
93
+ * [/api/v1/groups.members](docs/groups.md#groupsmembers)
86
94
  * /api/v1/groups.unarchive
87
95
 
88
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.15'.freeze
4
+ VERSION = '0.1.20'
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
  #
@@ -5,6 +7,7 @@ module RocketChat
5
7
  #
6
8
  class Channel < Room
7
9
  include ListSupport
10
+ include UserSupport
8
11
 
9
12
  #
10
13
  # channels.join REST API
@@ -40,6 +43,21 @@ module RocketChat
40
43
  response['channels'].map { |hash| RocketChat::Room.new hash } if response['success']
41
44
  end
42
45
 
46
+ #
47
+ # channels.online REST API
48
+ # @param [String] room_id Rocket.Chat room id
49
+ # @return [Users[]]
50
+ # @raise [HTTPError, StatusError]
51
+ #
52
+ def online(room_id: nil, name: nil)
53
+ response = session.request_json(
54
+ '/api/v1/channels.online',
55
+ body: room_params(room_id, name)
56
+ )
57
+
58
+ response['online'].map { |hash| RocketChat::User.new hash } if response['success']
59
+ end
60
+
43
61
  # Keys for set_attr:
44
62
  # * [String] description A room's description
45
63
  # * [String] join_code Code to join a channel
@@ -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
  #
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ module RocketChat
4
+ module Messages
5
+ #
6
+ # Rocket.Chat Direct messages
7
+ #
8
+ class Im
9
+ #
10
+ # @param [Session] session Session
11
+ #
12
+ def initialize(session)
13
+ @session = session
14
+ end
15
+
16
+ #
17
+ # im.create REST API
18
+ # @param [String] username Rocket.Chat username
19
+ # @return [RocketChat::Room]
20
+ # @raise [HTTPError, StatusError]
21
+ #
22
+ def create(username:)
23
+ response = session.request_json(
24
+ '/api/v1/im.create',
25
+ method: :post,
26
+ body: { username: username }
27
+ )
28
+ RocketChat::Room.new response['room']
29
+ end
30
+
31
+ #
32
+ # im.counters REST API
33
+ # @param [String] room_id Rocket.Chat roomId
34
+ # @param [String] username Rocket.Chat username
35
+ # @return [RocketChat::ImSummary]
36
+ # @raise [HTTPError, StatusError]
37
+ #
38
+ def counters(room_id:, username: nil)
39
+ response = session.request_json(
40
+ '/api/v1/im.counters',
41
+ body: {
42
+ roomId: room_id,
43
+ username: username
44
+ }
45
+ )
46
+ RocketChat::ImSummary.new response
47
+ end
48
+
49
+ private
50
+
51
+ attr_reader :session
52
+ end
53
+ end
54
+ 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']
@@ -177,7 +179,7 @@ module RocketChat
177
179
 
178
180
  attr_reader :session
179
181
 
180
- def user_option_hash(options, include_personal_fields = false)
182
+ def user_option_hash(options, include_personal_fields: false)
181
183
  args = [options, :active, :roles, :join_default_channels, :require_password_change,
182
184
  :send_welcome_email, :verified, :custom_fields]
183
185
  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
@@ -56,6 +58,7 @@ module RocketChat
56
58
 
57
59
  def check_response(response, fail_unless_ok)
58
60
  return if response.is_a?(Net::HTTPOK) || !(fail_unless_ok || response.is_a?(Net::HTTPServerError))
61
+
59
62
  raise RocketChat::HTTPError, "Invalid http response code: #{response.code}"
60
63
  end
61
64
 
@@ -81,6 +84,7 @@ module RocketChat
81
84
  end
82
85
 
83
86
  return unless headers
87
+
84
88
  headers = Util.stringify_hash_keys headers
85
89
  headers.delete_if { |key, value| key.nil? || value.nil? }
86
90
  end
@@ -107,7 +111,7 @@ module RocketChat
107
111
  add_body(req, body) if body
108
112
  else
109
113
  uri = path
110
- uri += '?' + body.map { |k, v| "#{k}=#{v}" }.join('&') if body
114
+ uri += "?#{body.map { |k, v| "#{k}=#{v}" }.join('&')}" if body
111
115
  req = Net::HTTP::Get.new(uri, headers)
112
116
  end
113
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
@@ -63,6 +65,11 @@ module RocketChat
63
65
  data['active']
64
66
  end
65
67
 
68
+ # User roles
69
+ def roles
70
+ data['roles']
71
+ end
72
+
66
73
  def inspect
67
74
  format(
68
75
  '#<%<class_name>s:0x%<object_id>p @id="%<id>s" @username="%<username>s" @active="%<active>s">',
@@ -1,8 +1,12 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module RocketChat
2
4
  #
3
5
  # Rocket.Chat generic utility functions
4
6
  #
5
7
  module Util
8
+ module_function
9
+
6
10
  #
7
11
  # Stringify symbolized hash keys
8
12
  # @param [Hash] hash A string/symbol keyed hash
@@ -20,7 +24,6 @@ module RocketChat
20
24
  end
21
25
  new_hash
22
26
  end
23
- module_function :stringify_hash_keys
24
27
 
25
28
  #
26
29
  # Slice keys from hash
@@ -37,7 +40,6 @@ module RocketChat
37
40
  end
38
41
  new_hash
39
42
  end
40
- module_function :slice_hash
41
43
 
42
44
  #
43
45
  # Camelize a string or symbol
@@ -47,6 +49,5 @@ module RocketChat
47
49
  def camelize(string)
48
50
  string.to_s.gsub(/_([a-z])/) { Regexp.last_match(1).upcase }
49
51
  end
50
- module_function :camelize
51
52
  end
52
53
  end
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,4 +1,6 @@
1
- lib = File.expand_path('../lib', __FILE__)
1
+ # frozen_string_literal: true
2
+
3
+ lib = File.expand_path('lib', __dir__)
2
4
  $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
5
 
4
6
  require 'rocket_chat/gem_version'
@@ -13,15 +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
- spec.add_development_dependency 'bundler', '~> 1.11'
22
- spec.add_development_dependency 'rake', '~> 10.0'
24
+ spec.add_development_dependency 'bundler', ['>= 1.11', '< 3.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.52'
25
- spec.add_development_dependency 'webmock', '~> 2.3'
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'
31
+ spec.add_development_dependency 'simplecov', '~> 0.16'
32
+ spec.add_development_dependency 'webmock', '~> 3.12'
26
33
  spec.add_development_dependency 'yard', '~> 0.9.11'
27
34
  end
metadata CHANGED
@@ -1,44 +1,50 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rocketchat
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.15
4
+ version: 0.1.20
5
5
  platform: ruby
6
6
  authors:
7
7
  - int512
8
8
  - abrom
9
- autorequire:
9
+ autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-12-21 00:00:00.000000000 Z
12
+ date: 2021-03-29 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler
16
16
  requirement: !ruby/object:Gem::Requirement
17
17
  requirements:
18
- - - "~>"
18
+ - - ">="
19
19
  - !ruby/object:Gem::Version
20
20
  version: '1.11'
21
+ - - "<"
22
+ - !ruby/object:Gem::Version
23
+ version: '3.0'
21
24
  type: :development
22
25
  prerelease: false
23
26
  version_requirements: !ruby/object:Gem::Requirement
24
27
  requirements:
25
- - - "~>"
28
+ - - ">="
26
29
  - !ruby/object:Gem::Version
27
30
  version: '1.11'
31
+ - - "<"
32
+ - !ruby/object:Gem::Version
33
+ version: '3.0'
28
34
  - !ruby/object:Gem::Dependency
29
35
  name: rake
30
36
  requirement: !ruby/object:Gem::Requirement
31
37
  requirements:
32
- - - "~>"
38
+ - - ">="
33
39
  - !ruby/object:Gem::Version
34
- version: '10.0'
40
+ version: 12.3.3
35
41
  type: :development
36
42
  prerelease: false
37
43
  version_requirements: !ruby/object:Gem::Requirement
38
44
  requirements:
39
- - - "~>"
45
+ - - ">="
40
46
  - !ruby/object:Gem::Version
41
- version: '10.0'
47
+ version: 12.3.3
42
48
  - !ruby/object:Gem::Dependency
43
49
  name: rspec
44
50
  requirement: !ruby/object:Gem::Requirement
@@ -59,28 +65,84 @@ dependencies:
59
65
  requirements:
60
66
  - - "~>"
61
67
  - !ruby/object:Gem::Version
62
- version: '0.52'
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'
97
+ type: :development
98
+ prerelease: false
99
+ version_requirements: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - "~>"
102
+ - !ruby/object:Gem::Version
103
+ version: '0.5'
104
+ - !ruby/object:Gem::Dependency
105
+ name: rubocop-rspec
106
+ requirement: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - "~>"
109
+ - !ruby/object:Gem::Version
110
+ version: '2.2'
63
111
  type: :development
64
112
  prerelease: false
65
113
  version_requirements: !ruby/object:Gem::Requirement
66
114
  requirements:
67
115
  - - "~>"
68
116
  - !ruby/object:Gem::Version
69
- version: '0.52'
117
+ version: '2.2'
118
+ - !ruby/object:Gem::Dependency
119
+ name: simplecov
120
+ requirement: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - "~>"
123
+ - !ruby/object:Gem::Version
124
+ version: '0.16'
125
+ type: :development
126
+ prerelease: false
127
+ version_requirements: !ruby/object:Gem::Requirement
128
+ requirements:
129
+ - - "~>"
130
+ - !ruby/object:Gem::Version
131
+ version: '0.16'
70
132
  - !ruby/object:Gem::Dependency
71
133
  name: webmock
72
134
  requirement: !ruby/object:Gem::Requirement
73
135
  requirements:
74
136
  - - "~>"
75
137
  - !ruby/object:Gem::Version
76
- version: '2.3'
138
+ version: '3.12'
77
139
  type: :development
78
140
  prerelease: false
79
141
  version_requirements: !ruby/object:Gem::Requirement
80
142
  requirements:
81
143
  - - "~>"
82
144
  - !ruby/object:Gem::Version
83
- version: '2.3'
145
+ version: '3.12'
84
146
  - !ruby/object:Gem::Dependency
85
147
  name: yard
86
148
  requirement: !ruby/object:Gem::Requirement
@@ -107,6 +169,7 @@ files:
107
169
  - ".gitignore"
108
170
  - ".rubocop.yml"
109
171
  - ".travis.yml"
172
+ - CHANGELOG.md
110
173
  - Gemfile
111
174
  - LICENSE
112
175
  - README.md
@@ -114,11 +177,13 @@ files:
114
177
  - bin/console
115
178
  - lib/rocket_chat/error.rb
116
179
  - lib/rocket_chat/gem_version.rb
180
+ - lib/rocket_chat/im_summary.rb
117
181
  - lib/rocket_chat/info.rb
118
182
  - lib/rocket_chat/message.rb
119
183
  - lib/rocket_chat/messages/channel.rb
120
184
  - lib/rocket_chat/messages/chat.rb
121
185
  - lib/rocket_chat/messages/group.rb
186
+ - lib/rocket_chat/messages/im.rb
122
187
  - lib/rocket_chat/messages/list_support.rb
123
188
  - lib/rocket_chat/messages/room.rb
124
189
  - lib/rocket_chat/messages/room_support.rb
@@ -139,7 +204,7 @@ homepage: https://github.com/abrom/rocketchat-ruby
139
204
  licenses:
140
205
  - MIT
141
206
  metadata: {}
142
- post_install_message:
207
+ post_install_message:
143
208
  rdoc_options: []
144
209
  require_paths:
145
210
  - lib
@@ -147,16 +212,18 @@ required_ruby_version: !ruby/object:Gem::Requirement
147
212
  requirements:
148
213
  - - ">="
149
214
  - !ruby/object:Gem::Version
150
- version: '0'
215
+ version: 2.5.0
216
+ - - "<"
217
+ - !ruby/object:Gem::Version
218
+ version: 3.1.0
151
219
  required_rubygems_version: !ruby/object:Gem::Requirement
152
220
  requirements:
153
221
  - - ">="
154
222
  - !ruby/object:Gem::Version
155
223
  version: '0'
156
224
  requirements: []
157
- rubyforge_project:
158
- rubygems_version: 2.6.13
159
- signing_key:
225
+ rubygems_version: 3.2.3
226
+ signing_key:
160
227
  specification_version: 4
161
228
  summary: Rocket.Chat REST API v1 for Ruby
162
229
  test_files: []