stream-chat-ruby 2.5.0 → 2.11.0
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/.github/workflows/ci.yml +3 -3
- data/.gitignore +1 -0
- data/CHANGELOG.md +36 -0
- data/README.md +18 -3
- data/lib/stream-chat/client.rb +82 -10
- data/lib/stream-chat/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99eb51b056c6265c10b7452897fef2ac5691def3e80819692c7755574b7e7672
|
4
|
+
data.tar.gz: 644d0384df490767e94588f1f76b0f0f0bd5012a1dfb9b2490c375e67dd6eacf
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f172bdeebb0ddde0b55827be7f20ab72af074782ea2af5db7ad0bbda97f6d6abbc8b83e3098fdb34eb5b4312018320df42463a9a7ecc20afec370c8daefb0c0b
|
7
|
+
data.tar.gz: 70e907012a5fe56e57b5ec52a76a5ab24dfef914afe27e82eee6c47f22d701354ee2ba1bd057cb00da0dcc39f71d4a0edfcf70a60020aa3215f3aa6fa2907923
|
data/.github/workflows/ci.yml
CHANGED
@@ -6,9 +6,10 @@ jobs:
|
|
6
6
|
build:
|
7
7
|
runs-on: ubuntu-latest
|
8
8
|
strategy:
|
9
|
+
max-parallel: 1
|
9
10
|
matrix:
|
10
|
-
ruby: [
|
11
|
-
name: Ruby ${{ matrix.ruby }}
|
11
|
+
ruby: ['2.5', '2.6', '2.7', '3.0']
|
12
|
+
name: Ruby ${{ matrix.ruby }}
|
12
13
|
steps:
|
13
14
|
- uses: actions/checkout@v2
|
14
15
|
- uses: actions/setup-ruby@v1
|
@@ -18,7 +19,6 @@ jobs:
|
|
18
19
|
- env:
|
19
20
|
STREAM_CHAT_API_KEY: ${{ secrets.STREAM_CHAT_API_KEY }}
|
20
21
|
STREAM_CHAT_API_SECRET: ${{ secrets.STREAM_CHAT_API_SECRET }}
|
21
|
-
BLOCKLIST: ${{ matrix.ruby == '2.7' }}
|
22
22
|
run: |
|
23
23
|
gem install bundler
|
24
24
|
bundle install --jobs 4 --retry 3
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -1,17 +1,46 @@
|
|
1
|
+
## June 25th, 2021 - 2.11.0
|
2
|
+
|
3
|
+
- Add support for improved search
|
4
|
+
|
5
|
+
## June 4th, 2021 - 2.10.0
|
6
|
+
|
7
|
+
- Add custom command CRUD support
|
8
|
+
|
9
|
+
## May 31st, 2021 - 2.9.0
|
10
|
+
|
11
|
+
- Add support for app and user level token revoke
|
12
|
+
|
13
|
+
## May 21st, 2021 - 2.8.0
|
14
|
+
|
15
|
+
- Add query message flags support
|
16
|
+
|
17
|
+
## March 17th, 2021 - 2.7.0
|
18
|
+
|
19
|
+
- Add Ruby 3.x support
|
20
|
+
- Update CI to run all tests for all versions
|
21
|
+
|
22
|
+
## March 9th, 2021 - 2.6.0
|
23
|
+
|
24
|
+
- Add get_rate_limits endpoint
|
25
|
+
|
1
26
|
## February 3rd, 2021 - 2.5.0
|
27
|
+
|
2
28
|
- Add channel partial update
|
3
29
|
- Increase convenience in query members
|
4
30
|
- Improve internal symbol conversions
|
5
31
|
|
6
32
|
## January 20th, 2021 - 2.4.0
|
33
|
+
|
7
34
|
- Add query_members to channel
|
8
35
|
- Use post endpoint for query channels instead of get
|
9
36
|
- Extract common code for sorting into a helper for query calls
|
10
37
|
|
11
38
|
## January 5th, 2021 - 2.3.0
|
39
|
+
|
12
40
|
- Add check SQS helper
|
13
41
|
|
14
42
|
## January 4th, 2021 - 2.2.0
|
43
|
+
|
15
44
|
- Add support for export channels
|
16
45
|
- Improve readme for blocklist and export channels
|
17
46
|
- Improve running tests for multiple versions of ruby
|
@@ -19,27 +48,34 @@
|
|
19
48
|
- Move to GitHub Actions
|
20
49
|
|
21
50
|
## October 5th, 2020 - 2.1.0
|
51
|
+
|
22
52
|
- Add support for blocklist
|
23
53
|
|
24
54
|
## October 2nd, 2020 - 2.0.0
|
55
|
+
|
25
56
|
- Drop EOL Ruby versions: 2.3 && 2.4
|
26
57
|
- Setup Rubocop and mark string literals as frozen
|
27
58
|
|
28
59
|
## August 3rd, 2020 - 1.1.3
|
60
|
+
|
29
61
|
- Fixed Argument Error on delete_user
|
30
62
|
|
31
63
|
## April 23th, 2020 - 1.1.2
|
64
|
+
|
32
65
|
- Fixed ArgumentError when no users was passed
|
33
66
|
|
34
67
|
## March 30th, 2020 - 1.1.1
|
68
|
+
|
35
69
|
- Fixed few minor issues
|
36
70
|
|
37
71
|
## Oct 27th, 2019 - 1.1.0
|
72
|
+
|
38
73
|
- Mark gems use for testing as development dependencies
|
39
74
|
- Added `send_file`, `send_image`, `delete_file`, `delete_image`
|
40
75
|
- Added `invite_members`
|
41
76
|
|
42
77
|
## Oct 19th, 2019 - 1.0.0
|
78
|
+
|
43
79
|
- Added `channel.hide` and `channel.show`
|
44
80
|
- Added `client.flag_message` and `client.unflag_message`
|
45
81
|
- Added `client.flag_user` and `client.unflag_user`
|
data/README.md
CHANGED
@@ -1,20 +1,20 @@
|
|
1
1
|
# stream-chat-ruby
|
2
2
|
|
3
|
-
|
3
|
+
[](https://github.com/GetStream/stream-chat-ruby/actions) [](http://badge.fury.io/rb/stream-chat-ruby)
|
4
4
|
|
5
5
|
stream-chat-ruby is the official Ruby client for [Stream chat](https://getstream.io/chat/) a service for building chat applications.
|
6
6
|
|
7
7
|
You can sign up for a Stream account at https://getstream.io/chat/get_started/.
|
8
8
|
|
9
9
|
You can use this library to access chat API endpoints server-side. For the
|
10
|
-
client-side integrations (web and mobile) have a look at the
|
10
|
+
client-side integrations (web and mobile) have a look at the JavaScript, iOS and
|
11
11
|
Android SDK libraries (https://getstream.io/chat/).
|
12
12
|
|
13
13
|
### Installation
|
14
14
|
|
15
15
|
stream-chat-ruby supports:
|
16
16
|
|
17
|
-
- Ruby (2.7, 2.6, 2.5)
|
17
|
+
- Ruby (3.0, 2.7, 2.6, 2.5)
|
18
18
|
|
19
19
|
#### Install
|
20
20
|
|
@@ -165,6 +165,7 @@ client.remove_device(jane_phone['id'], jane_phone['user_id'])
|
|
165
165
|
```
|
166
166
|
|
167
167
|
### Blocklists
|
168
|
+
|
168
169
|
```ruby
|
169
170
|
# Create a blocklist
|
170
171
|
client.create_blocklist('my_blocker', %w[fudge cream sugar])
|
@@ -180,6 +181,7 @@ client.delete_blocklist('my_blocker')
|
|
180
181
|
```
|
181
182
|
|
182
183
|
### Export Channels
|
184
|
+
|
183
185
|
```ruby
|
184
186
|
# Register an export
|
185
187
|
response = client.export_channels({type: 'messaging', id: 'jane'})
|
@@ -189,6 +191,19 @@ status_response = client.get_export_channel_status(response['task_id'])
|
|
189
191
|
# status_response['status'] == 'pending', 'completed'
|
190
192
|
```
|
191
193
|
|
194
|
+
### Rate limits
|
195
|
+
|
196
|
+
```ruby
|
197
|
+
# Get all rate limits
|
198
|
+
limits = client.get_rate_limits
|
199
|
+
|
200
|
+
# Get rate limits for specific platform(s)
|
201
|
+
limits = client.get_rate_limits(server_side: true)
|
202
|
+
|
203
|
+
# Get rate limits for specific platforms and endpoints
|
204
|
+
limits = client.get_rate_limits(android: true, ios: true, endpoints: ['QueryChannels', 'SendMessage'])
|
205
|
+
```
|
206
|
+
|
192
207
|
### Example Rails application
|
193
208
|
|
194
209
|
See [an example rails application using the Ruby SDK](https://github.com/GetStream/rails-chat-example).
|
data/lib/stream-chat/client.rb
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
require 'open-uri'
|
5
5
|
require 'faraday'
|
6
6
|
require 'jwt'
|
7
|
+
require 'time'
|
7
8
|
require 'stream-chat/channel'
|
8
9
|
require 'stream-chat/errors'
|
9
10
|
require 'stream-chat/version'
|
@@ -45,9 +46,10 @@ module StreamChat
|
|
45
46
|
end
|
46
47
|
end
|
47
48
|
|
48
|
-
def create_token(user_id, exp = nil)
|
49
|
+
def create_token(user_id, exp = nil, iat = nil)
|
49
50
|
payload = { user_id: user_id }
|
50
51
|
payload['exp'] = exp unless exp.nil?
|
52
|
+
payload['iat'] = iat unless iat.nil?
|
51
53
|
JWT.encode(payload, @api_secret, 'HS256')
|
52
54
|
end
|
53
55
|
|
@@ -69,6 +71,13 @@ module StreamChat
|
|
69
71
|
post('moderation/unflag', data: payload)
|
70
72
|
end
|
71
73
|
|
74
|
+
def query_message_flags(filter_conditions, **options)
|
75
|
+
params = options.merge({
|
76
|
+
filter_conditions: filter_conditions
|
77
|
+
})
|
78
|
+
get('moderation/flags/message', params: { payload: params.to_json })
|
79
|
+
end
|
80
|
+
|
72
81
|
def flag_user(id, **options)
|
73
82
|
payload = { target_user_id: id }.merge(options)
|
74
83
|
post('moderation/flag', data: payload)
|
@@ -83,13 +92,21 @@ module StreamChat
|
|
83
92
|
get("messages/#{id}")
|
84
93
|
end
|
85
94
|
|
86
|
-
def search(filter_conditions, query, **options)
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
})
|
95
|
+
def search(filter_conditions, query, sort: nil, **options)
|
96
|
+
offset = options[:offset]
|
97
|
+
next_value = options[:next]
|
98
|
+
raise ArgumentError, 'cannot use offset with next or sort parameters' if offset&.positive? && (next_value || (!sort.nil? && !sort.empty?))
|
91
99
|
|
92
|
-
|
100
|
+
to_merge = {
|
101
|
+
filter_conditions: filter_conditions,
|
102
|
+
sort: get_sort_fields(sort)
|
103
|
+
}
|
104
|
+
if query.is_a? String
|
105
|
+
to_merge[:query] = query
|
106
|
+
else
|
107
|
+
to_merge[:message_filter_conditions] = query
|
108
|
+
end
|
109
|
+
get('search', params: { payload: options.merge(to_merge).to_json })
|
93
110
|
end
|
94
111
|
|
95
112
|
def update_users(users)
|
@@ -232,6 +249,17 @@ module StreamChat
|
|
232
249
|
get('devices', params: { user_id: user_id })
|
233
250
|
end
|
234
251
|
|
252
|
+
def get_rate_limits(server_side: false, android: false, ios: false, web: false, endpoints: [])
|
253
|
+
params = {}
|
254
|
+
params['server_side'] = server_side if server_side
|
255
|
+
params['android'] = android if android
|
256
|
+
params['ios'] = ios if ios
|
257
|
+
params['web'] = web if web
|
258
|
+
params['endpoints'] = endpoints.join(',') unless endpoints.empty?
|
259
|
+
|
260
|
+
get('rate_limits', params: params)
|
261
|
+
end
|
262
|
+
|
235
263
|
def verify_webhook(request_body, x_signature)
|
236
264
|
signature = OpenSSL::HMAC.hexdigest('SHA256', @api_secret, request_body)
|
237
265
|
signature == x_signature
|
@@ -265,6 +293,30 @@ module StreamChat
|
|
265
293
|
get("export_channels/#{task_id}")
|
266
294
|
end
|
267
295
|
|
296
|
+
def revoke_tokens(before)
|
297
|
+
before = before.rfc3339 if before.instance_of?(DateTime)
|
298
|
+
update_app_settings({ 'revoke_tokens_issued_before' => before })
|
299
|
+
end
|
300
|
+
|
301
|
+
def revoke_user_token(user_id, before)
|
302
|
+
revoke_users_token([user_id], before)
|
303
|
+
end
|
304
|
+
|
305
|
+
def revoke_users_token(user_ids, before)
|
306
|
+
before = before.rfc3339 if before.instance_of?(DateTime)
|
307
|
+
|
308
|
+
updates = []
|
309
|
+
user_ids.each do |user_id|
|
310
|
+
updates.push({
|
311
|
+
'id' => user_id,
|
312
|
+
'set' => {
|
313
|
+
'revoke_tokens_issued_before' => before
|
314
|
+
}
|
315
|
+
})
|
316
|
+
end
|
317
|
+
update_users_partial(updates)
|
318
|
+
end
|
319
|
+
|
268
320
|
def put(relative_url, params: nil, data: nil)
|
269
321
|
make_http_request(:put, relative_url, params: params, data: data)
|
270
322
|
end
|
@@ -308,6 +360,26 @@ module StreamChat
|
|
308
360
|
post('check_sqs', data: { sqs_key: sqs_key, sqs_secret: sqs_secret, sqs_url: sqs_url })
|
309
361
|
end
|
310
362
|
|
363
|
+
def create_command(command)
|
364
|
+
post('commands', data: command)
|
365
|
+
end
|
366
|
+
|
367
|
+
def get_command(name)
|
368
|
+
get("commands/#{name}")
|
369
|
+
end
|
370
|
+
|
371
|
+
def update_command(name, command)
|
372
|
+
put("commands/#{name}", data: command)
|
373
|
+
end
|
374
|
+
|
375
|
+
def delete_command(name)
|
376
|
+
delete("commands/#{name}")
|
377
|
+
end
|
378
|
+
|
379
|
+
def list_commands
|
380
|
+
get('commands')
|
381
|
+
end
|
382
|
+
|
311
383
|
private
|
312
384
|
|
313
385
|
def get_default_params
|
@@ -320,8 +392,8 @@ module StreamChat
|
|
320
392
|
|
321
393
|
def get_default_headers
|
322
394
|
{
|
323
|
-
|
324
|
-
|
395
|
+
'Content-Type': 'application/json',
|
396
|
+
'X-Stream-Client': get_user_agent
|
325
397
|
}
|
326
398
|
end
|
327
399
|
|
@@ -342,7 +414,7 @@ module StreamChat
|
|
342
414
|
headers['stream-auth-type'] = 'jwt'
|
343
415
|
url = [@base_url, relative_url].join('/')
|
344
416
|
params = params.nil? ? {} : params
|
345
|
-
params =
|
417
|
+
params = (get_default_params.merge(params).sort_by { |k, _v| k.to_s }).to_h
|
346
418
|
url = "#{url}?#{URI.encode_www_form(params)}"
|
347
419
|
|
348
420
|
body = data.to_json if %w[patch post put].include? method.to_s
|
data/lib/stream-chat/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: stream-chat-ruby
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.11.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mircea Cosbuc
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-06-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|