stream-chat-ruby 2.17.2 → 2.18.0

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: 657677c7a41b9b356a92c750e823a3b9689e0a5af3e0e19e3178b443d653a6ed
4
- data.tar.gz: 3025aaf97b2508822c27476dd58c053f2d823b6fb30f25ff05cef1cd49590ace
3
+ metadata.gz: af3ba47a48c7b729201b5db3401986f5d45007030b4caa86053399f5faf12aba
4
+ data.tar.gz: ba8243a507b81682a5f283f09e5075dd21a9c345c9043c8bf118ea423db1a1da
5
5
  SHA512:
6
- metadata.gz: ed000d8a280c6fb8334cc0f3bfb20a42300b551ba5c98084ccbe2c2cc4b06deebc90962bcfe4605f91d30a2d1ae2b73c2f193e25540458262b1d88802f9c25f0
7
- data.tar.gz: 4cd5063de70c7e26f90f15b1962825cae3121620fa36e0554ac49c9cc3eb4e118629da6af8e2d64596812d74a3d498dbd1562b5f12571b74a85c3beee206c5cc
6
+ metadata.gz: b004af8b95616a958803f632a434ae0ac1a6cd7504725faeceb76a2b27e75cdee45541ad876f598dc465ff02edee5662f4521437a9a74c5db3ef84c08dee6845
7
+ data.tar.gz: ca7d458fe80c3417f4058e7c876ea4984818e3c0b072f4bedd962f96a5b556d7835a36748f5da9e1ed968fe52e8711ca2c4011b463eec4108590d9b384ecb047
data/CHANGELOG.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
4
4
 
