rocketchat 0.2.2 → 0.2.3

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
2
  SHA256:
3
- metadata.gz: 4a6c0288c4420a286b0444dc84749e572fa40806874616673a360a509dfa90f8
4
- data.tar.gz: e6d74695c8e75fa49c51f4de0e6db86476b965351a9a7231d9f57b5a59d70bd1
3
+ metadata.gz: a9dd649b2ce883c528aaaa759be25034b0bf112b4c5e21ac3c9202fab78a6baa
4
+ data.tar.gz: 23e96835f8b14e4601b78bc10506ee222665acc5409b45380572007db067f765
5
5
  SHA512:
6
- metadata.gz: bbecd274cd60768eb7fcc19a95cd9652d474405bb80047aa16e51a700b2468b1057cdfe907ab093471e4227a6870924b05c89cb41a2be8742c7a5ddb4e6a6248
7
- data.tar.gz: f6e927d6dca42397da5ea9517033e9549f9ebc238e1f994aee63ef5f33644d497330a4dfd74426f3564f71223af257a79678ac346bce5dc4610d5e95423977ba
6
+ metadata.gz: 9977334377d472e5e51b941f4cf359473b588d2572965bde362d79ffe09e3afc8defdfd47904a32e1e12e47f368917447dc8710227c24d76155d74ea6ee301be
7
+ data.tar.gz: 82fe7597f43165cedeae9328e2cf8145d9bc5cc0b39f924dfed7580262c1e112a010e5e5711ca74396ee494ffb7855e6aae51adb8c7f6790f7117be54b297569
data/CHANGELOG.md CHANGED
@@ -3,6 +3,10 @@
3
3
  ## Unreleased
4
4
  - None
5
5
 
