stream-chat-ruby 2.17.2 → 2.18.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 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
- }