5
+ ## [2.18.0](https://github.com/GetStream/stream-chat-ruby/compare/v2.17.2...v2.18.0) (2022-01-26)
6
+
7
+
8
+ ### Features
9
+
10
+ * expose rate limits ([#72](https://github.com/GetStream/stream-chat-ruby/issues/72)) ([3f1ad5c](https://github.com/GetStream/stream-chat-ruby/commit/3f1ad5c8f43263424e934055d0ac283cdcce9376))
11
+ * full feature parity ([#71](https://github.com/GetStream/stream-chat-ruby/issues/71)) ([a25a1b6](https://github.com/GetStream/stream-chat-ruby/commit/a25a1b66f9eadd77d09b99d5c3cfba27bba52f17))
12
+
5
13
  ### [2.17.2](https://github.com/GetStream/stream-chat-ruby/compare/v2.17.1...v2.17.2) (2022-01-17)
6
14
 
7
15
  ### Features
data/README.md CHANGED
@@ -213,7 +213,7 @@ See [an example rails application using the Ruby SDK](https://github.com/GetStre
213
213
  First, make sure you can run the test suite. Tests are run via rspec
214
214
 
215
215
  ```bash
216
- STREAM_CHAT_API_KEY=my_api_key STREAM_CHAT_API_SECRET=my_api_secret bundle exec rake spec
216
+ STREAM_KEY=my_api_key STREAM_SECRET=my_api_secret bundle exec rake spec
217
217
  ```
218
218
 
219
219
  This repository follows a commit message convention in order to automatically generate the [CHANGELOG](./CHANGELOG.md). Make sure you follow the rules of [conventional commits](https://www.conventionalcommits.org/) when opening a pull request.
@@ -229,3 +229,10 @@ The job creates a pull request with the changelog. Check if it looks good.
229
229
  - Merge the pull request.
230
230
 
231
231
  Once the PR is merged, it automatically kicks off another job which will upload the Gem to RubyGems.org and creates a GitHub release.
232
+
233
+ ## We are hiring!
234
+
235
+ We've recently closed a [$38 million Series B funding round](https://techcrunch.com/2021/03/04/stream-raises-38m-as-its-chat-and-activity-feed-apis-power-communications-for-1b-users/) and we keep actively growing.
236
+ Our APIs are used by more than a billion end-users, and you'll have a chance to make a huge impact on the product within a team of the strongest engineers all over the world.
237
+
238
+ Check out our current openings and apply via [Stream's website](https://getstream.io/team/#jobs).
@@ -13,6 +13,7 @@ module StreamChat
13
13
  def initialize(client, channel_type, channel_id = nil, custom_data = nil)
14
14
  @channel_type = channel_type
15
15
  @id = channel_id
16
+ @cid = "#{@channel_type}:#{@id}"
16
17
  @client = client
17
18
  @custom_data = custom_data
18
19
  @custom_data = {} if @custom_data.nil?
@@ -24,6 +25,10 @@ module StreamChat
24
25
  "channels/#{@channel_type}/#{@id}"
25
26
  end
26
27
 
28
+ def get_messages(message_ids)
29
+ @client.get("#{url}/messages", params: { 'ids' => message_ids.join(',') })
30
+ end
31
+
27
32
  def send_message(message, user_id)
28
33
  payload = { message: add_user_id(message, user_id) }
29
34
  @client.post("#{url}/message", data: payload)
@@ -99,6 +104,16 @@ module StreamChat
99
104
  @client.post("#{url}/truncate", data: options)
100
105
  end
101
106
 
107
+ def mute(user_id, expiration = nil)
108
+ data = { user_id: user_id, channel_cid: @cid }
109
+ data['expiration'] = expiration if expiration
110
+ @client.post('moderation/mute/channel', data: data)
111
+ end
112
+
113
+ def unmute(user_id)
114
+ @client.post('moderation/unmute/channel', data: { 'user_id' => user_id, 'channel_cid' => @cid })
115
+ end
116
+
102
117
  def add_members(user_ids, **options)
103
118
  payload = options.merge({ add_members: user_ids })
104
119
  @client.post(url, data: payload)
@@ -8,6 +8,7 @@ require 'jwt'
8
8
  require 'time'
9
9
  require 'stream-chat/channel'
10
10
  require 'stream-chat/errors'
11
+ require 'stream-chat/stream_response'
11
12
  require 'stream-chat/version'
12
13
  require 'stream-chat/util'
13
14
 
@@ -35,12 +36,12 @@ module StreamChat
35
36
  # StreamChat::Client.new('my_key', 'my_secret', 3.0)
36
37
  #
37
38
  def initialize(api_key = '', api_secret = '', timeout = 6.0, **options)
38
- @api_key = api_key
39
- @api_secret = api_secret
40
- @timeout = timeout
39
+ @api_key = api_key || ENV['STREAM_KEY']
40
+ @api_secret = api_secret || ENV['STREAM_SECRET']
41
+ @timeout = timeout || ENV['STREAM_CHAT_TIMEOUT']
41
42
  @options = options
42
43
  @auth_token = JWT.encode({ server: true }, @api_secret, 'HS256')
43
- @base_url = options[:base_url] || BASE_URL
44
+ @base_url = options[:base_url] || ENV['STREAM_CHAT_URL'] || BASE_URL
44
45
  @conn = Faraday.new(url: @base_url) do |faraday|
45
46
  faraday.options[:open_timeout] = @timeout
46
47
  faraday.options[:timeout] = @timeout
@@ -221,6 +222,14 @@ module StreamChat
221
222
  delete("messages/#{message_id}")
222
223
  end
223
224
 
225
+ def query_banned_users(filter_conditions, sort: nil, **options)
226
+ params = options.merge({
227
+ filter_conditions: filter_conditions,
228
+ sort: get_sort_fields(sort)
229
+ })
230
+ get('query_banned_users', params: { payload: params.to_json })
231
+ end
232
+
224
233
  def query_users(filter_conditions, sort: nil, **options)
225
234
  params = options.merge({
226
235
  filter_conditions: filter_conditions,
@@ -303,6 +312,22 @@ module StreamChat
303
312
  signature == x_signature
304
313
  end
305
314
 
315
+ def send_user_event(user_id, event)
316
+ post("users/#{user_id}/event", data: event)
317
+ end
318
+
319
+ def translate_message(message_id, language)
320
+ post("messages/#{message_id}/translate", data: { language: language })
321
+ end
322
+
323
+ def run_message_action(message_id, data)
324
+ post("messages/#{message_id}/action", data: data)
325
+ end
326
+
327
+ def create_guest(user)
328
+ post('guests', data: user)
329
+ end
330
+
306
331
  def list_blocklists
307
332
  get('blocklists')
308
333
  end
@@ -405,6 +430,10 @@ module StreamChat
405
430
  parse_response(response)
406
431
  end
407
432
 
433
+ def check_push(push_data)
434
+ post('check_push', data: push_data)
435
+ end
436
+
408
437
  def check_sqs(sqs_key = nil, sqs_secret = nil, sqs_url = nil)
409
438
  post('check_sqs', data: { sqs_key: sqs_key, sqs_secret: sqs_secret, sqs_url: sqs_url })
410
439
  end
@@ -486,7 +515,7 @@ module StreamChat
486
515
  end
487
516
  raise StreamAPIException, response if response.status >= 399
488
517
 
489
- parsed_result
518
+ StreamResponse.new(parsed_result, response)
490
519
  end
491
520
 
492
521
  def make_http_request(method, relative_url, params: nil, data: nil)
@@ -0,0 +1,17 @@
1
+ # frozen_string_literal: true
2
+
3
+ # lib/stream_rate_limits.rb
4
+
5
+ module StreamChat
6
+ class StreamRateLimits
7
+ attr_reader :limit
8
+ attr_reader :remaining
9
+ attr_reader :reset
10
+
11
+ def initialize(limit, remaining, reset)
12
+ @limit = limit.to_i
13
+ @remaining = remaining.to_i
14
+ @reset = Time.at(reset.to_i)
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ # lib/stream_response.rb
4
+ require 'stream-chat/stream_rate_limits'
5
+
6
+ module StreamChat
7
+ class StreamResponse < Hash
8
+ attr_reader :rate_limit
9
+ attr_reader :status_code
10
+ attr_reader :headers
11
+
12
+ def initialize(hash, response)
13
+ super(nil)
14
+ merge!(hash)
15
+
16
+ if response.headers.key?('X-Ratelimit-Limit')
17
+ @rate_limit = StreamRateLimits.new(
18
+ response.headers['X-Ratelimit-Limit'],
19
+ response.headers['X-Ratelimit-Remaining'],
20
+ response.headers['X-Ratelimit-Reset']
21
+ )
22
+ end
23
+
24
+ @status_code = response.status
25
+ @headers = response.headers
26
+ end
27
+ end
28
+ end
@@ -3,5 +3,5 @@
3
3
  # lib/version.rb
4
4
 
5
5
  module StreamChat
6
- VERSION = '2.17.2'
6
+ VERSION = '2.18.0'
7
7
  end
data/stream-chat.gemspec CHANGED
@@ -12,9 +12,9 @@ Gem::Specification.new do |gem|
12
12
  gem.summary = 'The low level client for serverside calls for Stream Chat.'
13
13
  gem.email = 'support@getstream.io'
14
14
  gem.homepage = 'http://github.com/GetStream/stream-chat-ruby'
15
- gem.authors = ['Mircea Cosbuc']
15
+ gem.authors = ['getstream.io']
16
16
  gem.files = Dir.chdir(File.expand_path(__dir__)) do
17
- `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
17
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|\.github|scripts)/}) }
18
18
  end
19
19
  gem.required_ruby_version = '>=2.5.0'
20
20
  gem.metadata = {
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.17.2
4
+ version: 2.18.0
5
5
  platform: ruby
6
6
  authors:
7
- - Mircea Cosbuc
7
+ - getstream.io
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-01-17 00:00:00.000000000 Z
11
+ date: 2022-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -100,10 +100,6 @@ executables: []
100
100
  extensions: []
101
101
  extra_rdoc_files: []
102
102
  files:
103
- - ".github/CODEOWNERS"
104
- - ".github/workflows/ci.yml"
105
- - ".github/workflows/initiate_release.yml"
106
- - ".github/workflows/release.yml"
107
103
  - ".gitignore"
108
104
  - ".rubocop.yml"
109
105
  - ".versionrc.js"
@@ -117,9 +113,10 @@ files:
117
113
  - lib/stream-chat/channel.rb
118
114
  - lib/stream-chat/client.rb
119
115
  - lib/stream-chat/errors.rb
116
+ - lib/stream-chat/stream_rate_limits.rb
117
+ - lib/stream-chat/stream_response.rb
120
118
  - lib/stream-chat/util.rb
121
119
  - lib/stream-chat/version.rb
122
- - scripts/get_changelog_diff.js
123
120
  - stream-chat.gemspec
124
121
  homepage: http://github.com/GetStream/stream-chat-ruby
125
122
  licenses: []
data/.github/CODEOWNERS DELETED
@@ -1 +0,0 @@
1
- * @ffenix113
@@ -1,33 +0,0 @@
1
- name: test
2
-
3
- on: [pull_request]
4
-
5
- jobs:
6
- test:
7
- runs-on: ubuntu-latest
8
- strategy:
9
- max-parallel: 1
10
- matrix:
11
- ruby: ['2.5', '2.6', '2.7', '3.0', '3.1']
12
- name: 💎 Ruby ${{ matrix.ruby }}
13
- steps:
14
- - uses: actions/checkout@v2
15
- with:
16
- fetch-depth: 0 # gives the commit linter access to previous commits
17
-
18
- - name: Commit message linter
19
- if: ${{ matrix.ruby == '2.5' }}
20
- uses: wagoid/commitlint-github-action@v4
21
-
22
- - uses: ruby/setup-ruby@v1
23
- with:
24
- ruby-version: ${{ matrix.ruby }}
25
- bundler-cache: true
26
-
27
- - run: bundle exec rake rubocop
28
-
29
- - run: bundle exec rake test
30
- env:
31
- STREAM_CHAT_API_KEY: ${{ secrets.STREAM_CHAT_API_KEY }}
32
- STREAM_CHAT_API_SECRET: ${{ secrets.STREAM_CHAT_API_SECRET }}
33
- STREAM_CHAT_API_HOST: ${{ secrets.STREAM_CHAT_API_HOST }}
@@ -1,47 +0,0 @@
1
- name: Create release PR
2
-
3
- on:
4
- workflow_dispatch:
5
- inputs:
6
- version:
7
- description: "The new version number with 'v' prefix. Example: v1.40.1"
8
- required: true
9
-
10
- jobs:
11
- init_release:
12
- name: 🚀 Create release PR
13
- runs-on: ubuntu-latest
14
- steps:
15
- - uses: actions/checkout@v2
16
- with:
17
- fetch-depth: 0 # gives the changelog generator access to all previous commits
18
-
19
- - name: Update CHANGELOG.md, version.rb and push release branch
20
- env:
21
- VERSION: ${{ github.event.inputs.version }}
22
- run: |
23
- npx --yes standard-version@9.3.2 --release-as "$VERSION" --skip.tag --skip.commit --tag-prefix=v
24
- git config --global user.name 'github-actions'
25
- git config --global user.email 'release@getstream.io'
26
- git checkout -q -b "release-$VERSION"
27
- git commit -am "chore(release): $VERSION"
28
- git push -q -u origin "release-$VERSION"
29
-
30
- - name: Get changelog diff
31
- uses: actions/github-script@v5
32
- with:
33
- script: |
34
- const get_change_log_diff = require('./scripts/get_changelog_diff.js')
35
- core.exportVariable('CHANGELOG', get_change_log_diff())
36
-
37
- - name: Open pull request
38
- env:
39
- GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
40
- run: |
41
- gh pr create \
42
- -t "Release ${{ github.event.inputs.version }}" \
43
- -b "# :rocket: ${{ github.event.inputs.version }}
44
- Make sure to use squash & merge when merging!
45
- Once this is merged, another job will kick off automatically and publish the package.
46
- # :memo: Changelog
47
- ${{ env.CHANGELOG }}"
@@ -1,40 +0,0 @@
1
- name: Release
2
-
3
- on:
4
- pull_request:
5
- types: [closed]
6
- branches:
7
- - master
8
-
9
- jobs:
10
- Release:
11
- name: 🚀 Release
12
- if: github.event.pull_request.merged && startsWith(github.head_ref, 'release-')
13
- runs-on: ubuntu-latest
14
- steps:
15
- - uses: actions/checkout@v2
16
- with:
17
- fetch-depth: 0
18
-
19
- - uses: actions/github-script@v5
20
- with:
21
- script: |
22
- const get_change_log_diff = require('./scripts/get_changelog_diff.js')
23
- core.exportVariable('CHANGELOG', get_change_log_diff())
24
-
25
- // Getting the release version from the PR source branch
26
- // Source branch looks like this: release-1.0.0
27
- const version = context.payload.pull_request.head.ref.split('-')[1]
28
- core.exportVariable('VERSION', version)
29
-
30
- - name: Publish gem
31
- uses: dawidd6/action-publish-gem@v1
32
- with:
33
- api_key: ${{secrets.RUBYGEMS_API_KEY}}
34
-
35
- - name: Create release on GitHub
36
- uses: ncipollo/release-action@v1
37
- with:
38
- body: ${{ env.CHANGELOG }}
39
- tag: ${{ env.VERSION }}
40
- token: ${{ secrets.GITHUB_TOKEN }}
@@ -1,26 +0,0 @@
1
- /*
2
- Here we're trying to parse the latest changes from CHANGELOG.md file.
3
- The changelog looks like this:
4
-
5
- ## 0.0.3
6
- - Something #3
7
- ## 0.0.2
8
- - Something #2
9
- ## 0.0.1
10
- - Something #1
11
-
12
- In this case we're trying to extract "- Something #3" since that's the latest change.
13
- */
14
- module.exports = () => {
15
- const fs = require('fs')
16
-
17
- changelog = fs.readFileSync('CHANGELOG.md', 'utf8')
18
- releases = changelog.match(/## [?[0-9](.+)/g)
19
-
20
- current_release = changelog.indexOf(releases[0])
21
- previous_release = changelog.indexOf(releases[1])
22
-
23
- latest_changes = changelog.substr(current_release, previous_release - current_release)
24
-
25
- return latest_changes
26
- }