6
+ ## [0.2.3](releases/tag/v0.2.3) - 2023-08-22
7
+ ### Added
8
+ - [#46] Add file upload support using rooms.upload endpoint ([@MrRTI][])
9
+
6
10
  ## [0.2.2](releases/tag/v0.2.2) - 2023-04-21
7
11
  ### Added
8
12
  - [#43] Add Ruby 3.2 support ([@MrRTI][])
data/Gemfile CHANGED
@@ -4,3 +4,14 @@ source 'https://rubygems.org'
4
4
 
5
5
  # Specify your gem's dependencies in rocketchat.gemspec
6
6
  gemspec
7
+
8
+ gem 'bundler', ['>= 1.11', '< 3.0']
9
+ gem 'rake', '>= 12.3.3'
10
+ gem 'rspec', '~> 3.0'
11
+ gem 'rubocop', '~> 1.28'
12
+ gem 'rubocop-performance', '~> 1.13'
13
+ gem 'rubocop-rake', '~> 0.6'
14
+ gem 'rubocop-rspec', '~> 2.10'
15
+ gem 'simplecov', '~> 0.16', '< 0.18'
16
+ gem 'webmock', '~> 3.12'
17
+ gem 'yard', '~> 0.9.11'
data/README.md CHANGED
@@ -70,6 +70,7 @@ This gem supports the following Rocket.Chat APIs (Tested against Rocket.Chat v0.
70
70
  * [/api/v1/channels.online](docs/channels.md#channelsonline)
71
71
  * [/api/v1/channels.members](docs/channels.md#channelsmembers)
72
72
  * /api/v1/channels.unarchive
73
+ * [/api/v1/rooms.upload](docs/channels.md#channelsupload_file)
73
74
 
74
75
  #### Groups
75
76
  * /api/v1/groups.archive
@@ -92,6 +93,7 @@ This gem supports the following Rocket.Chat APIs (Tested against Rocket.Chat v0.
92
93
  * /api/v1/groups.setType
93
94
  * [/api/v1/groups.members](docs/groups.md#groupsmembers)
94
95
  * /api/v1/groups.unarchive
96
+ * [/api/v1/rooms.upload](docs/groups.md#groupsupload_file)
95
97
 
96
98
  #### Users
97
99
  * [/api/v1/users.create](docs/users.md#userscreate)
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module RocketChat
4
- VERSION = '0.2.2'
4
+ VERSION = '0.2.3'
5
5
  end
@@ -9,6 +9,8 @@ module RocketChat
9
9
  include RoomSupport
10
10
  include UserSupport
11
11
 
12
+ API_PREFIX = '/api/v1'
13
+
12
14
  def self.inherited(subclass)
13
15
  field = subclass.name.split('::')[-1].downcase
14
16
  collection = "#{field}s"
@@ -27,7 +29,7 @@ module RocketChat
27
29
 
28
30
  # Full API path to call
29
31
  def self.api_path(method)
30
- "/api/v1/#{collection}.#{method}"
32
+ "#{API_PREFIX}/#{collection}.#{method}"
31
33
  end
32
34
 
33
35
  #
@@ -304,6 +306,25 @@ module RocketChat
304
306
  response['members'].map { |hash| RocketChat::User.new hash } if response['success']
305
307
  end
306
308
 
309
+ #
310
+ # *.upload* REST API
311
+ # @param [String] room_id Rocket.Chat room id
312
+ # @param [File] file that should be uploaded to Rocket.Chat room
313
+ # @param [Hash] rest_params Optional params (msg, description, tmid)
314
+ # @return [RocketChat::Message]
315
+ # @raise [HTTPError, StatusError]
316
+ #
317
+ # https://developer.rocket.chat/reference/api/rest-api/endpoints/rooms-endpoints/upload-file-to-a-room
318
+ def upload_file(room_id:, file:, **rest_params)
319
+ response = session.request_json(
320
+ "#{API_PREFIX}/rooms.upload/#{room_id}",
321
+ method: :post,
322
+ form_data: file_upload_hash(file: file, **rest_params)
323
+ )
324
+
325
+ RocketChat::Message.new response['message'] if response['success']
326
+ end
327
+
307
328
  private
308
329
 
309
330
  attr_reader :session
@@ -323,6 +344,11 @@ module RocketChat
323
344
  raise ArgumentError, "Unsettable attribute: #{attribute || 'nil'}" unless \
324
345
  self.class.settable_attributes.include?(attribute)
325
346
  end
347
+
348
+ def file_upload_hash(**params)
349
+ permited_keys_for_file_upload = %i[file msg description tmid]
350
+ Util.slice_hash(params, *permited_keys_for_file_upload)
351
+ end
326
352
  end
327
353
  end
328
354
  end
@@ -104,11 +104,14 @@ module RocketChat
104
104
 
105
105
  def create_request(path, options)
106
106
  headers = get_headers(options)
107
- body = options[:body]&.reject { |_key, value| value.nil? }
107
+ body = reject_nils(options[:body])
108
108
 
109
109
  if options[:method] == :post
110
110
  req = Net::HTTP::Post.new(path, headers)
111
111
  add_body(req, body) if body
112
+
113
+ form_data = reject_nils(options[:form_data])
114
+ add_form_data(req, form_data) if form_data
112
115
  else
113
116
  uri = path
114
117
  uri += "?#{URI.encode_www_form(body)}" if body
@@ -126,5 +129,14 @@ module RocketChat
126
129
  request.body = body.to_s
127
130
  end
128
131
  end
132
+
133
+ def add_form_data(request, form_data)
134
+ form_data = form_data.transform_keys(&:to_s) if form_data.is_a? Hash
135
+ request.set_form(form_data, 'multipart/form-data')
136
+ end
137
+
138
+ def reject_nils(data)
139
+ data&.reject { |_key, value| value.nil? }
140
+ end
129
141
  end
130
142
  end
data/rocketchat.gemspec CHANGED
@@ -27,15 +27,4 @@ Gem::Specification.new do |spec|
27
27
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features|docs)/}) }
28
28
  spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
29
29
  spec.require_paths = ['lib']
30
-
31
- spec.add_development_dependency 'bundler', ['>= 1.11', '< 3.0']
32
- spec.add_development_dependency 'rake', '>= 12.3.3'
33
- spec.add_development_dependency 'rspec', '~> 3.0'
34
- spec.add_development_dependency 'rubocop', '~> 1.28'
35
- spec.add_development_dependency 'rubocop-performance', '~> 1.13'
36
- spec.add_development_dependency 'rubocop-rake', '~> 0.6'
37
- spec.add_development_dependency 'rubocop-rspec', '~> 2.10'
38
- spec.add_development_dependency 'simplecov', '~> 0.16', '< 0.18'
39
- spec.add_development_dependency 'webmock', '~> 3.12'
40
- spec.add_development_dependency 'yard', '~> 0.9.11'
41
30
  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.2.2
4
+ version: 0.2.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - int512
@@ -9,160 +9,8 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2023-04-21 00:00:00.000000000 Z
13
- dependencies:
14
- - !ruby/object:Gem::Dependency
15
- name: bundler
16
- requirement: !ruby/object:Gem::Requirement
17
- requirements:
18
- - - ">="
19
- - !ruby/object:Gem::Version
20
- version: '1.11'
21
- - - "<"
22
- - !ruby/object:Gem::Version
23
- version: '3.0'
24
- type: :development
25
- prerelease: false
26
- version_requirements: !ruby/object:Gem::Requirement
27
- requirements:
28
- - - ">="
29
- - !ruby/object:Gem::Version
30
- version: '1.11'
31
- - - "<"
32
- - !ruby/object:Gem::Version
33
- version: '3.0'
34
- - !ruby/object:Gem::Dependency
35
- name: rake
36
- requirement: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: 12.3.3
41
- type: :development
42
- prerelease: false
43
- version_requirements: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: 12.3.3
48
- - !ruby/object:Gem::Dependency
49
- name: rspec
50
- requirement: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '3.0'
55
- type: :development
56
- prerelease: false
57
- version_requirements: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - "~>"
60
- - !ruby/object:Gem::Version
61
- version: '3.0'
62
- - !ruby/object:Gem::Dependency
63
- name: rubocop
64
- requirement: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - "~>"
67
- - !ruby/object:Gem::Version
68
- version: '1.28'
69
- type: :development
70
- prerelease: false
71
- version_requirements: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '1.28'
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.13'
83
- type: :development
84
- prerelease: false
85
- version_requirements: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '1.13'
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.6'
97
- type: :development
98
- prerelease: false
99
- version_requirements: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '0.6'
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.10'
111
- type: :development
112
- prerelease: false
113
- version_requirements: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '2.10'
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
- - - "<"
126
- - !ruby/object:Gem::Version
127
- version: '0.18'
128
- type: :development
129
- prerelease: false
130
- version_requirements: !ruby/object:Gem::Requirement
131
- requirements:
132
- - - "~>"
133
- - !ruby/object:Gem::Version
134
- version: '0.16'
135
- - - "<"
136
- - !ruby/object:Gem::Version
137
- version: '0.18'
138
- - !ruby/object:Gem::Dependency
139
- name: webmock
140
- requirement: !ruby/object:Gem::Requirement
141
- requirements:
142
- - - "~>"
143
- - !ruby/object:Gem::Version
144
- version: '3.12'
145
- type: :development
146
- prerelease: false
147
- version_requirements: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - "~>"
150
- - !ruby/object:Gem::Version
151
- version: '3.12'
152
- - !ruby/object:Gem::Dependency
153
- name: yard
154
- requirement: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - "~>"
157
- - !ruby/object:Gem::Version
158
- version: 0.9.11
159
- type: :development
160
- prerelease: false
161
- version_requirements: !ruby/object:Gem::Requirement
162
- requirements:
163
- - - "~>"
164
- - !ruby/object:Gem::Version
165
- version: 0.9.11
12
+ date: 2023-08-22 00:00:00.000000000 Z
13
+ dependencies: []
166
14
  description: Rocket.Chat REST API v1 for Ruby
167
15
  email:
168
16
  - github@int512.net
@@ -230,7 +78,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
230
78
  - !ruby/object:Gem::Version
231
79
  version: '0'
232
80
  requirements: []
233
- rubygems_version: 3.4.1
81
+ rubygems_version: 3.3.7
234
82
  signing_key:
235
83
  specification_version: 4
236
84
  summary: Rocket.Chat REST API v1 for Ruby