stream-chat-ruby 3.2.0 → 3.4.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: 9a528ef5495dbf3fc9d123e554151ee6654ef3ddf04499f89e6c093fce8f2e93
4
- data.tar.gz: 5b08570a5dbfbbfdc73c356d93861f9fad95f81cf2578ef9caea24947deb9c34
3
+ metadata.gz: c3120569255394b3306b2748c2883707f7c98bff14353f6b0dd8ff7b9bfdcc1d
4
+ data.tar.gz: 9a715e02897a4ab371a78f8fb31e9669023dd84ae01bd7d5c67a77fa698ccfeb
5
5
  SHA512:
6
- metadata.gz: 3f5e0d125c1b9a95395daea29a8694ca96d74939193f5eb035c8e1b0af840c91f457beaa4eca4dec6485fecfe2e9fd7a57f0f1c3ea34ee4f829027a77145cd59
7
- data.tar.gz: 6548249f3cd5ddbb2051c84a546c94f6277571075c84c4cbcb38d359c0970ceb9d45df3158c59c2dcd160dec44508ad108371343bd6ad5c3a3b931b9a4399d6f
6
+ metadata.gz: 10ff4a6917a0081a33eb92a55d05142f9b97dab0e297a171f4f52122bcd907fcd9a5999673b7b61cedf7fbcf861ee467bb226cf6b0cbe3bc626a3fc35d651f52
7
+ data.tar.gz: e2dd165c34ec9a570b8e5b8b9e4f36e1922c37909680b104441e9c7816602e96d06cf0376e1507b94d34dd5c10a82daebb4f2837e5e7a5f5a9f31321559d4d86
data/CHANGELOG.md CHANGED
@@ -2,6 +2,25 @@
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
+ ## [3.4.0](https://github.com/GetStream/stream-chat-ruby/compare/v3.3.0...v3.4.0) (2023-07-19)
6
+
7
+
8
+ ### Features
9
+
10
+ * commit message endpoint ([#129](https://github.com/GetStream/stream-chat-ruby/issues/129)) ([09eabb3](https://github.com/GetStream/stream-chat-ruby/commit/09eabb33f4bcfa6f8881dc545060bc5bdd51374e))
11
+
12
+
13
+ ### Bug Fixes
14
+
15
+ * sorbet type for mark_read function signature ([#130](https://github.com/GetStream/stream-chat-ruby/issues/130)) ([7ea0f51](https://github.com/GetStream/stream-chat-ruby/commit/7ea0f517592c1819e223a65eedb53caa85a92817))
16
+
17
+ ## [3.3.0](https://github.com/GetStream/stream-chat-ruby/compare/v3.2.0...v3.3.0) (2022-11-17)
18
+
19
+
20
+ ### Features
21
+
22
+ * add campaign support ([#124](https://github.com/GetStream/stream-chat-ruby/issues/124)) ([d7a935f](https://github.com/GetStream/stream-chat-ruby/commit/d7a935f7b4459399b82db1d51a541388caeb5e68))
23
+
5
24
  ## [3.2.0](https://github.com/GetStream/stream-chat-ruby/compare/v3.1.0...v3.2.0) (2022-11-17)
6
25
 
7
26
 
data/CONTRIBUTING.md CHANGED
@@ -14,7 +14,23 @@ $ bundle install --path vendor/bundle
14
14
  ### Run tests
15
15
 
16
16
  ```shell
17
- $ STREAM_KEY=my_api_key STREAM_SECRET=my_api_secret bundle exec rake spec
17
+ $ STREAM_KEY=my_api_key STREAM_SECRET=my_api_secret bundle exec rspec spec
18
+ ```
19
+
20
+ ### Run specific test
21
+
22
+ Add :focus tag on target test:
23
+
24
+ ```rb
25
+ it 'can mark messages as read', :focus do
26
+ # test something
27
+ end
28
+ ```
29
+
30
+ And then run as following:
31
+
32
+ ```shell
33
+ $ STREAM_KEY=myapi_key STREAM_SECRET=my_secret STREAM_CHAT_URL=http://127.0.0.1:3030 bundle exec rspec spec --tag focus
18
34
  ```
19
35
 
20
36
  ### Linters and type check
data/Gemfile CHANGED
@@ -8,13 +8,15 @@ group :dev do
8
8
  gem 'method_source', '~> 1.0'
9
9
  gem 'pry', '~> 0.14'
10
10
  gem 'pry-doc', '~> 1.3'
11
+ gem 'rake', '~> 13.0'
12
+ gem 'rspec', '~> 3.12'
11
13
  gem 'rubocop', '~> 1.38', require: false
12
14
  gem 'rubocop-ast', '~> 1.23', require: false
15
+ gem 'simplecov', '~> 0.21.2'
16
+ gem 'simplecov-console', '~> 0.9.1'
13
17
  gem 'sorbet', '~> 0.5.10539'
14
18
  end
15
19
 
16
20
  group :test do
17
21
  gem 'rack', '~> 2.2.4'
18
- gem 'simplecov', '~> 0.21.2'
19
- gem 'simplecov-console', '~> 0.9.1'
20
22
  end
data/README.md CHANGED
@@ -57,7 +57,7 @@ client = StreamChat::Client.new('STREAM_KEY', 'STREAM_SECRET')
57
57
  > # Wrong:
58
58
  > user = { "user" => { "id" => "bob-1"}}
59
59
  > # Correct:
60
- > user = { :user => { :id => "bob-1" }}
60
+ > user = { user: { id: "bob-1" }}
61
61
  > ```
62
62
 
63
63
  ### Generate a token for client-side usage:
@@ -70,14 +70,14 @@ client.create_token('bob-1')
70
70
 
71
71
  ```ruby
72
72
  client.upsert_user({
73
- :id => 'bob-1',
74
- :role => 'admin',
75
- :name => 'Robert Tables'
73
+ id: 'bob-1',
74
+ role: 'admin',
75
+ name: 'Robert Tables'
76
76
  })
77
77
 
78
78
  # Batch update is also supported
79
- jane = {:id => 'jane-1'}
80
- june = {:id => 'june-1'}
79
+ jane = {id: 'jane-1'}
80
+ june = {id: 'june-1'}
81
81
  client.upsert_users([jane, june])
82
82
  ```
83
83
 
@@ -85,10 +85,10 @@ client.upsert_users([jane, june])
85
85
 
86
86
  ```ruby
87
87
  client.create_channel_type({
88
- :name => 'livechat',
89
- :automod => 'disabled',
90
- :commands => ['ban'],
91
- :mutes => true
88
+ name: 'livechat',
89
+ automod: 'disabled',
90
+ commands: ['ban'],
91
+ mutes: true
92
92
  })
93
93
 
94
94
  channel_types = client.list_channel_types()
@@ -109,7 +109,7 @@ chan.add_members(['bob-1', 'jane-77'])
109
109
 
110
110
  ### Reactions
111
111
  ```ruby
112
- chan.send_reaction(m1['id'], {:type => 'like'}, 'bob-1')
112
+ chan.send_reaction(m1['id'], {type: 'like'}, 'bob-1')
113
113
  ```
114
114
 
115
115
  ### Moderation
@@ -125,7 +125,7 @@ chan.unban_user('bob-1')
125
125
  ### Messages
126
126
 
127
127
  ```ruby
128
- m1 = chan.send_message({:text => 'Hi Jane!'}, 'bob-1')
128
+ m1 = chan.send_message({text: 'Hi Jane!'}, 'bob-1')
129
129
 
130
130
  deleted_message = client.delete_message(m1['message']['id'])
131
131
 
@@ -158,13 +158,39 @@ client.delete_blocklist('my_blocker')
158
158
 
159
159
  ```ruby
160
160
  # Register an export
161
- response = client.export_channels({:type => 'messaging', :id => 'jane'})
161
+ response = client.export_channels({type: 'messaging', id: 'jane'})
162
162
 
163
163
  # Check completion
164
164
  status_response = client.get_export_channel_status(response['task_id'])
165
165
  # status_response['status'] == 'pending', 'completed'
166
166
  ```
167
167
 
168
+ ### Campaigns
169
+
170
+ ```ruby
171
+ # Create a user or channel segment
172
+ client.create_segment({ name: 'test', type: 'user', filter: { uniq: 'a flag on users' } })
173
+
174
+ # Create a campaign that uses the segment
175
+ client.create_campaign({
176
+ name: 'test',
177
+ text: 'Hi',
178
+ sender_id: campaign_sender,
179
+ segment_id: segment_id,
180
+ channel_type: 'messaging'
181
+ })
182
+
183
+ # Schedule the campaign
184
+ client.schedule_campaign(campaign_id, Time.now.to_i)
185
+
186
+ # Query the campaign to check the status
187
+ response = client.query_campaigns(filter_conditions: { id: campaign_id })
188
+ response['campaigns'][0]['status'] == 'completed'
189
+
190
+ # Read sent information
191
+ client.query_recipients(filter_conditions: { campaign_id: campaign_id })
192
+ ```
193
+
168
194
  ### Rate limits
169
195
 
170
196
  ```ruby
data/SECURITY.md ADDED
@@ -0,0 +1,16 @@
1
+ # Reporting a Vulnerability
2
+ At Stream we are committed to the security of our Software. We appreciate your efforts in disclosing vulnerabilities responsibly and we will make every effort to acknowledge your contributions.
3
+
4
+ Report security vulnerabilities at the following email address:
5
+ ```
6
+ [security@getstream.io](mailto:security@getstream.io)
7
+ ```
8
+ Alternatively it is also possible to open a new issue in the affected repository, tagging it with the `security` tag.
9
+
10
+ A team member will acknowledge the vulnerability and will follow-up with more detailed information. A representative of the security team will be in touch if more information is needed.
11
+
12
+ # Information to include in a report
13
+ While we appreciate any information that you are willing to provide, please make sure to include the following:
14
+ * Which repository is affected
15
+ * Which branch, if relevant
16
+ * Be as descriptive as possible, the team will replicate the vulnerability before working on a fix.
@@ -219,7 +219,7 @@ module StreamChat
219
219
  end
220
220
 
221
221
  # Sends the mark read event for this user, only works if the `read_events` setting is enabled.
222
- sig { params(user_id: String, options: StringKeyHash).returns(StreamChat::StreamResponse) }
222
+ sig { params(user_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
223
223
  def mark_read(user_id, **options)
224
224
  payload = add_user_id(options, user_id)
225
225
  @client.post("#{url}/read", data: payload)
@@ -361,6 +361,12 @@ module StreamChat
361
361
  update_message_partial(message_id, updates, user_id: user_id)
362
362
  end
363
363
 
364
+ # commits a message.
365
+ sig { params(message_id: String).returns(StreamChat::StreamResponse) }
366
+ def commit_message(message_id)
367
+ post("messages/#{message_id}/commit")
368
+ end
369
+
364
370
  # Updates a message. Fully overwrites a message.
365
371
  # For partial update, use `update_message_partial` method.
366
372
  sig { params(message: StringKeyHash).returns(StreamChat::StreamResponse) }
@@ -869,16 +875,10 @@ module StreamChat
869
875
  post('campaigns', data: { campaign: campaign })
870
876
  end
871
877
 
872
- # Gets a campaign.
873
- sig { params(campaign_id: String).returns(StreamChat::StreamResponse) }
874
- def get_campaign(campaign_id)
875
- get("campaigns/#{campaign_id}")
876
- end
877
-
878
- # Lists all campaigns. Options dictionary can contain 'offset' and 'limit' keys for pagination.
879
- sig { params(options: StringKeyHash).returns(StreamChat::StreamResponse) }
880
- def list_campaigns(options)
881
- get('campaigns', params: options)
878
+ # Queries campaigns similar to query_channels or query_users.
879
+ sig { params(params: T.untyped).returns(StreamChat::StreamResponse) }
880
+ def query_campaigns(**params)
881
+ get('campaigns', params: { payload: params.to_json })
882
882
  end
883
883
 
884
884
  # Updates a campaign.
@@ -894,9 +894,9 @@ module StreamChat
894
894
  end
895
895
 
896
896
  # Schedules a campaign.
897
- sig { params(campaign_id: String, send_at: Integer).returns(StreamChat::StreamResponse) }
898
- def schedule_campaign(campaign_id, send_at)
899
- patch("campaigns/#{campaign_id}/schedule", data: { send_at: send_at })
897
+ sig { params(campaign_id: String, scheduled_for: Integer).returns(StreamChat::StreamResponse) }
898
+ def schedule_campaign(campaign_id, scheduled_for)
899
+ patch("campaigns/#{campaign_id}/schedule", data: { scheduled_for: scheduled_for })
900
900
  end
901
901
 
902
902
  # Stops a campaign.
@@ -923,16 +923,10 @@ module StreamChat
923
923
  post('segments', data: { segment: segment })
924
924
  end
925
925
 
926
- # Gets a campaign segment.
927
- sig { params(segment_id: String).returns(StreamChat::StreamResponse) }
928
- def get_segment(segment_id)
929
- get("segments/#{segment_id}")
930
- end
931
-
932
- # Lists all campaign segments. Options dictionary can contain 'offset' and 'limit' keys for pagination.
933
- sig { params(options: StringKeyHash).returns(StreamChat::StreamResponse) }
934
- def list_segments(options)
935
- get('segments', params: options)
926
+ # Queries campaign segments.
927
+ sig { params(params: T.untyped).returns(StreamChat::StreamResponse) }
928
+ def query_segments(**params)
929
+ get('segments', params: { payload: params.to_json })
936
930
  end
937
931
 
938
932
  # Updates a campaign segment.
@@ -947,6 +941,12 @@ module StreamChat
947
941
  delete("segments/#{segment_id}")
948
942
  end
949
943
 
944
+ # Queries campaign recipients.
945
+ sig { params(params: T.untyped).returns(StreamChat::StreamResponse) }
946
+ def query_recipients(**params)
947
+ get('recipients', params: { payload: params.to_json })
948
+ end
949
+
950
950
  private
951
951
 
952
952
  sig { returns(T::Hash[String, String]) }
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  module StreamChat
5
- VERSION = '3.2.0'
5
+ VERSION = '3.4.0'
6
6
  end
data/stream-chat.gemspec CHANGED
@@ -32,8 +32,4 @@ Gem::Specification.new do |gem|
32
32
  gem.add_dependency 'jwt', '~> 2.3'
33
33
  gem.add_dependency 'net-http-persistent', '~> 4.0'
34
34
  gem.add_dependency 'sorbet-runtime', '~> 0.5.10539'
35
- gem.add_development_dependency 'rake', '~> 13.0'
36
- gem.add_development_dependency 'rspec', '~> 3.12'
37
- gem.add_development_dependency 'simplecov', '~> 0.21.2'
38
- gem.add_development_dependency 'simplecov-console', '~> 0.9.1'
39
35
  end
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: 3.2.0
4
+ version: 3.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - getstream.io
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-11-17 00:00:00.000000000 Z
11
+ date: 2023-07-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: faraday
@@ -94,62 +94,6 @@ dependencies:
94
94
  - - "~>"
95
95
  - !ruby/object:Gem::Version
96
96
  version: 0.5.10539
97
- - !ruby/object:Gem::Dependency
98
- name: rake
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '13.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '13.0'
111
- - !ruby/object:Gem::Dependency
112
- name: rspec
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '3.12'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '3.12'
125
- - !ruby/object:Gem::Dependency
126
- name: simplecov
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: 0.21.2
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: 0.21.2
139
- - !ruby/object:Gem::Dependency
140
- name: simplecov-console
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: 0.9.1
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: 0.9.1
153
97
  description: Ruby client for Stream Chat.
154
98
  email: support@getstream.io
155
99
  executables: []
@@ -166,6 +110,7 @@ files:
166
110
  - PULL_REQUEST_TEMPLATE.md
167
111
  - README.md
168
112
  - Rakefile
113
+ - SECURITY.md
169
114
  - lib/stream-chat.rb
170
115
  - lib/stream-chat/channel.rb
171
116
  - lib/stream-chat/client.rb
@@ -200,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
200
145
  - !ruby/object:Gem::Version
201
146
  version: '0'
202
147
  requirements: []
203
- rubygems_version: 3.1.2
148
+ rubygems_version: 3.3.5
204
149
  signing_key:
205
150
  specification_version: 4
206
151
  summary: The low level client for serverside calls for Stream Chat.