stream-chat-ruby 2.22.0 → 2.22.1
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/CHANGELOG.md +6 -0
- data/Gemfile +1 -0
- data/lib/stream-chat/channel.rb +53 -0
- data/lib/stream-chat/client.rb +177 -0
- data/lib/stream-chat/version.rb +1 -1
- data/stream-chat.gemspec +1 -0
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0bfc513b8901c9efe810c00bb59d9aa23b3e12e0816af1896c31a54b69614053
|
4
|
+
data.tar.gz: ad8e9b4f3b2e4f1a4515226382e8fbf243acfdb46bbab93ba0c9a5c27d8208de
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8189c936e8c1df17285a51e5410be20f1c6852f92f688a8b1292a971550399404848739772099cfd6e506c89fa5911063793ba46859d757160aa7fe000c8ed8d
|
7
|
+
data.tar.gz: 47de88506b215de1098ae643e7f08cd3636a71709470057a7d672849479f28351f66851e22508e31a59e888bb10b71cf1af99521f15884e1bf385f6b1b760d72
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,12 @@
|
|
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.22.1](https://github.com/GetStream/stream-chat-ruby/compare/v2.22.0...v2.22.1) (2022-04-20)
|
6
|
+
|
7
|
+
### Features
|
8
|
+
|
9
|
+
* added comments to public methods ([#93](https://github.com/GetStream/stream-chat-ruby/issues/93)) ([3843fe4](https://github.com/GetStream/stream-chat-ruby/commit/3843fe41ea7716d2b6a787d695bbe54981b2b35e))
|
10
|
+
|
5
11
|
## [2.22.0](https://github.com/GetStream/stream-chat-ruby/compare/v2.21.0...v2.22.0) (2022-04-01)
|
6
12
|
|
7
13
|
|
data/Gemfile
CHANGED
data/lib/stream-chat/channel.rb
CHANGED
@@ -43,29 +43,34 @@ module StreamChat
|
|
43
43
|
"channels/#{@channel_type}/#{@id}"
|
44
44
|
end
|
45
45
|
|
46
|
+
# Gets multiple messages from the channel.
|
46
47
|
sig { params(message_ids: T::Array[String]).returns(StreamChat::StreamResponse) }
|
47
48
|
def get_messages(message_ids)
|
48
49
|
@client.get("#{url}/messages", params: { 'ids' => message_ids.join(',') })
|
49
50
|
end
|
50
51
|
|
52
|
+
# Sends a message to this channel.
|
51
53
|
sig { params(message: StringKeyHash, user_id: String).returns(StreamChat::StreamResponse) }
|
52
54
|
def send_message(message, user_id)
|
53
55
|
payload = { message: add_user_id(message, user_id) }
|
54
56
|
@client.post("#{url}/message", data: payload)
|
55
57
|
end
|
56
58
|
|
59
|
+
# Sends an event on this channel.
|
57
60
|
sig { params(event: StringKeyHash, user_id: String).returns(StreamChat::StreamResponse) }
|
58
61
|
def send_event(event, user_id)
|
59
62
|
payload = { 'event' => add_user_id(event, user_id) }
|
60
63
|
@client.post("#{url}/event", data: payload)
|
61
64
|
end
|
62
65
|
|
66
|
+
# Sends a new reaction to a given message.
|
63
67
|
sig { params(message_id: String, reaction: StringKeyHash, user_id: String).returns(StreamChat::StreamResponse) }
|
64
68
|
def send_reaction(message_id, reaction, user_id)
|
65
69
|
payload = { reaction: add_user_id(reaction, user_id) }
|
66
70
|
@client.post("messages/#{message_id}/reaction", data: payload)
|
67
71
|
end
|
68
72
|
|
73
|
+
# Delete a reaction from a message.
|
69
74
|
sig { params(message_id: String, reaction_type: String, user_id: String).returns(StreamChat::StreamResponse) }
|
70
75
|
def delete_reaction(message_id, reaction_type, user_id)
|
71
76
|
@client.delete(
|
@@ -74,12 +79,14 @@ module StreamChat
|
|
74
79
|
)
|
75
80
|
end
|
76
81
|
|
82
|
+
# Creates a channel with the given creator user.
|
77
83
|
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
|
78
84
|
def create(user_id)
|
79
85
|
@custom_data['created_by'] = { id: user_id }
|
80
86
|
query(watch: false, state: false, presence: false)
|
81
87
|
end
|
82
88
|
|
89
|
+
# Creates or returns a channel.
|
83
90
|
sig { params(options: T.untyped).returns(StreamChat::StreamResponse) }
|
84
91
|
def query(**options)
|
85
92
|
payload = { state: true, data: @custom_data }.merge(options)
|
@@ -91,6 +98,12 @@ module StreamChat
|
|
91
98
|
state
|
92
99
|
end
|
93
100
|
|
101
|
+
# Queries members of a channel.
|
102
|
+
#
|
103
|
+
# The queryMembers endpoint allows you to list and paginate members from a channel. The
|
104
|
+
# endpoint supports filtering on numerous criteria to efficiently return members information.
|
105
|
+
# This endpoint is useful for channels that have large lists of members and
|
106
|
+
# you want to search members or if you want to display the full list of members for a channel.
|
94
107
|
sig { params(filter_conditions: StringKeyHash, sort: T.nilable(T::Hash[String, Integer]), options: T.untyped).returns(StreamChat::StreamResponse) }
|
95
108
|
def query_members(filter_conditions = {}, sort: nil, **options)
|
96
109
|
params = {}.merge(options).merge({
|
@@ -110,12 +123,14 @@ module StreamChat
|
|
110
123
|
@client.get('members', params: { payload: params.to_json })
|
111
124
|
end
|
112
125
|
|
126
|
+
# Updates a channel.
|
113
127
|
sig { params(channel_data: T.nilable(StringKeyHash), update_message: T.nilable(StringKeyHash), options: T.untyped).returns(StreamChat::StreamResponse) }
|
114
128
|
def update(channel_data, update_message = nil, **options)
|
115
129
|
payload = { data: channel_data, message: update_message }.merge(options)
|
116
130
|
@client.post(url, data: payload)
|
117
131
|
end
|
118
132
|
|
133
|
+
# Updates a channel partially.
|
119
134
|
sig { params(set: T.nilable(StringKeyHash), unset: T.nilable(T::Array[String])).returns(StreamChat::StreamResponse) }
|
120
135
|
def update_partial(set = nil, unset = nil)
|
121
136
|
raise StreamChannelException, 'set or unset is needed' if set.nil? && unset.nil?
|
@@ -124,16 +139,24 @@ module StreamChat
|
|
124
139
|
@client.patch(url, data: payload)
|
125
140
|
end
|
126
141
|
|
142
|
+
# Deletes a channel.
|
127
143
|
sig { returns(StreamChat::StreamResponse) }
|
128
144
|
def delete
|
129
145
|
@client.delete(url)
|
130
146
|
end
|
131
147
|
|
148
|
+
# Removes all messages from the channel.
|
132
149
|
sig { params(options: T.untyped).returns(StreamChat::StreamResponse) }
|
133
150
|
def truncate(**options)
|
134
151
|
@client.post("#{url}/truncate", data: options)
|
135
152
|
end
|
136
153
|
|
154
|
+
# Mutes a channel.
|
155
|
+
#
|
156
|
+
# Messages added to a muted channel will not trigger push notifications, nor change the
|
157
|
+
# unread count for the users that muted it. By default, mutes stay in place indefinitely
|
158
|
+
# until the user removes it; however, you can optionally set an expiration time. The list
|
159
|
+
# of muted channels and their expiration time is returned when the user connects.
|
137
160
|
sig { params(user_id: String, expiration: T.nilable(Integer)).returns(StreamChat::StreamResponse) }
|
138
161
|
def mute(user_id, expiration = nil)
|
139
162
|
data = { user_id: user_id, channel_cid: @cid }
|
@@ -141,106 +164,136 @@ module StreamChat
|
|
141
164
|
@client.post('moderation/mute/channel', data: data)
|
142
165
|
end
|
143
166
|
|
167
|
+
# Unmutes a channel.
|
144
168
|
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
|
145
169
|
def unmute(user_id)
|
146
170
|
@client.post('moderation/unmute/channel', data: { 'user_id' => user_id, 'channel_cid' => @cid })
|
147
171
|
end
|
148
172
|
|
173
|
+
# Adds members to the channel.
|
149
174
|
sig { params(user_ids: T::Array[String], options: T.untyped).returns(StreamChat::StreamResponse) }
|
150
175
|
def add_members(user_ids, **options)
|
151
176
|
payload = options.merge({ add_members: user_ids })
|
152
177
|
update(nil, nil, **payload)
|
153
178
|
end
|
154
179
|
|
180
|
+
# Invites users to the channel.
|
155
181
|
sig { params(user_ids: T::Array[String], options: T.untyped).returns(StreamChat::StreamResponse) }
|
156
182
|
def invite_members(user_ids, **options)
|
157
183
|
payload = options.merge({ invites: user_ids })
|
158
184
|
update(nil, nil, **payload)
|
159
185
|
end
|
160
186
|
|
187
|
+
# Accepts an invitation to the channel.
|
161
188
|
sig { params(user_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
162
189
|
def accept_invite(user_id, **options)
|
163
190
|
payload = options.merge({ user_id: user_id, accept_invite: true })
|
164
191
|
update(nil, nil, **payload)
|
165
192
|
end
|
166
193
|
|
194
|
+
# Rejects an invitation to the channel.
|
167
195
|
sig { params(user_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
168
196
|
def reject_invite(user_id, **options)
|
169
197
|
payload = options.merge({ user_id: user_id, reject_invite: true })
|
170
198
|
update(nil, nil, **payload)
|
171
199
|
end
|
172
200
|
|
201
|
+
# Adds moderators to the channel.
|
173
202
|
sig { params(user_ids: T::Array[String]).returns(StreamChat::StreamResponse) }
|
174
203
|
def add_moderators(user_ids)
|
175
204
|
update(nil, nil, add_moderators: user_ids)
|
176
205
|
end
|
177
206
|
|
207
|
+
# Removes members from the channel.
|
178
208
|
sig { params(user_ids: T::Array[String]).returns(StreamChat::StreamResponse) }
|
179
209
|
def remove_members(user_ids)
|
180
210
|
update(nil, nil, remove_members: user_ids)
|
181
211
|
end
|
182
212
|
|
213
|
+
# Assigns roles to members in the channel.
|
183
214
|
sig { params(members: T::Array[StringKeyHash], message: T.nilable(StringKeyHash)).returns(StreamChat::StreamResponse) }
|
184
215
|
def assign_roles(members, message = nil)
|
185
216
|
update(nil, message, assign_roles: members)
|
186
217
|
end
|
187
218
|
|
219
|
+
# Demotes moderators in the channel.
|
188
220
|
sig { params(user_ids: T::Array[String]).returns(StreamChat::StreamResponse) }
|
189
221
|
def demote_moderators(user_ids)
|
190
222
|
update(nil, nil, demote_moderators: user_ids)
|
191
223
|
end
|
192
224
|
|
225
|
+
# Sends the mark read event for this user, only works if the `read_events` setting is enabled.
|
193
226
|
sig { params(user_id: String, options: StringKeyHash).returns(StreamChat::StreamResponse) }
|
194
227
|
def mark_read(user_id, **options)
|
195
228
|
payload = add_user_id(options, user_id)
|
196
229
|
@client.post("#{url}/read", data: payload)
|
197
230
|
end
|
198
231
|
|
232
|
+
# List the message replies for a parent message.
|
199
233
|
sig { params(parent_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
200
234
|
def get_replies(parent_id, **options)
|
201
235
|
@client.get("messages/#{parent_id}/replies", params: options)
|
202
236
|
end
|
203
237
|
|
238
|
+
# List the reactions, supports pagination.
|
204
239
|
sig { params(message_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
205
240
|
def get_reactions(message_id, **options)
|
206
241
|
@client.get("messages/#{message_id}/reactions", params: options)
|
207
242
|
end
|
208
243
|
|
244
|
+
# Bans a user from this channel.
|
209
245
|
sig { params(user_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
210
246
|
def ban_user(user_id, **options)
|
211
247
|
@client.ban_user(user_id, type: @channel_type, id: @id, **options)
|
212
248
|
end
|
213
249
|
|
250
|
+
# Removes the ban for a user on this channel.
|
214
251
|
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
|
215
252
|
def unban_user(user_id)
|
216
253
|
@client.unban_user(user_id, type: @channel_type, id: @id)
|
217
254
|
end
|
218
255
|
|
256
|
+
# Removes a channel from query channel requests for that user until a new message is added.
|
257
|
+
# Use `show` to cancel this operation.
|
219
258
|
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
|
220
259
|
def hide(user_id)
|
221
260
|
@client.post("#{url}/hide", data: { user_id: user_id })
|
222
261
|
end
|
223
262
|
|
263
|
+
# Shows a previously hidden channel.
|
264
|
+
# Use `hide` to hide a channel.
|
224
265
|
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
|
225
266
|
def show(user_id)
|
226
267
|
@client.post("#{url}/show", data: { user_id: user_id })
|
227
268
|
end
|
228
269
|
|
270
|
+
# Uploads a file.
|
271
|
+
#
|
272
|
+
# This functionality defaults to using the Stream CDN. If you would like, you can
|
273
|
+
# easily change the logic to upload to your own CDN of choice.
|
229
274
|
sig { params(url: String, user: StringKeyHash, content_type: T.nilable(String)).returns(StreamChat::StreamResponse) }
|
230
275
|
def send_file(url, user, content_type = nil)
|
231
276
|
@client.send_file("#{self.url}/file", url, user, content_type)
|
232
277
|
end
|
233
278
|
|
279
|
+
# Uploads an image.
|
280
|
+
#
|
281
|
+
# Stream supported image types are: image/bmp, image/gif, image/jpeg, image/png, image/webp,
|
282
|
+
# image/heic, image/heic-sequence, image/heif, image/heif-sequence, image/svg+xml.
|
283
|
+
# You can set a more restrictive list for your application if needed.
|
284
|
+
# The maximum file size is 100MB.
|
234
285
|
sig { params(url: String, user: StringKeyHash, content_type: T.nilable(String)).returns(StreamChat::StreamResponse) }
|
235
286
|
def send_image(url, user, content_type = nil)
|
236
287
|
@client.send_file("#{self.url}/image", url, user, content_type)
|
237
288
|
end
|
238
289
|
|
290
|
+
# Deletes a file by file url.
|
239
291
|
sig { params(url: String).returns(StreamChat::StreamResponse) }
|
240
292
|
def delete_file(url)
|
241
293
|
@client.delete("#{self.url}/file", params: { url: url })
|
242
294
|
end
|
243
295
|
|
296
|
+
# Deletes an image by image url.
|
244
297
|
sig { params(url: String).returns(StreamChat::StreamResponse) }
|
245
298
|
def delete_image(url)
|
246
299
|
@client.delete("#{self.url}/image", params: { url: url })
|
data/lib/stream-chat/client.rb
CHANGED
@@ -90,6 +90,12 @@ module StreamChat
|
|
90
90
|
@conn = client
|
91
91
|
end
|
92
92
|
|
93
|
+
# Creates a JWT for a user.
|
94
|
+
#
|
95
|
+
# Stream uses JWT (JSON Web Tokens) to authenticate chat users, enabling them to login.
|
96
|
+
# Knowing whether a user is authorized to perform certain actions is managed
|
97
|
+
# separately via a role based permissions system.
|
98
|
+
# You can set an `exp` (expires at) or `iat` (issued at) claim as well.
|
93
99
|
sig { params(user_id: String, exp: T.nilable(Integer), iat: T.nilable(Integer)).returns(String) }
|
94
100
|
def create_token(user_id, exp = nil, iat = nil)
|
95
101
|
payload = { user_id: user_id }
|
@@ -98,28 +104,41 @@ module StreamChat
|
|
98
104
|
JWT.encode(payload, @api_secret, 'HS256')
|
99
105
|
end
|
100
106
|
|
107
|
+
# Updates application settings.
|
101
108
|
sig { params(settings: T.untyped).returns(StreamChat::StreamResponse) }
|
102
109
|
def update_app_settings(**settings)
|
103
110
|
patch('app', data: settings)
|
104
111
|
end
|
105
112
|
|
113
|
+
# Returns application settings.
|
106
114
|
sig { returns(StreamChat::StreamResponse) }
|
107
115
|
def get_app_settings
|
108
116
|
get('app')
|
109
117
|
end
|
110
118
|
|
119
|
+
# Flags a message.
|
120
|
+
#
|
121
|
+
# Any user is allowed to flag a message. This triggers the message.flagged
|
122
|
+
# webhook event and adds the message to the inbox of your
|
123
|
+
# Stream Dashboard Chat Moderation view.
|
111
124
|
sig { params(id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
112
125
|
def flag_message(id, **options)
|
113
126
|
payload = { target_message_id: id }.merge(options)
|
114
127
|
post('moderation/flag', data: payload)
|
115
128
|
end
|
116
129
|
|
130
|
+
# Unflags a message.
|
117
131
|
sig { params(id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
118
132
|
def unflag_message(id, **options)
|
119
133
|
payload = { target_message_id: id }.merge(options)
|
120
134
|
post('moderation/unflag', data: payload)
|
121
135
|
end
|
122
136
|
|
137
|
+
# Queries message flags.
|
138
|
+
#
|
139
|
+
# If you prefer to build your own in app moderation dashboard, rather than use the Stream
|
140
|
+
# dashboard, then the query message flags endpoint lets you get flagged messages. Similar
|
141
|
+
# to other queries in Stream Chat, you can filter the flags using query operators.
|
123
142
|
sig { params(filter_conditions: StringKeyHash, options: T.untyped).returns(StreamChat::StreamResponse) }
|
124
143
|
def query_message_flags(filter_conditions, **options)
|
125
144
|
params = options.merge({
|
@@ -128,24 +147,28 @@ module StreamChat
|
|
128
147
|
get('moderation/flags/message', params: { payload: params.to_json })
|
129
148
|
end
|
130
149
|
|
150
|
+
# Flags a user.
|
131
151
|
sig { params(id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
132
152
|
def flag_user(id, **options)
|
133
153
|
payload = { target_user_id: id }.merge(options)
|
134
154
|
post('moderation/flag', data: payload)
|
135
155
|
end
|
136
156
|
|
157
|
+
# Unflags a user.
|
137
158
|
sig { params(id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
138
159
|
def unflag_user(id, **options)
|
139
160
|
payload = { target_user_id: id }.merge(options)
|
140
161
|
post('moderation/unflag', data: payload)
|
141
162
|
end
|
142
163
|
|
164
|
+
# Queries flag reports.
|
143
165
|
sig { params(options: T.untyped).returns(StreamChat::StreamResponse) }
|
144
166
|
def query_flag_reports(**options)
|
145
167
|
data = { filter_conditions: options }
|
146
168
|
post('moderation/reports', data: data)
|
147
169
|
end
|
148
170
|
|
171
|
+
# Sends a flag report review.
|
149
172
|
sig { params(report_id: String, review_result: String, user_id: String, details: T.untyped).returns(StreamChat::StreamResponse) }
|
150
173
|
def review_flag_report(report_id, review_result, user_id, **details)
|
151
174
|
data = {
|
@@ -156,11 +179,16 @@ module StreamChat
|
|
156
179
|
patch("moderation/reports/#{report_id}", data: data)
|
157
180
|
end
|
158
181
|
|
182
|
+
# Returns a message.
|
159
183
|
sig { params(id: String).returns(StreamChat::StreamResponse) }
|
160
184
|
def get_message(id)
|
161
185
|
get("messages/#{id}")
|
162
186
|
end
|
163
187
|
|
188
|
+
# Searches for messages.
|
189
|
+
#
|
190
|
+
# You can enable and/or disable the search indexing on a per channel basis
|
191
|
+
# type through the Stream Dashboard.
|
164
192
|
sig { params(filter_conditions: StringKeyHash, query: T.any(String, StringKeyHash), sort: T.nilable(T::Hash[String, Integer]), options: T.untyped).returns(StreamChat::StreamResponse) }
|
165
193
|
def search(filter_conditions, query, sort: nil, **options)
|
166
194
|
offset = T.cast(options[:offset], T.nilable(Integer))
|
@@ -193,6 +221,7 @@ module StreamChat
|
|
193
221
|
upsert_user(user)
|
194
222
|
end
|
195
223
|
|
224
|
+
# Creates or updates users.
|
196
225
|
sig { params(users: T::Array[StringKeyHash]).returns(StreamChat::StreamResponse) }
|
197
226
|
def upsert_users(users)
|
198
227
|
payload = {}
|
@@ -205,83 +234,115 @@ module StreamChat
|
|
205
234
|
post('users', data: { users: payload })
|
206
235
|
end
|
207
236
|
|
237
|
+
# Creates or updates a user.
|
208
238
|
sig { params(user: StringKeyHash).returns(StreamChat::StreamResponse) }
|
209
239
|
def upsert_user(user)
|
210
240
|
upsert_users([user])
|
211
241
|
end
|
212
242
|
|
243
|
+
# Updates multiple users partially.
|
213
244
|
sig { params(updates: T::Array[StringKeyHash]).returns(StreamChat::StreamResponse) }
|
214
245
|
def update_users_partial(updates)
|
215
246
|
patch('users', data: { users: updates })
|
216
247
|
end
|
217
248
|
|
249
|
+
# Updates a single user partially.
|
218
250
|
sig { params(update: StringKeyHash).returns(StreamChat::StreamResponse) }
|
219
251
|
def update_user_partial(update)
|
220
252
|
update_users_partial([update])
|
221
253
|
end
|
222
254
|
|
255
|
+
# Deletes a user synchronously.
|
223
256
|
sig { params(user_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
224
257
|
def delete_user(user_id, **options)
|
225
258
|
delete("users/#{user_id}", params: options)
|
226
259
|
end
|
227
260
|
|
261
|
+
# Deactivates a user.
|
262
|
+
# Deactivated users cannot connect to Stream Chat, and can't send or receive messages.
|
263
|
+
# To reactivate a user, use `reactivate_user` method.
|
228
264
|
sig { params(user_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
229
265
|
def deactivate_user(user_id, **options)
|
230
266
|
post("users/#{user_id}/deactivate", params: options)
|
231
267
|
end
|
232
268
|
|
269
|
+
# Reactivates a deactivated user. Use deactivate_user to deactivate a user.
|
233
270
|
sig { params(user_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
234
271
|
def reactivate_user(user_id, **options)
|
235
272
|
post("users/#{user_id}/reactivate", params: options)
|
236
273
|
end
|
237
274
|
|
275
|
+
# Exports a user. It exports a user and returns an object
|
276
|
+
# containing all of it's data.
|
238
277
|
sig { params(user_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
239
278
|
def export_user(user_id, **options)
|
240
279
|
get("users/#{user_id}/export", params: options)
|
241
280
|
end
|
242
281
|
|
282
|
+
# Bans a user. Users can be banned from an app entirely or from a channel.
|
283
|
+
# When a user is banned, they will not be allowed to post messages until the
|
284
|
+
# ban is removed or expired but will be able to connect to Chat and to channels as before.
|
285
|
+
# To unban a user, use `unban_user` method.
|
243
286
|
sig { params(target_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
244
287
|
def ban_user(target_id, **options)
|
245
288
|
payload = { target_user_id: target_id }.merge(options)
|
246
289
|
post('moderation/ban', data: payload)
|
247
290
|
end
|
248
291
|
|
292
|
+
# Unbans a user.
|
293
|
+
# To ban a user, use `ban_user` method.
|
249
294
|
sig { params(target_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
250
295
|
def unban_user(target_id, **options)
|
251
296
|
params = { target_user_id: target_id }.merge(options)
|
252
297
|
delete('moderation/ban', params: params)
|
253
298
|
end
|
254
299
|
|
300
|
+
# Shadow ban a user.
|
301
|
+
# When a user is shadow banned, they will still be allowed to post messages,
|
302
|
+
# but any message sent during the will only be visible to the messages author
|
303
|
+
# and invisible to other users of the App.
|
304
|
+
# To remove a shadow ban, use `remove_shadow_ban` method.
|
255
305
|
sig { params(target_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
256
306
|
def shadow_ban(target_id, **options)
|
257
307
|
payload = { target_user_id: target_id, shadow: true }.merge(options)
|
258
308
|
post('moderation/ban', data: payload)
|
259
309
|
end
|
260
310
|
|
311
|
+
# Removes a shadow ban of a user.
|
312
|
+
# To shadow ban a user, use `shadow_ban` method.
|
261
313
|
sig { params(target_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
262
314
|
def remove_shadow_ban(target_id, **options)
|
263
315
|
params = { target_user_id: target_id, shadow: true }.merge(options)
|
264
316
|
delete('moderation/ban', params: params)
|
265
317
|
end
|
266
318
|
|
319
|
+
# Mutes a user.
|
267
320
|
sig { params(target_id: String, user_id: String).returns(StreamChat::StreamResponse) }
|
268
321
|
def mute_user(target_id, user_id)
|
269
322
|
payload = { target_id: target_id, user_id: user_id }
|
270
323
|
post('moderation/mute', data: payload)
|
271
324
|
end
|
272
325
|
|
326
|
+
# Unmutes a user.
|
273
327
|
sig { params(target_id: String, user_id: String).returns(StreamChat::StreamResponse) }
|
274
328
|
def unmute_user(target_id, user_id)
|
275
329
|
payload = { target_id: target_id, user_id: user_id }
|
276
330
|
post('moderation/unmute', data: payload)
|
277
331
|
end
|
278
332
|
|
333
|
+
# Marks all messages as read for a user.
|
279
334
|
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
|
280
335
|
def mark_all_read(user_id)
|
281
336
|
payload = { user: { id: user_id } }
|
282
337
|
post('channels/read', data: payload)
|
283
338
|
end
|
284
339
|
|
340
|
+
# Pins a message.
|
341
|
+
#
|
342
|
+
# Pinned messages allow users to highlight important messages, make announcements, or temporarily
|
343
|
+
# promote content. Pinning a message is, by default, restricted to certain user roles,
|
344
|
+
# but this is flexible. Each channel can have multiple pinned messages and these can be created
|
345
|
+
# or updated with or without an expiration.
|
285
346
|
sig { params(message_id: String, user_id: String, expiration: T.nilable(String)).returns(StreamChat::StreamResponse) }
|
286
347
|
def pin_message(message_id, user_id, expiration: nil)
|
287
348
|
updates = {
|
@@ -293,6 +354,7 @@ module StreamChat
|
|
293
354
|
update_message_partial(message_id, updates, user_id: user_id)
|
294
355
|
end
|
295
356
|
|
357
|
+
# Unpins a message.
|
296
358
|
sig { params(message_id: String, user_id: String).returns(StreamChat::StreamResponse) }
|
297
359
|
def unpin_message(message_id, user_id)
|
298
360
|
updates = {
|
@@ -303,6 +365,8 @@ module StreamChat
|
|
303
365
|
update_message_partial(message_id, updates, user_id: user_id)
|
304
366
|
end
|
305
367
|
|
368
|
+
# Updates a message. Fully overwrites a message.
|
369
|
+
# For partial update, use `update_message_partial` method.
|
306
370
|
sig { params(message: StringKeyHash).returns(StreamChat::StreamResponse) }
|
307
371
|
def update_message(message)
|
308
372
|
raise ArgumentError, 'message must have an id' unless message.key? 'id'
|
@@ -310,6 +374,9 @@ module StreamChat
|
|
310
374
|
post("messages/#{message['id']}", data: { message: message })
|
311
375
|
end
|
312
376
|
|
377
|
+
# Updates a message partially.
|
378
|
+
# A partial update can be used to set and unset specific fields when
|
379
|
+
# it is necessary to retain additional data fields on the object. AKA a patch style update.
|
313
380
|
sig { params(message_id: String, updates: StringKeyHash, user_id: T.nilable(String), options: T.untyped).returns(StreamChat::StreamResponse) }
|
314
381
|
def update_message_partial(message_id, updates, user_id: nil, **options)
|
315
382
|
params = updates.merge(options)
|
@@ -317,11 +384,19 @@ module StreamChat
|
|
317
384
|
put("messages/#{message_id}", data: params)
|
318
385
|
end
|
319
386
|
|
387
|
+
# Deletes a message.
|
320
388
|
sig { params(message_id: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
321
389
|
def delete_message(message_id, **options)
|
322
390
|
delete("messages/#{message_id}", params: options)
|
323
391
|
end
|
324
392
|
|
393
|
+
# Queries banned users.
|
394
|
+
#
|
395
|
+
# Banned users can be retrieved in different ways:
|
396
|
+
# 1) Using the dedicated query bans endpoint
|
397
|
+
# 2) User Search: you can add the banned:true condition to your search. Please note that
|
398
|
+
# this will only return users that were banned at the app-level and not the ones
|
399
|
+
# that were banned only on channels.
|
325
400
|
sig { params(filter_conditions: StringKeyHash, sort: T.nilable(T::Hash[String, Integer]), options: T.untyped).returns(StreamChat::StreamResponse) }
|
326
401
|
def query_banned_users(filter_conditions, sort: nil, **options)
|
327
402
|
params = options.merge({
|
@@ -331,6 +406,8 @@ module StreamChat
|
|
331
406
|
get('query_banned_users', params: { payload: params.to_json })
|
332
407
|
end
|
333
408
|
|
409
|
+
# Allows you to search for users and see if they are online/offline.
|
410
|
+
# You can filter and sort on the custom fields you've set for your user, the user id, and when the user was last active.
|
334
411
|
sig { params(filter_conditions: StringKeyHash, sort: T.nilable(T::Hash[String, Integer]), options: T.untyped).returns(StreamChat::StreamResponse) }
|
335
412
|
def query_users(filter_conditions, sort: nil, **options)
|
336
413
|
params = options.merge({
|
@@ -340,6 +417,12 @@ module StreamChat
|
|
340
417
|
get('users', params: { payload: params.to_json })
|
341
418
|
end
|
342
419
|
|
420
|
+
# Queries channels.
|
421
|
+
#
|
422
|
+
# You can query channels based on built-in fields as well as any custom field you add to channels.
|
423
|
+
# Multiple filters can be combined using AND, OR logical operators, each filter can use its
|
424
|
+
# comparison (equality, inequality, greater than, greater or equal, etc.).
|
425
|
+
# You can find the complete list of supported operators in the query syntax section of the docs.
|
343
426
|
sig { params(filter_conditions: StringKeyHash, sort: T.nilable(T::Hash[String, Integer]), options: T.untyped).returns(StreamChat::StreamResponse) }
|
344
427
|
def query_channels(filter_conditions, sort: nil, **options)
|
345
428
|
data = { state: true, watch: false, presence: false }
|
@@ -350,27 +433,32 @@ module StreamChat
|
|
350
433
|
post('channels', data: data)
|
351
434
|
end
|
352
435
|
|
436
|
+
# Creates a new channel type.
|
353
437
|
sig { params(data: StringKeyHash).returns(StreamChat::StreamResponse) }
|
354
438
|
def create_channel_type(data)
|
355
439
|
data['commands'] = ['all'] unless data.key?('commands') || data['commands'].nil? || data['commands'].empty?
|
356
440
|
post('channeltypes', data: data)
|
357
441
|
end
|
358
442
|
|
443
|
+
# Returns a channel types.
|
359
444
|
sig { params(channel_type: String).returns(StreamChat::StreamResponse) }
|
360
445
|
def get_channel_type(channel_type)
|
361
446
|
get("channeltypes/#{channel_type}")
|
362
447
|
end
|
363
448
|
|
449
|
+
# Returns a list of channel types.
|
364
450
|
sig { returns(StreamChat::StreamResponse) }
|
365
451
|
def list_channel_types
|
366
452
|
get('channeltypes')
|
367
453
|
end
|
368
454
|
|
455
|
+
# Updates a channel type.
|
369
456
|
sig { params(channel_type: String, options: T.untyped).returns(StreamChat::StreamResponse) }
|
370
457
|
def update_channel_type(channel_type, **options)
|
371
458
|
put("channeltypes/#{channel_type}", data: options)
|
372
459
|
end
|
373
460
|
|
461
|
+
# Deletes a channel type.
|
374
462
|
sig { params(channel_type: String).returns(StreamChat::StreamResponse) }
|
375
463
|
def delete_channel_type(channel_type)
|
376
464
|
delete("channeltypes/#{channel_type}")
|
@@ -389,6 +477,7 @@ module StreamChat
|
|
389
477
|
StreamChat::Channel.new(self, channel_type, channel_id, data)
|
390
478
|
end
|
391
479
|
|
480
|
+
# Adds a device to a user.
|
392
481
|
sig { params(device_id: String, push_provider: String, user_id: String, push_provider_name: T.nilable(String)).returns(StreamChat::StreamResponse) }
|
393
482
|
def add_device(device_id, push_provider, user_id, push_provider_name = nil)
|
394
483
|
post('devices', data: {
|
@@ -399,16 +488,20 @@ module StreamChat
|
|
399
488
|
})
|
400
489
|
end
|
401
490
|
|
491
|
+
# Delete a device.
|
402
492
|
sig { params(device_id: String, user_id: String).returns(StreamChat::StreamResponse) }
|
403
493
|
def delete_device(device_id, user_id)
|
404
494
|
delete('devices', params: { id: device_id, user_id: user_id })
|
405
495
|
end
|
406
496
|
|
497
|
+
# Returns a list of devices.
|
407
498
|
sig { params(user_id: String).returns(StreamChat::StreamResponse) }
|
408
499
|
def get_devices(user_id)
|
409
500
|
get('devices', params: { user_id: user_id })
|
410
501
|
end
|
411
502
|
|
503
|
+
# Get rate limit quotas and usage.
|
504
|
+
# If no params are toggled, all limits for all endpoints are returned.
|
412
505
|
sig { params(server_side: T::Boolean, android: T::Boolean, ios: T::Boolean, web: T::Boolean, endpoints: T::Array[String]).returns(StreamChat::StreamResponse) }
|
413
506
|
def get_rate_limits(server_side: false, android: false, ios: false, web: false, endpoints: [])
|
414
507
|
params = {}
|
@@ -421,93 +514,153 @@ module StreamChat
|
|
421
514
|
get('rate_limits', params: params)
|
422
515
|
end
|
423
516
|
|
517
|
+
# Verify the signature added to a webhook event.
|
424
518
|
sig { params(request_body: String, x_signature: String).returns(T::Boolean) }
|
425
519
|
def verify_webhook(request_body, x_signature)
|
426
520
|
signature = OpenSSL::HMAC.hexdigest('SHA256', @api_secret, request_body)
|
427
521
|
signature == x_signature
|
428
522
|
end
|
429
523
|
|
524
|
+
# Allows you to send custom events to a connected user.
|
430
525
|
sig { params(user_id: String, event: StringKeyHash).returns(StreamChat::StreamResponse) }
|
431
526
|
def send_user_event(user_id, event)
|
432
527
|
post("users/#{user_id}/event", data: event)
|
433
528
|
end
|
434
529
|
|
530
|
+
# Translates an existing message to another language. The source language
|
531
|
+
# is inferred from the user language or detected automatically by analyzing its text.
|
532
|
+
# If possible it is recommended to store the user language. See the documentation.
|
435
533
|
sig { params(message_id: String, language: String).returns(StreamChat::StreamResponse) }
|
436
534
|
def translate_message(message_id, language)
|
437
535
|
post("messages/#{message_id}/translate", data: { language: language })
|
438
536
|
end
|
439
537
|
|
538
|
+
# Runs a message command action.
|
440
539
|
sig { params(message_id: String, data: StringKeyHash).returns(StreamChat::StreamResponse) }
|
441
540
|
def run_message_action(message_id, data)
|
442
541
|
post("messages/#{message_id}/action", data: data)
|
443
542
|
end
|
444
543
|
|
544
|
+
# Creates a guest user.
|
545
|
+
#
|
546
|
+
# Guest sessions can be created client-side and do not require any server-side authentication.
|
547
|
+
# Support and livestreams are common use cases for guests users because really
|
548
|
+
# often you want a visitor to be able to use chat on your application without (or before)
|
549
|
+
# they have a regular user account.
|
445
550
|
sig { params(user: StringKeyHash).returns(StreamChat::StreamResponse) }
|
446
551
|
def create_guest(user)
|
447
552
|
post('guests', data: user)
|
448
553
|
end
|
449
554
|
|
555
|
+
# Returns all blocklists.
|
556
|
+
#
|
557
|
+
# A Block List is a list of words that you can use to moderate chat messages. Stream Chat
|
558
|
+
# comes with a built-in Block List called profanity_en_2020_v1 which contains over a thousand
|
559
|
+
# of the most common profane words.
|
560
|
+
# You can manage your own block lists via the Stream dashboard or APIs to a manage
|
561
|
+
# blocklists and configure your channel types to use them.
|
450
562
|
sig { returns(StreamChat::StreamResponse) }
|
451
563
|
def list_blocklists
|
452
564
|
get('blocklists')
|
453
565
|
end
|
454
566
|
|
567
|
+
# Returns a blocklist.
|
568
|
+
#
|
569
|
+
# A Block List is a list of words that you can use to moderate chat messages. Stream Chat
|
570
|
+
# comes with a built-in Block List called profanity_en_2020_v1 which contains over a thousand
|
571
|
+
# of the most common profane words.
|
572
|
+
# You can manage your own block lists via the Stream dashboard or APIs to a manage
|
573
|
+
# blocklists and configure your channel types to use them.
|
455
574
|
sig { params(name: String).returns(StreamChat::StreamResponse) }
|
456
575
|
def get_blocklist(name)
|
457
576
|
get("blocklists/#{name}")
|
458
577
|
end
|
459
578
|
|
579
|
+
# Creates a blocklist.
|
580
|
+
#
|
581
|
+
# A Block List is a list of words that you can use to moderate chat messages. Stream Chat
|
582
|
+
# comes with a built-in Block List called profanity_en_2020_v1 which contains over a thousand
|
583
|
+
# of the most common profane words.
|
584
|
+
# You can manage your own block lists via the Stream dashboard or APIs to a manage
|
585
|
+
# blocklists and configure your channel types to use them.
|
460
586
|
sig { params(name: String, words: StringKeyHash).returns(StreamChat::StreamResponse) }
|
461
587
|
def create_blocklist(name, words)
|
462
588
|
post('blocklists', data: { name: name, words: words })
|
463
589
|
end
|
464
590
|
|
591
|
+
# Updates a blocklist.
|
592
|
+
#
|
593
|
+
# A Block List is a list of words that you can use to moderate chat messages. Stream Chat
|
594
|
+
# comes with a built-in Block List called profanity_en_2020_v1 which contains over a thousand
|
595
|
+
# of the most common profane words.
|
596
|
+
# You can manage your own block lists via the Stream dashboard or APIs to a manage
|
597
|
+
# blocklists and configure your channel types to use them.
|
465
598
|
sig { params(name: String, words: StringKeyHash).returns(StreamChat::StreamResponse) }
|
466
599
|
def update_blocklist(name, words)
|
467
600
|
put("blocklists/#{name}", data: { words: words })
|
468
601
|
end
|
469
602
|
|
603
|
+
# Deletes a blocklist.
|
604
|
+
#
|
605
|
+
# A Block List is a list of words that you can use to moderate chat messages. Stream Chat
|
606
|
+
# comes with a built-in Block List called profanity_en_2020_v1 which contains over a thousand
|
607
|
+
# of the most common profane words.
|
608
|
+
# You can manage your own block lists via the Stream dashboard or APIs to a manage
|
609
|
+
# blocklists and configure your channel types to use them.
|
470
610
|
sig { params(name: String).returns(StreamChat::StreamResponse) }
|
471
611
|
def delete_blocklist(name)
|
472
612
|
delete("blocklists/#{name}")
|
473
613
|
end
|
474
614
|
|
615
|
+
# Requests a channel export.
|
616
|
+
#
|
617
|
+
# Channel exports are created asynchronously, you can use the Task ID returned by
|
618
|
+
# the APIs to keep track of the status and to download the final result when it is ready.
|
619
|
+
# Use `get_task` to check the status of the export.
|
475
620
|
sig { params(channels: StringKeyHash, options: T.untyped).returns(StreamChat::StreamResponse) }
|
476
621
|
def export_channels(*channels, **options)
|
477
622
|
post('export_channels', data: { channels: channels, **options })
|
478
623
|
end
|
479
624
|
|
625
|
+
# Returns the status of a channel export. It contains the URL to the JSON file.
|
480
626
|
sig { params(task_id: String).returns(StreamChat::StreamResponse) }
|
481
627
|
def get_export_channel_status(task_id)
|
482
628
|
get("export_channels/#{task_id}")
|
483
629
|
end
|
484
630
|
|
631
|
+
# Returns the status of a task.
|
485
632
|
sig { params(task_id: String).returns(StreamChat::StreamResponse) }
|
486
633
|
def get_task(task_id)
|
487
634
|
get("tasks/#{task_id}")
|
488
635
|
end
|
489
636
|
|
637
|
+
# Delete users asynchronously. Use `get_task` to check the status of the task.
|
490
638
|
sig { params(user_ids: T::Array[String], user: String, messages: T.nilable(StringKeyHash), conversations: T.nilable(String)).returns(StreamChat::StreamResponse) }
|
491
639
|
def delete_users(user_ids, user: SOFT_DELETE, messages: nil, conversations: nil)
|
492
640
|
post('users/delete', data: { user_ids: user_ids, user: user, messages: messages, conversations: conversations })
|
493
641
|
end
|
494
642
|
|
643
|
+
# Deletes multiple channels. This is an asynchronous operation and the returned value is a task Id.
|
644
|
+
# You can use `get_task` method to check the status of the task.
|
495
645
|
sig { params(cids: T::Array[String], hard_delete: T::Boolean).returns(StreamChat::StreamResponse) }
|
496
646
|
def delete_channels(cids, hard_delete: false)
|
497
647
|
post('channels/delete', data: { cids: cids, hard_delete: hard_delete })
|
498
648
|
end
|
499
649
|
|
650
|
+
# Revoke tokens for an application issued since the given date.
|
500
651
|
sig { params(before: T.any(DateTime, String)).returns(StreamChat::StreamResponse) }
|
501
652
|
def revoke_tokens(before)
|
502
653
|
before = T.cast(before, DateTime).rfc3339 if before.instance_of?(DateTime)
|
503
654
|
update_app_settings({ 'revoke_tokens_issued_before' => before })
|
504
655
|
end
|
505
656
|
|
657
|
+
# Revoke tokens for a user issued since the given date.
|
506
658
|
sig { params(user_id: String, before: T.any(DateTime, String)).returns(StreamChat::StreamResponse) }
|
507
659
|
def revoke_user_token(user_id, before)
|
508
660
|
revoke_users_token([user_id], before)
|
509
661
|
end
|
510
662
|
|
663
|
+
# Revoke tokens for users issued since.
|
511
664
|
sig { params(user_ids: T::Array[String], before: T.any(DateTime, String)).returns(StreamChat::StreamResponse) }
|
512
665
|
def revoke_users_token(user_ids, before)
|
513
666
|
before = T.cast(before, DateTime).rfc3339 if before.instance_of?(DateTime)
|
@@ -549,6 +702,10 @@ module StreamChat
|
|
549
702
|
make_http_request(:patch, relative_url, params: params, data: data)
|
550
703
|
end
|
551
704
|
|
705
|
+
# Uploads a file.
|
706
|
+
#
|
707
|
+
# This functionality defaults to using the Stream CDN. If you would like, you can
|
708
|
+
# easily change the logic to upload to your own CDN of choice.
|
552
709
|
sig { params(relative_url: String, file_url: String, user: StringKeyHash, content_type: T.nilable(String)).returns(StreamChat::StreamResponse) }
|
553
710
|
def send_file(relative_url, file_url, user, content_type = nil)
|
554
711
|
url = [@base_url, relative_url].join('/')
|
@@ -568,91 +725,111 @@ module StreamChat
|
|
568
725
|
parse_response(response)
|
569
726
|
end
|
570
727
|
|
728
|
+
# Check push notification settings.
|
571
729
|
sig { params(push_data: StringKeyHash).returns(StreamChat::StreamResponse) }
|
572
730
|
def check_push(push_data)
|
573
731
|
post('check_push', data: push_data)
|
574
732
|
end
|
575
733
|
|
734
|
+
# Check SQS Push settings
|
735
|
+
#
|
736
|
+
# When no parameters are given, the current SQS app settings are used.
|
576
737
|
sig { params(sqs_key: T.nilable(String), sqs_secret: T.nilable(String), sqs_url: T.nilable(String)).returns(StreamChat::StreamResponse) }
|
577
738
|
def check_sqs(sqs_key = nil, sqs_secret = nil, sqs_url = nil)
|
578
739
|
post('check_sqs', data: { sqs_key: sqs_key, sqs_secret: sqs_secret, sqs_url: sqs_url })
|
579
740
|
end
|
580
741
|
|
742
|
+
# Creates a new command.
|
581
743
|
sig { params(command: StringKeyHash).returns(StreamChat::StreamResponse) }
|
582
744
|
def create_command(command)
|
583
745
|
post('commands', data: command)
|
584
746
|
end
|
585
747
|
|
748
|
+
# Gets a comamnd.
|
586
749
|
sig { params(name: String).returns(StreamChat::StreamResponse) }
|
587
750
|
def get_command(name)
|
588
751
|
get("commands/#{name}")
|
589
752
|
end
|
590
753
|
|
754
|
+
# Updates a command.
|
591
755
|
sig { params(name: String, command: StringKeyHash).returns(StreamChat::StreamResponse) }
|
592
756
|
def update_command(name, command)
|
593
757
|
put("commands/#{name}", data: command)
|
594
758
|
end
|
595
759
|
|
760
|
+
# Deletes a command.
|
596
761
|
sig { params(name: String).returns(StreamChat::StreamResponse) }
|
597
762
|
def delete_command(name)
|
598
763
|
delete("commands/#{name}")
|
599
764
|
end
|
600
765
|
|
766
|
+
# Lists all commands.
|
601
767
|
sig { returns(StreamChat::StreamResponse) }
|
602
768
|
def list_commands
|
603
769
|
get('commands')
|
604
770
|
end
|
605
771
|
|
772
|
+
# Lists all permissions.
|
606
773
|
sig { returns(StreamChat::StreamResponse) }
|
607
774
|
def list_permissions
|
608
775
|
get('permissions')
|
609
776
|
end
|
610
777
|
|
778
|
+
# Gets a permission.
|
611
779
|
sig { params(id: String).returns(StreamChat::StreamResponse) }
|
612
780
|
def get_permission(id)
|
613
781
|
get("permissions/#{id}")
|
614
782
|
end
|
615
783
|
|
784
|
+
# Creates a new permission.
|
616
785
|
sig { params(permission: StringKeyHash).returns(StreamChat::StreamResponse) }
|
617
786
|
def create_permission(permission)
|
618
787
|
post('permissions', data: permission)
|
619
788
|
end
|
620
789
|
|
790
|
+
# Updates a permission.
|
621
791
|
sig { params(id: String, permission: StringKeyHash).returns(StreamChat::StreamResponse) }
|
622
792
|
def update_permission(id, permission)
|
623
793
|
put("permissions/#{id}", data: permission)
|
624
794
|
end
|
625
795
|
|
796
|
+
# Deletes a permission by id.
|
626
797
|
sig { params(id: String).returns(StreamChat::StreamResponse) }
|
627
798
|
def delete_permission(id)
|
628
799
|
delete("permissions/#{id}")
|
629
800
|
end
|
630
801
|
|
802
|
+
# Create a new role.
|
631
803
|
sig { params(name: String).returns(StreamChat::StreamResponse) }
|
632
804
|
def create_role(name)
|
633
805
|
post('roles', data: { name: name })
|
634
806
|
end
|
635
807
|
|
808
|
+
# Delete a role by name.
|
636
809
|
sig { params(name: String).returns(StreamChat::StreamResponse) }
|
637
810
|
def delete_role(name)
|
638
811
|
delete("roles/#{name}")
|
639
812
|
end
|
640
813
|
|
814
|
+
# List all roles.
|
641
815
|
sig { returns(StreamChat::StreamResponse) }
|
642
816
|
def list_roles
|
643
817
|
get('roles')
|
644
818
|
end
|
645
819
|
|
820
|
+
# Create or update a push provider.
|
646
821
|
sig { params(push_provider: StringKeyHash).returns(StreamChat::StreamResponse) }
|
647
822
|
def upsert_push_provider(push_provider)
|
648
823
|
post('push_providers', data: { push_provider: push_provider })
|
649
824
|
end
|
650
825
|
|
826
|
+
# Delete a push provider by type and name.
|
651
827
|
sig { params(type: String, name: String).returns(StreamChat::StreamResponse) }
|
652
828
|
def delete_push_provider(type, name)
|
653
829
|
delete("push_providers/#{type}/#{name}")
|
654
830
|
end
|
655
831
|
|
832
|
+
# Lists all push providers.
|
656
833
|
sig { returns(StreamChat::StreamResponse) }
|
657
834
|
def list_push_providers
|
658
835
|
get('push_providers')
|
data/lib/stream-chat/version.rb
CHANGED
data/stream-chat.gemspec
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.22.
|
4
|
+
version: 2.22.1
|
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-04-
|
11
|
+
date: 2022-04-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: faraday
|
@@ -136,6 +136,20 @@ dependencies:
|
|
136
136
|
- - ">="
|
137
137
|
- !ruby/object:Gem::Version
|
138
138
|
version: '0'
|
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'
|
146
|
+
type: :development
|
147
|
+
prerelease: false
|
148
|
+
version_requirements: !ruby/object:Gem::Requirement
|
149
|
+
requirements:
|
150
|
+
- - ">="
|
151
|
+
- !ruby/object:Gem::Version
|
152
|
+
version: '0'
|
139
153
|
description: Ruby client for Stream Chat.
|
140
154
|
email: support@getstream.io
|
141
155
|
executables: []
|