stream-chat-ruby 3.2.0 → 3.4.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: 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.