matrix_sdk 2.4.0 → 2.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +10 -0
- data/lib/matrix_sdk/api.rb +8 -5
- data/lib/matrix_sdk/client.rb +5 -2
- data/lib/matrix_sdk/protocols/cs.rb +122 -88
- data/lib/matrix_sdk/protocols/msc.rb +4 -0
- data/lib/matrix_sdk/room.rb +31 -17
- data/lib/matrix_sdk/rooms/space.rb +1 -1
- data/lib/matrix_sdk/user.rb +2 -2
- data/lib/matrix_sdk/util/tinycache.rb +6 -2
- data/lib/matrix_sdk/version.rb +1 -1
- data/lib/matrix_sdk.rb +5 -0
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24a67aeb6af66f75480104c5c0dc44987e2fe54163ed96047da58bf091476752
|
4
|
+
data.tar.gz: e5935a94b430a1b195b55d748415cc0ad95ea649e32f5e97045cc82726dd2bd3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1ea88ea4c76b573dad7b03aeba49e91b8f7c01040118c38032b49ca00cfbe687bd931c4e17387545e27df529f6ae06fc835ee964b5e79489fb0c5cf84186b35b
|
7
|
+
data.tar.gz: e2a6a5cd78e7629ffb2cc4af5ec9c9154f2f63db570479ebb2c6fa9aff13b7b231bea877d56694ae799019698af8d4a87394f88fa162dcb172dbbd1ede09fc8f
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,13 @@
|
|
1
|
+
## 2.5.0 - 2022-01-14
|
2
|
+
|
3
|
+
- Adds preliminary support for the Matrix v1.1 `client/v3` API
|
4
|
+
- Adds some support for knocking rooms
|
5
|
+
- Adds mutex synchronization on API requests to avoid some threading issues
|
6
|
+
- Fixes error on attempting to skip cache for certain requests (#19)
|
7
|
+
- Fixes inconsistency in MXID typing for the Client abstraction (#18 #20)
|
8
|
+
- Fixes missed autoloader entries for errors (#22)
|
9
|
+
- Fixes some potential issues arising from broken user-provided state data
|
10
|
+
|
1
11
|
## 2.4.0 - 2021-07-19
|
2
12
|
|
3
13
|
- Adds support for matrix: URI's according to MSC2312
|
data/lib/matrix_sdk/api.rb
CHANGED
@@ -57,13 +57,14 @@ module MatrixSdk
|
|
57
57
|
@validate_certificate = params.fetch(:validate_certificate, false)
|
58
58
|
@transaction_id = params.fetch(:transaction_id, 0)
|
59
59
|
@backoff_time = params.fetch(:backoff_time, 5000)
|
60
|
-
@open_timeout = params.fetch(:open_timeout,
|
61
|
-
@read_timeout = params.fetch(:read_timeout,
|
60
|
+
@open_timeout = params.fetch(:open_timeout, nil)
|
61
|
+
@read_timeout = params.fetch(:read_timeout, nil)
|
62
62
|
@well_known = params.fetch(:well_known, {})
|
63
63
|
@global_headers = DEFAULT_HEADERS.dup
|
64
64
|
@global_headers.merge!(params.fetch(:global_headers)) if params.key? :global_headers
|
65
65
|
@synapse = params.fetch(:synapse, true)
|
66
66
|
@http = nil
|
67
|
+
@http_lock = Mutex.new
|
67
68
|
|
68
69
|
([params.fetch(:protocols, [:CS])].flatten - protocols).each do |proto|
|
69
70
|
self.class.include MatrixSdk::Protocols.const_get(proto)
|
@@ -281,7 +282,9 @@ module MatrixSdk
|
|
281
282
|
|
282
283
|
req_obj = construct_request(url: url, method: method, **options)
|
283
284
|
print_http(req_obj, id: req_id)
|
284
|
-
|
285
|
+
response = duration = nil
|
286
|
+
|
287
|
+
@http_lock.synchronize do
|
285
288
|
dur_start = Time.now
|
286
289
|
response = http.request req_obj
|
287
290
|
dur_end = Time.now
|
@@ -398,8 +401,8 @@ module MatrixSdk
|
|
398
401
|
Net::HTTP.new(host, port)
|
399
402
|
end
|
400
403
|
|
401
|
-
@http.open_timeout = open_timeout
|
402
|
-
@http.read_timeout = read_timeout
|
404
|
+
@http.open_timeout = open_timeout if open_timeout
|
405
|
+
@http.read_timeout = read_timeout if read_timeout
|
403
406
|
@http.use_ssl = homeserver.scheme == 'https'
|
404
407
|
@http.verify_mode = validate_certificate ? ::OpenSSL::SSL::VERIFY_PEER : ::OpenSSL::SSL::VERIFY_NONE
|
405
408
|
@http.start
|
data/lib/matrix_sdk/client.rb
CHANGED
@@ -552,11 +552,14 @@ module MatrixSdk
|
|
552
552
|
raise ArgumentError, 'Must be a room ID' unless room_id.room_id?
|
553
553
|
|
554
554
|
room_id = room_id.to_s
|
555
|
-
@rooms.fetch(room_id) do
|
555
|
+
ret = @rooms.fetch(room_id) do
|
556
556
|
room = Room.new(self, room_id)
|
557
557
|
@rooms[room_id] = room unless cache == :none
|
558
558
|
room
|
559
559
|
end
|
560
|
+
# Need to figure out a way to handle multiple types
|
561
|
+
ret = @rooms[room_id] = ret.to_space if ret.instance_variable_get :@room_type
|
562
|
+
ret
|
560
563
|
end
|
561
564
|
|
562
565
|
def listen_forever(timeout: 30, bad_sync_timeout: 5, sync_interval: 0, **params)
|
@@ -585,7 +588,7 @@ module MatrixSdk
|
|
585
588
|
private
|
586
589
|
|
587
590
|
def post_authentication(data)
|
588
|
-
@mxid = data[:user_id]
|
591
|
+
@mxid = MXID.new data[:user_id]
|
589
592
|
@api.access_token = data[:access_token]
|
590
593
|
@api.device_id = data[:device_id]
|
591
594
|
@api.homeserver = data[:home_server]
|
@@ -13,8 +13,10 @@ module MatrixSdk::Protocols::CS
|
|
13
13
|
def client_api_versions
|
14
14
|
(@client_api_versions ||= request(:get, :client, '/versions')).versions.tap do |vers|
|
15
15
|
vers.instance_eval <<-'CODE', __FILE__, __LINE__ + 1
|
16
|
-
|
17
|
-
|
16
|
+
if !respond_to? :latest
|
17
|
+
def latest
|
18
|
+
last
|
19
|
+
end
|
18
20
|
end
|
19
21
|
CODE
|
20
22
|
end
|
@@ -39,10 +41,20 @@ module MatrixSdk::Protocols::CS
|
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
44
|
+
# Gets the latest version of the client API
|
45
|
+
# @return [Symbol] :client_r0 / :client_v3 / etc
|
46
|
+
def client_api_latest
|
47
|
+
@client_api_latest ||= :client_v3 if client_api_versions.any? { |v| v.start_with? 'v1.1' }
|
48
|
+
@client_api_latest ||= :client_r0
|
49
|
+
rescue StandardError => e
|
50
|
+
logger.warn "Failed to look up supported client API, defaulting to r0. The error was #{e.class}: #{e}"
|
51
|
+
@client_api_latest ||= :client_r0
|
52
|
+
end
|
53
|
+
|
42
54
|
# Gets the list of available methods for logging in
|
43
55
|
# @return [Response]
|
44
56
|
def allowed_login_methods
|
45
|
-
request(:get,
|
57
|
+
request(:get, client_api_latest, '/login')
|
46
58
|
end
|
47
59
|
|
48
60
|
# Runs the client API /sync method
|
@@ -64,7 +76,7 @@ module MatrixSdk::Protocols::CS
|
|
64
76
|
query[:timeout] = params.delete(:timeout_ms).to_i if params.key? :timeout_ms
|
65
77
|
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
66
78
|
|
67
|
-
request(:get,
|
79
|
+
request(:get, client_api_latest, '/sync', query: query)
|
68
80
|
end
|
69
81
|
|
70
82
|
# Registers a user using the client API /register endpoint
|
@@ -90,7 +102,7 @@ module MatrixSdk::Protocols::CS
|
|
90
102
|
store_token = params.delete(:store_token) { !protocol?(:AS) }
|
91
103
|
store_device_id = params.delete(:store_device_id) { store_token }
|
92
104
|
|
93
|
-
request(:post,
|
105
|
+
request(:post, client_api_latest, '/register', body: params, query: query).tap do |resp|
|
94
106
|
@access_token = resp.token if resp.key?(:token) && store_token
|
95
107
|
@device_id = resp.device_id if resp.key?(:device_id) && store_device_id
|
96
108
|
end
|
@@ -113,7 +125,7 @@ module MatrixSdk::Protocols::CS
|
|
113
125
|
next_link: next_link
|
114
126
|
}.compact
|
115
127
|
|
116
|
-
request(:post,
|
128
|
+
request(:post, client_api_latest, '/register/email/requestToken', body: body)
|
117
129
|
end
|
118
130
|
|
119
131
|
# Requests to register a phone number to the current account
|
@@ -135,7 +147,7 @@ module MatrixSdk::Protocols::CS
|
|
135
147
|
next_link: next_link
|
136
148
|
}.compact
|
137
149
|
|
138
|
-
request(:post,
|
150
|
+
request(:post, client_api_latest, '/register/msisdn/requestToken', body: body)
|
139
151
|
end
|
140
152
|
|
141
153
|
# Checks if a given username is available and valid for registering
|
@@ -148,7 +160,7 @@ module MatrixSdk::Protocols::CS
|
|
148
160
|
# @return [Response]
|
149
161
|
# @see https://matrix.org/docs/spec/client_server/latest.html#get-matrix-client-r0-register-available
|
150
162
|
def username_available?(username)
|
151
|
-
request(:get,
|
163
|
+
request(:get, client_api_latest, '/register/available', query: { username: username })
|
152
164
|
end
|
153
165
|
|
154
166
|
# Logs in using the client API /login endpoint, and optionally stores the resulting access for API usage
|
@@ -190,7 +202,7 @@ module MatrixSdk::Protocols::CS
|
|
190
202
|
}.merge params
|
191
203
|
data[:device_id] = device_id if device_id
|
192
204
|
|
193
|
-
request(:post,
|
205
|
+
request(:post, client_api_latest, '/login', body: data, query: query).tap do |resp|
|
194
206
|
@access_token = resp.token if resp.key?(:token) && options[:store_token]
|
195
207
|
@device_id = resp.device_id if resp.key?(:device_id) && options[:store_device_id]
|
196
208
|
end
|
@@ -204,7 +216,7 @@ module MatrixSdk::Protocols::CS
|
|
204
216
|
query = {}
|
205
217
|
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
206
218
|
|
207
|
-
request(:post,
|
219
|
+
request(:post, client_api_latest, '/logout', query: query)
|
208
220
|
end
|
209
221
|
|
210
222
|
# Logs out the currently logged in user
|
@@ -215,7 +227,7 @@ module MatrixSdk::Protocols::CS
|
|
215
227
|
query = {}
|
216
228
|
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
217
229
|
|
218
|
-
request(:post,
|
230
|
+
request(:post, client_api_latest, '/logout/all', query: query)
|
219
231
|
end
|
220
232
|
|
221
233
|
# Changes the users password
|
@@ -235,7 +247,7 @@ module MatrixSdk::Protocols::CS
|
|
235
247
|
auth: auth
|
236
248
|
}
|
237
249
|
|
238
|
-
request(:post,
|
250
|
+
request(:post, client_api_latest, '/account/password', body: body, query: query)
|
239
251
|
end
|
240
252
|
|
241
253
|
# Requests an authentication token based on an email address
|
@@ -255,7 +267,7 @@ module MatrixSdk::Protocols::CS
|
|
255
267
|
next_link: next_link
|
256
268
|
}.compact
|
257
269
|
|
258
|
-
request(:post,
|
270
|
+
request(:post, client_api_latest, '/account/password/email/requestToken', body: body)
|
259
271
|
end
|
260
272
|
|
261
273
|
# Requests an authentication token based on a phone number
|
@@ -277,7 +289,7 @@ module MatrixSdk::Protocols::CS
|
|
277
289
|
next_link: next_link
|
278
290
|
}.compact
|
279
291
|
|
280
|
-
request(:post,
|
292
|
+
request(:post, client_api_latest, '/account/password/msisdn/requestToken', body: body)
|
281
293
|
end
|
282
294
|
|
283
295
|
# Deactivates the current account, logging out all connected devices and preventing future logins
|
@@ -293,14 +305,14 @@ module MatrixSdk::Protocols::CS
|
|
293
305
|
id_server: id_server
|
294
306
|
}.compact
|
295
307
|
|
296
|
-
request(:post,
|
308
|
+
request(:post, client_api_latest, '/account/deactivate', body: body)
|
297
309
|
end
|
298
310
|
|
299
311
|
def get_3pids(**params)
|
300
312
|
query = {}
|
301
313
|
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
302
314
|
|
303
|
-
request(:get,
|
315
|
+
request(:get, client_api_latest, '/account/3pid', query: query)
|
304
316
|
end
|
305
317
|
|
306
318
|
# Finishes a 3PID addition to the current user
|
@@ -318,7 +330,7 @@ module MatrixSdk::Protocols::CS
|
|
318
330
|
auth: auth_data
|
319
331
|
}.compact
|
320
332
|
|
321
|
-
request(:post,
|
333
|
+
request(:post, client_api_latest, '/account/3pid/add', body: body)
|
322
334
|
end
|
323
335
|
|
324
336
|
# Finishes binding a 3PID to the current user
|
@@ -338,7 +350,7 @@ module MatrixSdk::Protocols::CS
|
|
338
350
|
sid: session
|
339
351
|
}
|
340
352
|
|
341
|
-
request(:post,
|
353
|
+
request(:post, client_api_latest, '/account/3pid/bind', body: body)
|
342
354
|
end
|
343
355
|
|
344
356
|
# Deletes a 3PID from the current user, this method might not unbind it from the identity server
|
@@ -356,7 +368,7 @@ module MatrixSdk::Protocols::CS
|
|
356
368
|
medium: medium
|
357
369
|
}
|
358
370
|
|
359
|
-
request(:post,
|
371
|
+
request(:post, client_api_latest, '/account/3pid/delete', body: body)
|
360
372
|
end
|
361
373
|
|
362
374
|
# Unbinds a 3PID from the current user
|
@@ -374,7 +386,7 @@ module MatrixSdk::Protocols::CS
|
|
374
386
|
medium: medium
|
375
387
|
}
|
376
388
|
|
377
|
-
request(:post,
|
389
|
+
request(:post, client_api_latest, '/account/3pid/unbind', body: body)
|
378
390
|
end
|
379
391
|
|
380
392
|
# Gets the list of rooms joined by the current user
|
@@ -385,7 +397,7 @@ module MatrixSdk::Protocols::CS
|
|
385
397
|
query = {}
|
386
398
|
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
387
399
|
|
388
|
-
request(:get,
|
400
|
+
request(:get, client_api_latest, '/joined_rooms', query: query)
|
389
401
|
end
|
390
402
|
|
391
403
|
# Gets the list of public rooms on a Matrix server
|
@@ -418,7 +430,7 @@ module MatrixSdk::Protocols::CS
|
|
418
430
|
query = query.merge(params).compact
|
419
431
|
end
|
420
432
|
|
421
|
-
request(method,
|
433
|
+
request(method, client_api_latest, '/publicRooms', query: query, body: body)
|
422
434
|
end
|
423
435
|
|
424
436
|
# Creates a new room
|
@@ -440,7 +452,29 @@ module MatrixSdk::Protocols::CS
|
|
440
452
|
content[:invite] = [params.delete(:invite)].flatten if params[:invite]
|
441
453
|
content.merge! params
|
442
454
|
|
443
|
-
request(:post,
|
455
|
+
request(:post, client_api_latest, '/createRoom', body: content, query: query)
|
456
|
+
end
|
457
|
+
|
458
|
+
# Knock on a room
|
459
|
+
#
|
460
|
+
# @param id_or_alias [MXID,String] The room ID or Alias to knock
|
461
|
+
# @param reason [String] A reason for the knock, will be attached to the membership data
|
462
|
+
# @param server_name [String[]] A list of servers to perform the join through
|
463
|
+
# @param params [Hash] Extra room knock options
|
464
|
+
# @return [Response] A response hash with at least the parameter :room_id
|
465
|
+
# @see https://spec.matrix.org/v1.1/client-server-api/#knocking-on-rooms
|
466
|
+
# The Matrix Spec, for more information about the call and response
|
467
|
+
def knock_room(id_or_alias, reason: nil, server_name: nil, **params)
|
468
|
+
query = {}
|
469
|
+
query[:server_name] = server_name if server_name
|
470
|
+
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
471
|
+
|
472
|
+
content = {}
|
473
|
+
content[:reason] = reason if reason
|
474
|
+
|
475
|
+
id_or_alias = ERB::Util.url_encode id_or_alias.to_s
|
476
|
+
|
477
|
+
request(:post, client_api_latest, "/knock/#{id_or_alias}", body: content, query: query)
|
444
478
|
end
|
445
479
|
|
446
480
|
# Joins a room
|
@@ -451,17 +485,17 @@ module MatrixSdk::Protocols::CS
|
|
451
485
|
# @see https://matrix.org/docs/spec/client_server/latest.html#post-matrix-client-r0-join-roomidoralias
|
452
486
|
# The Matrix Spec, for more information about the call and response
|
453
487
|
# @todo Add support for 3rd-party signed objects
|
454
|
-
def join_room(id_or_alias, **params)
|
488
|
+
def join_room(id_or_alias, reason: nil, **params)
|
455
489
|
query = {}
|
456
490
|
query[:server_name] = params[:server_name] if params[:server_name]
|
457
491
|
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
458
492
|
|
459
|
-
|
460
|
-
|
493
|
+
content = {}
|
494
|
+
content[:reason] = reason if reason
|
461
495
|
|
462
496
|
id_or_alias = ERB::Util.url_encode id_or_alias.to_s
|
463
497
|
|
464
|
-
request(:post,
|
498
|
+
request(:post, client_api_latest, "/join/#{id_or_alias}", body: content, query: query)
|
465
499
|
end
|
466
500
|
|
467
501
|
# Sends a state event to a room
|
@@ -482,7 +516,7 @@ module MatrixSdk::Protocols::CS
|
|
482
516
|
event_type = ERB::Util.url_encode event_type.to_s
|
483
517
|
state_key = ERB::Util.url_encode params[:state_key].to_s if params.key? :state_key
|
484
518
|
|
485
|
-
request(:put,
|
519
|
+
request(:put, client_api_latest, "/rooms/#{room_id}/state/#{event_type}#{"/#{state_key}" unless state_key.nil?}", body: content, query: query)
|
486
520
|
end
|
487
521
|
|
488
522
|
# Sends a message event to a room
|
@@ -505,7 +539,7 @@ module MatrixSdk::Protocols::CS
|
|
505
539
|
event_type = ERB::Util.url_encode event_type.to_s
|
506
540
|
txn_id = ERB::Util.url_encode txn_id.to_s
|
507
541
|
|
508
|
-
request(:put,
|
542
|
+
request(:put, client_api_latest, "/rooms/#{room_id}/send/#{event_type}/#{txn_id}", body: content, query: query)
|
509
543
|
end
|
510
544
|
|
511
545
|
# Redact an event in a room
|
@@ -531,7 +565,7 @@ module MatrixSdk::Protocols::CS
|
|
531
565
|
event_id = ERB::Util.url_encode event_id.to_s
|
532
566
|
txn_id = ERB::Util.url_encode txn_id.to_s
|
533
567
|
|
534
|
-
request(:put,
|
568
|
+
request(:put, client_api_latest, "/rooms/#{room_id}/redact/#{event_id}/#{txn_id}", body: content, query: query)
|
535
569
|
end
|
536
570
|
|
537
571
|
# Send a content message to a room
|
@@ -687,7 +721,7 @@ module MatrixSdk::Protocols::CS
|
|
687
721
|
room_id = ERB::Util.url_encode room_id.to_s
|
688
722
|
event_id = ERB::Util.url_encode event_id.to_s
|
689
723
|
|
690
|
-
request(:post,
|
724
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/report/#{event_id}", body: body, query: query)
|
691
725
|
end
|
692
726
|
|
693
727
|
# Retrieve additional messages in a room
|
@@ -714,7 +748,7 @@ module MatrixSdk::Protocols::CS
|
|
714
748
|
|
715
749
|
room_id = ERB::Util.url_encode room_id.to_s
|
716
750
|
|
717
|
-
request(:get,
|
751
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/messages", query: query)
|
718
752
|
end
|
719
753
|
|
720
754
|
# Gets a specific event from a room
|
@@ -731,7 +765,7 @@ module MatrixSdk::Protocols::CS
|
|
731
765
|
room_id = ERB::Util.url_encode room_id.to_s
|
732
766
|
event_id = ERB::Util.url_encode event_id.to_s
|
733
767
|
|
734
|
-
request(:get,
|
768
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/event/#{event_id}", query: query)
|
735
769
|
end
|
736
770
|
|
737
771
|
# Reads the latest instance of a room state event
|
@@ -749,7 +783,7 @@ module MatrixSdk::Protocols::CS
|
|
749
783
|
state_type = ERB::Util.url_encode state_type.to_s
|
750
784
|
key = ERB::Util.url_encode key.to_s
|
751
785
|
|
752
|
-
request(:get,
|
786
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/state/#{state_type}#{key.empty? ? nil : "/#{key}"}", query: query)
|
753
787
|
end
|
754
788
|
|
755
789
|
# Retrieves all current state objects from a room
|
@@ -764,7 +798,7 @@ module MatrixSdk::Protocols::CS
|
|
764
798
|
|
765
799
|
room_id = ERB::Util.url_encode room_id.to_s
|
766
800
|
|
767
|
-
request(:get,
|
801
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/state", query: query)
|
768
802
|
end
|
769
803
|
|
770
804
|
# Retrieves number of events that happened just before and after the specified event
|
@@ -788,7 +822,7 @@ module MatrixSdk::Protocols::CS
|
|
788
822
|
room_id = ERB::Util.url_encode room_id.to_s
|
789
823
|
event_id = ERB::Util.url_encode event_id.to_s
|
790
824
|
|
791
|
-
request(:get,
|
825
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/context/#{event_id}", query: query)
|
792
826
|
end
|
793
827
|
|
794
828
|
## Specialized getters for specced state
|
@@ -1125,7 +1159,7 @@ module MatrixSdk::Protocols::CS
|
|
1125
1159
|
|
1126
1160
|
room_id = ERB::Util.url_encode room_id.to_s
|
1127
1161
|
|
1128
|
-
request(:post,
|
1162
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/leave", query: query)
|
1129
1163
|
end
|
1130
1164
|
|
1131
1165
|
def forget_room(room_id, **params)
|
@@ -1134,7 +1168,7 @@ module MatrixSdk::Protocols::CS
|
|
1134
1168
|
|
1135
1169
|
room_id = ERB::Util.url_encode room_id.to_s
|
1136
1170
|
|
1137
|
-
request(:post,
|
1171
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/forget", query: query)
|
1138
1172
|
end
|
1139
1173
|
|
1140
1174
|
# Directly joins a room by ID
|
@@ -1154,7 +1188,7 @@ module MatrixSdk::Protocols::CS
|
|
1154
1188
|
|
1155
1189
|
room_id = ERB::Util.url_encode room_id.to_s
|
1156
1190
|
|
1157
|
-
request(:post,
|
1191
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/join", body: body, query: query)
|
1158
1192
|
end
|
1159
1193
|
|
1160
1194
|
def invite_user(room_id, user_id, **params)
|
@@ -1167,7 +1201,7 @@ module MatrixSdk::Protocols::CS
|
|
1167
1201
|
|
1168
1202
|
room_id = ERB::Util.url_encode room_id.to_s
|
1169
1203
|
|
1170
|
-
request(:post,
|
1204
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/invite", body: content, query: query)
|
1171
1205
|
end
|
1172
1206
|
|
1173
1207
|
def kick_user(room_id, user_id, reason: '', **params)
|
@@ -1180,7 +1214,7 @@ module MatrixSdk::Protocols::CS
|
|
1180
1214
|
}
|
1181
1215
|
room_id = ERB::Util.url_encode room_id.to_s
|
1182
1216
|
|
1183
|
-
request(:post,
|
1217
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/kick", body: content, query: query)
|
1184
1218
|
end
|
1185
1219
|
|
1186
1220
|
def get_membership(room_id, user_id, **params)
|
@@ -1190,7 +1224,7 @@ module MatrixSdk::Protocols::CS
|
|
1190
1224
|
room_id = ERB::Util.url_encode room_id.to_s
|
1191
1225
|
user_id = ERB::Util.url_encode user_id.to_s
|
1192
1226
|
|
1193
|
-
request(:get,
|
1227
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/state/m.room.member/#{user_id}", query: query)
|
1194
1228
|
end
|
1195
1229
|
|
1196
1230
|
def set_membership(room_id, user_id, membership, reason: '', **params)
|
@@ -1214,7 +1248,7 @@ module MatrixSdk::Protocols::CS
|
|
1214
1248
|
}
|
1215
1249
|
room_id = ERB::Util.url_encode room_id.to_s
|
1216
1250
|
|
1217
|
-
request(:post,
|
1251
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/ban", body: content, query: query)
|
1218
1252
|
end
|
1219
1253
|
|
1220
1254
|
def unban_user(room_id, user_id, **params)
|
@@ -1226,7 +1260,7 @@ module MatrixSdk::Protocols::CS
|
|
1226
1260
|
}
|
1227
1261
|
room_id = ERB::Util.url_encode room_id.to_s
|
1228
1262
|
|
1229
|
-
request(:post,
|
1263
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/unban", body: content, query: query)
|
1230
1264
|
end
|
1231
1265
|
|
1232
1266
|
# Gets the room directory visibility status for a room
|
@@ -1241,7 +1275,7 @@ module MatrixSdk::Protocols::CS
|
|
1241
1275
|
|
1242
1276
|
room_id = ERB::Util.url_encode room_id.to_s
|
1243
1277
|
|
1244
|
-
request(:get,
|
1278
|
+
request(:get, client_api_latest, "/directory/list/room/#{room_id}", query: query)
|
1245
1279
|
end
|
1246
1280
|
|
1247
1281
|
# Sets the room directory visibility status for a room
|
@@ -1261,7 +1295,7 @@ module MatrixSdk::Protocols::CS
|
|
1261
1295
|
|
1262
1296
|
room_id = ERB::Util.url_encode room_id.to_s
|
1263
1297
|
|
1264
|
-
request(:put,
|
1298
|
+
request(:put, client_api_latest, "/directory/list/room/#{room_id}", body: body, query: query)
|
1265
1299
|
end
|
1266
1300
|
|
1267
1301
|
def get_user_tags(user_id, room_id, **params)
|
@@ -1271,7 +1305,7 @@ module MatrixSdk::Protocols::CS
|
|
1271
1305
|
room_id = ERB::Util.url_encode room_id.to_s
|
1272
1306
|
user_id = ERB::Util.url_encode user_id.to_s
|
1273
1307
|
|
1274
|
-
request(:get,
|
1308
|
+
request(:get, client_api_latest, "/user/#{user_id}/rooms/#{room_id}/tags", query: query)
|
1275
1309
|
end
|
1276
1310
|
|
1277
1311
|
def remove_user_tag(user_id, room_id, tag, **params)
|
@@ -1282,7 +1316,7 @@ module MatrixSdk::Protocols::CS
|
|
1282
1316
|
user_id = ERB::Util.url_encode user_id.to_s
|
1283
1317
|
tag = ERB::Util.url_encode tag.to_s
|
1284
1318
|
|
1285
|
-
request(:delete,
|
1319
|
+
request(:delete, client_api_latest, "/user/#{user_id}/rooms/#{room_id}/tags/#{tag}", query: query)
|
1286
1320
|
end
|
1287
1321
|
|
1288
1322
|
def add_user_tag(user_id, room_id, tag, **params)
|
@@ -1300,7 +1334,7 @@ module MatrixSdk::Protocols::CS
|
|
1300
1334
|
user_id = ERB::Util.url_encode user_id.to_s
|
1301
1335
|
tag = ERB::Util.url_encode tag.to_s
|
1302
1336
|
|
1303
|
-
request(:put,
|
1337
|
+
request(:put, client_api_latest, "/user/#{user_id}/rooms/#{room_id}/tags/#{tag}", body: content, query: query)
|
1304
1338
|
end
|
1305
1339
|
|
1306
1340
|
def get_account_data(user_id, type_key, **params)
|
@@ -1310,7 +1344,7 @@ module MatrixSdk::Protocols::CS
|
|
1310
1344
|
user_id = ERB::Util.url_encode user_id.to_s
|
1311
1345
|
type_key = ERB::Util.url_encode type_key.to_s
|
1312
1346
|
|
1313
|
-
request(:get,
|
1347
|
+
request(:get, client_api_latest, "/user/#{user_id}/account_data/#{type_key}", query: query)
|
1314
1348
|
end
|
1315
1349
|
|
1316
1350
|
def set_account_data(user_id, type_key, account_data, **params)
|
@@ -1320,7 +1354,7 @@ module MatrixSdk::Protocols::CS
|
|
1320
1354
|
user_id = ERB::Util.url_encode user_id.to_s
|
1321
1355
|
type_key = ERB::Util.url_encode type_key.to_s
|
1322
1356
|
|
1323
|
-
request(:put,
|
1357
|
+
request(:put, client_api_latest, "/user/#{user_id}/account_data/#{type_key}", body: account_data, query: query)
|
1324
1358
|
end
|
1325
1359
|
|
1326
1360
|
def get_room_account_data(user_id, room_id, type_key, **params)
|
@@ -1331,7 +1365,7 @@ module MatrixSdk::Protocols::CS
|
|
1331
1365
|
room_id = ERB::Util.url_encode room_id.to_s
|
1332
1366
|
type_key = ERB::Util.url_encode type_key.to_s
|
1333
1367
|
|
1334
|
-
request(:get,
|
1368
|
+
request(:get, client_api_latest, "/user/#{user_id}/rooms/#{room_id}/account_data/#{type_key}", query: query)
|
1335
1369
|
end
|
1336
1370
|
|
1337
1371
|
def set_room_account_data(user_id, room_id, type_key, account_data, **params)
|
@@ -1342,7 +1376,7 @@ module MatrixSdk::Protocols::CS
|
|
1342
1376
|
room_id = ERB::Util.url_encode room_id.to_s
|
1343
1377
|
type_key = ERB::Util.url_encode type_key.to_s
|
1344
1378
|
|
1345
|
-
request(:put,
|
1379
|
+
request(:put, client_api_latest, "/user/#{user_id}/rooms/#{room_id}/account_data/#{type_key}", body: account_data, query: query)
|
1346
1380
|
end
|
1347
1381
|
|
1348
1382
|
# Retrieve user information
|
@@ -1354,7 +1388,7 @@ module MatrixSdk::Protocols::CS
|
|
1354
1388
|
def whois(user_id)
|
1355
1389
|
user_id = ERB::Util.url_encode user_id.to_s
|
1356
1390
|
|
1357
|
-
request(:get,
|
1391
|
+
request(:get, client_api_latest, "/admin/whois/#{user_id}")
|
1358
1392
|
end
|
1359
1393
|
|
1360
1394
|
def get_filter(user_id, filter_id, **params)
|
@@ -1364,7 +1398,7 @@ module MatrixSdk::Protocols::CS
|
|
1364
1398
|
user_id = ERB::Util.url_encode user_id.to_s
|
1365
1399
|
filter_id = ERB::Util.url_encode filter_id.to_s
|
1366
1400
|
|
1367
|
-
request(:get,
|
1401
|
+
request(:get, client_api_latest, "/user/#{user_id}/filter/#{filter_id}", query: query)
|
1368
1402
|
end
|
1369
1403
|
|
1370
1404
|
# Creates a filter for future use
|
@@ -1377,7 +1411,7 @@ module MatrixSdk::Protocols::CS
|
|
1377
1411
|
|
1378
1412
|
user_id = ERB::Util.url_encode user_id.to_s
|
1379
1413
|
|
1380
|
-
request(:post,
|
1414
|
+
request(:post, client_api_latest, "/user/#{user_id}/filter", body: filter_params, query: query)
|
1381
1415
|
end
|
1382
1416
|
|
1383
1417
|
def media_upload(content, content_type, **params)
|
@@ -1393,7 +1427,7 @@ module MatrixSdk::Protocols::CS
|
|
1393
1427
|
|
1394
1428
|
user_id = ERB::Util.url_encode user_id.to_s
|
1395
1429
|
|
1396
|
-
request(:get,
|
1430
|
+
request(:get, client_api_latest, "/profile/#{user_id}/displayname", query: query)
|
1397
1431
|
end
|
1398
1432
|
|
1399
1433
|
def set_display_name(user_id, display_name, **params)
|
@@ -1406,7 +1440,7 @@ module MatrixSdk::Protocols::CS
|
|
1406
1440
|
|
1407
1441
|
user_id = ERB::Util.url_encode user_id.to_s
|
1408
1442
|
|
1409
|
-
request(:put,
|
1443
|
+
request(:put, client_api_latest, "/profile/#{user_id}/displayname", body: content, query: query)
|
1410
1444
|
end
|
1411
1445
|
|
1412
1446
|
def get_avatar_url(user_id, **params)
|
@@ -1415,7 +1449,7 @@ module MatrixSdk::Protocols::CS
|
|
1415
1449
|
|
1416
1450
|
user_id = ERB::Util.url_encode user_id.to_s
|
1417
1451
|
|
1418
|
-
request(:get,
|
1452
|
+
request(:get, client_api_latest, "/profile/#{user_id}/avatar_url", query: query)
|
1419
1453
|
end
|
1420
1454
|
|
1421
1455
|
# Sets the avatar URL for a user
|
@@ -1449,7 +1483,7 @@ module MatrixSdk::Protocols::CS
|
|
1449
1483
|
|
1450
1484
|
user_id = ERB::Util.url_encode user_id.to_s
|
1451
1485
|
|
1452
|
-
request(:put,
|
1486
|
+
request(:put, client_api_latest, "/profile/#{user_id}/avatar_url", body: content, query: query)
|
1453
1487
|
end
|
1454
1488
|
|
1455
1489
|
# Gets the combined profile object of a user.
|
@@ -1466,7 +1500,7 @@ module MatrixSdk::Protocols::CS
|
|
1466
1500
|
|
1467
1501
|
user_id = ERB::Util.url_encode user_id.to_s
|
1468
1502
|
|
1469
|
-
request(:get,
|
1503
|
+
request(:get, client_api_latest, "/profile/#{user_id}", query: query)
|
1470
1504
|
end
|
1471
1505
|
|
1472
1506
|
# Gets TURN server connection information and credentials
|
@@ -1475,7 +1509,7 @@ module MatrixSdk::Protocols::CS
|
|
1475
1509
|
# @see https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-voip-turnserver
|
1476
1510
|
# The Matrix Spec, for more information about the event and data
|
1477
1511
|
def get_turn_server
|
1478
|
-
request(:get,
|
1512
|
+
request(:get, client_api_latest, '/voip/turnServer')
|
1479
1513
|
end
|
1480
1514
|
|
1481
1515
|
# Sets the typing status for a user
|
@@ -1496,7 +1530,7 @@ module MatrixSdk::Protocols::CS
|
|
1496
1530
|
timeout: timeout ? timeout * 1000 : nil
|
1497
1531
|
}.compact
|
1498
1532
|
|
1499
|
-
request(:put,
|
1533
|
+
request(:put, client_api_latest, "/rooms/#{room_id}/typing/#{user_id}", body: body)
|
1500
1534
|
end
|
1501
1535
|
|
1502
1536
|
# Gets the presence status of a user
|
@@ -1508,7 +1542,7 @@ module MatrixSdk::Protocols::CS
|
|
1508
1542
|
def get_presence_status(user_id)
|
1509
1543
|
user_id = ERB::Util.url_encode user_id.to_s
|
1510
1544
|
|
1511
|
-
request(:get,
|
1545
|
+
request(:get, client_api_latest, "/presence/#{user_id}/status")
|
1512
1546
|
end
|
1513
1547
|
|
1514
1548
|
# Sets the presence status of a user
|
@@ -1528,7 +1562,7 @@ module MatrixSdk::Protocols::CS
|
|
1528
1562
|
status_msg: message
|
1529
1563
|
}.compact
|
1530
1564
|
|
1531
|
-
request(:put,
|
1565
|
+
request(:put, client_api_latest, "/presence/#{user_id}/status", body: body)
|
1532
1566
|
end
|
1533
1567
|
|
1534
1568
|
# Converts a Matrix content URL (mxc://) to a media download URL
|
@@ -1605,7 +1639,7 @@ module MatrixSdk::Protocols::CS
|
|
1605
1639
|
messages: messages
|
1606
1640
|
}.compact
|
1607
1641
|
|
1608
|
-
request(:put,
|
1642
|
+
request(:put, client_api_latest, "/sendToDevice/#{event_type}/#{txn_id}", body: body)
|
1609
1643
|
end
|
1610
1644
|
|
1611
1645
|
# Gets the room ID for an alias
|
@@ -1618,7 +1652,7 @@ module MatrixSdk::Protocols::CS
|
|
1618
1652
|
|
1619
1653
|
room_alias = ERB::Util.url_encode room_alias.to_s
|
1620
1654
|
|
1621
|
-
request(:get,
|
1655
|
+
request(:get, client_api_latest, "/directory/room/#{room_alias}", query: query)
|
1622
1656
|
end
|
1623
1657
|
|
1624
1658
|
# Sets the room ID for an alias
|
@@ -1635,7 +1669,7 @@ module MatrixSdk::Protocols::CS
|
|
1635
1669
|
}
|
1636
1670
|
room_alias = ERB::Util.url_encode room_alias.to_s
|
1637
1671
|
|
1638
|
-
request(:put,
|
1672
|
+
request(:put, client_api_latest, "/directory/room/#{room_alias}", body: content, query: query)
|
1639
1673
|
end
|
1640
1674
|
|
1641
1675
|
# Remove an alias from its room
|
@@ -1647,7 +1681,7 @@ module MatrixSdk::Protocols::CS
|
|
1647
1681
|
|
1648
1682
|
room_alias = ERB::Util.url_encode room_alias.to_s
|
1649
1683
|
|
1650
|
-
request(:delete,
|
1684
|
+
request(:delete, client_api_latest, "/directory/room/#{room_alias}", query: query)
|
1651
1685
|
end
|
1652
1686
|
|
1653
1687
|
# Gets a list of all the members in a room
|
@@ -1661,7 +1695,7 @@ module MatrixSdk::Protocols::CS
|
|
1661
1695
|
|
1662
1696
|
room_id = ERB::Util.url_encode room_id.to_s
|
1663
1697
|
|
1664
|
-
request(:get,
|
1698
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/members", query: query.merge(params))
|
1665
1699
|
end
|
1666
1700
|
|
1667
1701
|
# Gets a list of the joined members in a room
|
@@ -1676,7 +1710,7 @@ module MatrixSdk::Protocols::CS
|
|
1676
1710
|
|
1677
1711
|
room_id = ERB::Util.url_encode room_id.to_s
|
1678
1712
|
|
1679
|
-
request(:get,
|
1713
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/joined_members", query: query)
|
1680
1714
|
end
|
1681
1715
|
|
1682
1716
|
# Gets a list of the current users registered devices
|
@@ -1684,7 +1718,7 @@ module MatrixSdk::Protocols::CS
|
|
1684
1718
|
# @see https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-devices
|
1685
1719
|
# The Matrix Spec, for more information about the data
|
1686
1720
|
def get_devices
|
1687
|
-
request(:get,
|
1721
|
+
request(:get, client_api_latest, '/devices')
|
1688
1722
|
end
|
1689
1723
|
|
1690
1724
|
# Gets the information about a certain client device
|
@@ -1695,7 +1729,7 @@ module MatrixSdk::Protocols::CS
|
|
1695
1729
|
def get_device(device_id)
|
1696
1730
|
device_id = ERB::Util.url_encode device_id.to_s
|
1697
1731
|
|
1698
|
-
request(:get,
|
1732
|
+
request(:get, client_api_latest, "/devices/#{device_id}")
|
1699
1733
|
end
|
1700
1734
|
|
1701
1735
|
# Sets the metadata for a device
|
@@ -1706,7 +1740,7 @@ module MatrixSdk::Protocols::CS
|
|
1706
1740
|
def set_device(device_id, display_name:)
|
1707
1741
|
device_id = ERB::Util.url_encode device_id.to_s
|
1708
1742
|
|
1709
|
-
request(:put,
|
1743
|
+
request(:put, client_api_latest, "/devices/#{device_id}", body: { display_name: display_name })
|
1710
1744
|
end
|
1711
1745
|
|
1712
1746
|
# Removes a device from the current user
|
@@ -1719,7 +1753,7 @@ module MatrixSdk::Protocols::CS
|
|
1719
1753
|
def delete_device(device_id, auth:)
|
1720
1754
|
device_id = ERB::Util.url_encode device_id.to_s
|
1721
1755
|
|
1722
|
-
request(:delete,
|
1756
|
+
request(:delete, client_api_latest, "/devices/#{device_id}", body: { auth: auth })
|
1723
1757
|
end
|
1724
1758
|
|
1725
1759
|
# Run a query for device keys
|
@@ -1744,7 +1778,7 @@ module MatrixSdk::Protocols::CS
|
|
1744
1778
|
body[:timeout] = params[:timeout_ms] if params.key? :timeout_ms
|
1745
1779
|
body[:token] = token if token
|
1746
1780
|
|
1747
|
-
request(:post,
|
1781
|
+
request(:post, client_api_latest, '/keys/query', body: body)
|
1748
1782
|
end
|
1749
1783
|
|
1750
1784
|
# Claim one-time keys for pre-key messaging
|
@@ -1759,7 +1793,7 @@ module MatrixSdk::Protocols::CS
|
|
1759
1793
|
one_time_keys: one_time_keys,
|
1760
1794
|
timeout: timeout * 1000
|
1761
1795
|
}
|
1762
|
-
request(:post,
|
1796
|
+
request(:post, client_api_latest, '/keys/claim', body: body)
|
1763
1797
|
end
|
1764
1798
|
|
1765
1799
|
# Retrieve device key changes between two sync requests
|
@@ -1775,7 +1809,7 @@ module MatrixSdk::Protocols::CS
|
|
1775
1809
|
to: to
|
1776
1810
|
}
|
1777
1811
|
|
1778
|
-
request(:get,
|
1812
|
+
request(:get, client_api_latest, '/keys/changes', query: query)
|
1779
1813
|
end
|
1780
1814
|
|
1781
1815
|
# Gets the list of registered pushers for the current user
|
@@ -1784,7 +1818,7 @@ module MatrixSdk::Protocols::CS
|
|
1784
1818
|
# @see https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-pushers
|
1785
1819
|
# The Matrix Spec, for more information about the parameters and data
|
1786
1820
|
def get_pushers
|
1787
|
-
request(:get,
|
1821
|
+
request(:get, client_api_latest, '/pushers')
|
1788
1822
|
end
|
1789
1823
|
|
1790
1824
|
# rubocop:disable Metrics/ParameterLists
|
@@ -1817,7 +1851,7 @@ module MatrixSdk::Protocols::CS
|
|
1817
1851
|
append: params[:append]
|
1818
1852
|
}.compact
|
1819
1853
|
|
1820
|
-
request(:post,
|
1854
|
+
request(:post, client_api_latest, '/pushers/set', body: body)
|
1821
1855
|
end
|
1822
1856
|
# rubocop:enable Metrics/ParameterLists
|
1823
1857
|
|
@@ -1838,7 +1872,7 @@ module MatrixSdk::Protocols::CS
|
|
1838
1872
|
only: only
|
1839
1873
|
}.compact
|
1840
1874
|
|
1841
|
-
request(:get,
|
1875
|
+
request(:get, client_api_latest, '/notifications', query: query)
|
1842
1876
|
end
|
1843
1877
|
|
1844
1878
|
# Retrieves the full list of registered push rules for the current user
|
@@ -1847,7 +1881,7 @@ module MatrixSdk::Protocols::CS
|
|
1847
1881
|
# @see https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-pushrules
|
1848
1882
|
# The Matrix Spec, for more information about the parameters and data
|
1849
1883
|
def get_pushrules
|
1850
|
-
request(:get,
|
1884
|
+
request(:get, client_api_latest, '/pushrules/')
|
1851
1885
|
end
|
1852
1886
|
|
1853
1887
|
# Retrieves a single registered push rule for the current user
|
@@ -1863,7 +1897,7 @@ module MatrixSdk::Protocols::CS
|
|
1863
1897
|
kind = ERB::Util.url_encode kind.to_s
|
1864
1898
|
id = ERB::Util.url_encode id.to_s
|
1865
1899
|
|
1866
|
-
request(:get,
|
1900
|
+
request(:get, client_api_latest, "/pushrules/#{scope}/#{kind}/#{id}")
|
1867
1901
|
end
|
1868
1902
|
|
1869
1903
|
# Checks if a push rule for the current user is enabled
|
@@ -1879,7 +1913,7 @@ module MatrixSdk::Protocols::CS
|
|
1879
1913
|
kind = ERB::Util.url_encode kind.to_s
|
1880
1914
|
id = ERB::Util.url_encode id.to_s
|
1881
1915
|
|
1882
|
-
request(:get,
|
1916
|
+
request(:get, client_api_latest, "/pushrules/#{scope}/#{kind}/#{id}/enabled")
|
1883
1917
|
end
|
1884
1918
|
|
1885
1919
|
# Enabled/Disables a specific push rule for the current user
|
@@ -1900,7 +1934,7 @@ module MatrixSdk::Protocols::CS
|
|
1900
1934
|
enabled: enabled
|
1901
1935
|
}
|
1902
1936
|
|
1903
|
-
request(:put,
|
1937
|
+
request(:put, client_api_latest, "/pushrules/#{scope}/#{kind}/#{id}/enabled", body: body)
|
1904
1938
|
end
|
1905
1939
|
|
1906
1940
|
# Gets the current list of actions for a specific push rule for the current user
|
@@ -1916,7 +1950,7 @@ module MatrixSdk::Protocols::CS
|
|
1916
1950
|
kind = ERB::Util.url_encode kind.to_s
|
1917
1951
|
id = ERB::Util.url_encode id.to_s
|
1918
1952
|
|
1919
|
-
request(:get,
|
1953
|
+
request(:get, client_api_latest, "/pushrules/#{scope}/#{kind}/#{id}/actions")
|
1920
1954
|
end
|
1921
1955
|
|
1922
1956
|
# Replaces the list of actions for a push rule for the current user
|
@@ -1939,7 +1973,7 @@ module MatrixSdk::Protocols::CS
|
|
1939
1973
|
actions: actions
|
1940
1974
|
}
|
1941
1975
|
|
1942
|
-
request(:put,
|
1976
|
+
request(:put, client_api_latest, "/pushrules/#{scope}/#{kind}/#{id}/actions", body: body)
|
1943
1977
|
end
|
1944
1978
|
|
1945
1979
|
# Gets the MXID of the currently logged-in user
|
@@ -1948,7 +1982,7 @@ module MatrixSdk::Protocols::CS
|
|
1948
1982
|
query = {}
|
1949
1983
|
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
1950
1984
|
|
1951
|
-
request(:get,
|
1985
|
+
request(:get, client_api_latest, '/account/whoami', query: query)
|
1952
1986
|
end
|
1953
1987
|
end
|
1954
1988
|
# rubocop:enable Metrics/ModuleLength
|
@@ -60,7 +60,9 @@ module MatrixSdk::Protocols::MSC
|
|
60
60
|
# rubocop:disable Metrics/BlockLength
|
61
61
|
thread = Thread.new(cancellation_token) do |ctx|
|
62
62
|
print_http(req)
|
63
|
+
@http_lock.lock
|
63
64
|
http.request req do |response|
|
65
|
+
@http_lock.unlock
|
64
66
|
break unless ctx[:run]
|
65
67
|
|
66
68
|
print_http(response, body: false)
|
@@ -136,6 +138,8 @@ module MatrixSdk::Protocols::MSC
|
|
136
138
|
end
|
137
139
|
break unless ctx[:run]
|
138
140
|
end
|
141
|
+
rescue StandardError
|
142
|
+
@http_lock.unlock if @http_lock.owned?
|
139
143
|
end
|
140
144
|
# rubocop:enable Metrics/BlockLength
|
141
145
|
|
data/lib/matrix_sdk/room.rb
CHANGED
@@ -53,7 +53,7 @@ module MatrixSdk
|
|
53
53
|
# @option data [String] :topic The current topic of the room
|
54
54
|
# @option data [String,MXID] :canonical_alias The canonical alias of the room
|
55
55
|
# @option data [Array(String,MXID)] :aliases All non-canonical aliases of the room
|
56
|
-
# @option data [:invite,:public] :join_rule The join rule for the room
|
56
|
+
# @option data [:invite,:public,:knock] :join_rule The join rule for the room
|
57
57
|
# @option data [:can_join,:forbidden] :guest_access The guest access setting for the room
|
58
58
|
# @option data [Boolean] :world_readable If the room is readable by the entire world
|
59
59
|
# @option data [Array(User)] :members The list of joined members
|
@@ -230,14 +230,14 @@ module MatrixSdk
|
|
230
230
|
#
|
231
231
|
# @return [:can_join,:forbidden] The current guest access right
|
232
232
|
def guest_access
|
233
|
-
client.api.get_room_guest_access(id)[:guest_access]
|
233
|
+
client.api.get_room_guest_access(id)[:guest_access]&.to_sym
|
234
234
|
end
|
235
235
|
|
236
236
|
# Gets the join rule for the room
|
237
237
|
#
|
238
238
|
# @return [:public,:knock,:invite,:private] The current join rule
|
239
239
|
def join_rule
|
240
|
-
client.api.get_room_join_rules(id)[:join_rule]
|
240
|
+
client.api.get_room_join_rules(id)[:join_rule]&.to_sym
|
241
241
|
end
|
242
242
|
|
243
243
|
# Checks if +guest_access+ is set to +:can_join+
|
@@ -250,11 +250,16 @@ module MatrixSdk
|
|
250
250
|
join_rule == :invite
|
251
251
|
end
|
252
252
|
|
253
|
+
# Checks if +join_rule+ is set to +:knock+
|
254
|
+
def knock_only?
|
255
|
+
join_rule == :knock
|
256
|
+
end
|
257
|
+
|
253
258
|
# Gets the history visibility of the room
|
254
259
|
#
|
255
260
|
# @return [:invited,:joined,:shared,:world_readable] The current history visibility for the room
|
256
261
|
def history_visibility
|
257
|
-
client.api.get_room_state(id, 'm.room.history_visibility')[:history_visibility]
|
262
|
+
client.api.get_room_state(id, 'm.room.history_visibility')[:history_visibility]&.to_sym
|
258
263
|
end
|
259
264
|
|
260
265
|
# Checks if the room history is world readable
|
@@ -272,8 +277,8 @@ module MatrixSdk
|
|
272
277
|
client.api.get_room_aliases(id).aliases
|
273
278
|
rescue MatrixNotFoundError
|
274
279
|
data = client.api.get_room_state_all(id)
|
275
|
-
data.select { |chunk| chunk[:type] == 'm.room.aliases' && chunk.
|
276
|
-
.map { |chunk| chunk[
|
280
|
+
data.select { |chunk| chunk[:type] == 'm.room.aliases' && !chunk.dig(*%i[content aliases]).nil? }
|
281
|
+
.map { |chunk| chunk.dig(*%i[content aliases]) }
|
277
282
|
.flatten
|
278
283
|
.compact
|
279
284
|
end
|
@@ -737,7 +742,7 @@ module MatrixSdk
|
|
737
742
|
user = MXID.new(user.to_s) unless user.is_a? MXID
|
738
743
|
raise ArgumentError, 'Must provide a valid user or MXID' unless user.user?
|
739
744
|
|
740
|
-
level = power_levels
|
745
|
+
level = power_levels.dig(:users, user.to_s.to_sym)
|
741
746
|
level = power_levels[:users_default] || 0 if level.nil? && use_default
|
742
747
|
level
|
743
748
|
end
|
@@ -812,8 +817,17 @@ module MatrixSdk
|
|
812
817
|
|
813
818
|
if users
|
814
819
|
data[:users] = {} unless data.key? :users
|
815
|
-
|
816
|
-
|
820
|
+
users.each do |user, level|
|
821
|
+
user = user.id if user.is_a? User
|
822
|
+
user = MXID.new(user.to_s) unless user.is_a? MXID
|
823
|
+
raise ArgumentError, 'Must provide a valid user or MXID' unless user.user?
|
824
|
+
|
825
|
+
if level.nil?
|
826
|
+
data[:users].delete(user.to_s.to_sym)
|
827
|
+
else
|
828
|
+
data[:users][user.to_s.to_sym] = level
|
829
|
+
end
|
830
|
+
end
|
817
831
|
end
|
818
832
|
|
819
833
|
client.api.set_power_levels(id, data)
|
@@ -857,27 +871,27 @@ module MatrixSdk
|
|
857
871
|
end
|
858
872
|
|
859
873
|
def handle_room_name(event)
|
860
|
-
tinycache_adapter.write(:name, event[
|
874
|
+
tinycache_adapter.write(:name, event.dig(*%i[content name]))
|
861
875
|
end
|
862
876
|
|
863
877
|
def handle_room_topic(event)
|
864
|
-
tinycache_adapter.write(:topic, event[
|
878
|
+
tinycache_adapter.write(:topic, event.dig(*%i[content topic]))
|
865
879
|
end
|
866
880
|
|
867
881
|
def handle_room_guest_access(event)
|
868
|
-
tinycache_adapter.write(:guest_access, event[
|
882
|
+
tinycache_adapter.write(:guest_access, event.dig(*%i[content guest_access])&.to_sym)
|
869
883
|
end
|
870
884
|
|
871
885
|
def handle_room_join_rules(event)
|
872
|
-
tinycache_adapter.write(:join_rule, event[
|
886
|
+
tinycache_adapter.write(:join_rule, event.dig(*%i[content join_rule])&.to_sym)
|
873
887
|
end
|
874
888
|
|
875
889
|
def handle_room_member(event)
|
876
890
|
return unless client.cache == :all
|
877
891
|
|
878
|
-
if event[
|
892
|
+
if event.dig(*%i[content membership]) == 'join'
|
879
893
|
ensure_member(client.get_user(event[:state_key]).dup.tap do |u|
|
880
|
-
u.instance_variable_set
|
894
|
+
u.instance_variable_set(:@display_name, event.dig(*%i[content displayname]))
|
881
895
|
end)
|
882
896
|
elsif tinycache_adapter.exist? :joined_members
|
883
897
|
members = tinycache_adapter.read(:joined_members)
|
@@ -886,7 +900,7 @@ module MatrixSdk
|
|
886
900
|
end
|
887
901
|
|
888
902
|
def handle_room_canonical_alias(event)
|
889
|
-
canonical_alias = tinycache_adapter.write
|
903
|
+
canonical_alias = tinycache_adapter.write(:canonical_alias, event.dig(*%i[content alias]))
|
890
904
|
|
891
905
|
data = tinycache_adapter.read(:aliases) || []
|
892
906
|
data << canonical_alias
|
@@ -897,7 +911,7 @@ module MatrixSdk
|
|
897
911
|
tinycache_adapter.write(:aliases, []) unless tinycache_adapter.exist? :aliases
|
898
912
|
|
899
913
|
aliases = tinycache_adapter.read(:aliases) || []
|
900
|
-
aliases.concat
|
914
|
+
aliases.concat(event.dig(*%i[content aliases]))
|
901
915
|
|
902
916
|
tinycache_adapter.write(:aliases, aliases)
|
903
917
|
end
|
@@ -10,7 +10,7 @@ module MatrixSdk::Rooms
|
|
10
10
|
suggested_only: suggested_only,
|
11
11
|
max_rooms_per_space: max_rooms
|
12
12
|
}.compact
|
13
|
-
rescue
|
13
|
+
rescue MatrixRequestError
|
14
14
|
data = client.api.request :get, :client_r0, "/rooms/#{id}/spaces", query: {
|
15
15
|
suggested_only: suggested_only,
|
16
16
|
max_rooms_per_space: max_rooms
|
data/lib/matrix_sdk/user.rb
CHANGED
@@ -74,7 +74,7 @@ module MatrixSdk
|
|
74
74
|
# @see MatrixSdk::Protocols::CS#get_presence_status
|
75
75
|
# @note This information is not cached in the abstraction layer
|
76
76
|
def presence
|
77
|
-
raw_presence[:presence]
|
77
|
+
raw_presence[:presence]&.to_sym
|
78
78
|
end
|
79
79
|
|
80
80
|
# Sets the user's current presence status
|
@@ -133,7 +133,7 @@ module MatrixSdk
|
|
133
133
|
# Returns all the current device keys for the user, retrieving them if necessary
|
134
134
|
def device_keys
|
135
135
|
@device_keys ||= client.api.keys_query(device_keys: { id => [] }).yield_self do |resp|
|
136
|
-
resp
|
136
|
+
resp.dig(:device_keys, id.to_sym)
|
137
137
|
end
|
138
138
|
end
|
139
139
|
|
@@ -62,7 +62,7 @@ module MatrixSdk::Util
|
|
62
62
|
method_names = build_method_names(method_name)
|
63
63
|
tinycache_adapter_config[method_name] = {
|
64
64
|
level: cache_level,
|
65
|
-
expires: expires_in || 1 * 365 * 24 * 60 * 60 # 1 year
|
65
|
+
expires: expires_in || (1 * 365 * 24 * 60 * 60) # 1 year
|
66
66
|
}
|
67
67
|
|
68
68
|
helper = const_get(cache_helper_module_name)
|
@@ -99,8 +99,12 @@ module MatrixSdk::Util
|
|
99
99
|
define_method(method_name) do |*args|
|
100
100
|
unless_proc = opts[:unless].is_a?(Symbol) ? opts[:unless].to_proc : opts[:unless]
|
101
101
|
|
102
|
+
raise ArgumentError, 'Invalid proc provided (must have arity between 1..3)' if unless_proc && !(1..3).include?(unless_proc.arity)
|
103
|
+
|
102
104
|
skip_cache = false
|
103
|
-
skip_cache ||= unless_proc
|
105
|
+
skip_cache ||= unless_proc.call(self, method_name, args) if unless_proc&.arity == 3
|
106
|
+
skip_cache ||= unless_proc.call(method_name, args) if unless_proc&.arity == 2
|
107
|
+
skip_cache ||= unless_proc.call(args) if unless_proc&.arity == 1
|
104
108
|
skip_cache ||= CACHE_LEVELS[client&.cache || :all] < CACHE_LEVELS[cache_level]
|
105
109
|
|
106
110
|
if skip_cache
|
data/lib/matrix_sdk/version.rb
CHANGED
data/lib/matrix_sdk.rb
CHANGED
@@ -19,6 +19,11 @@ module MatrixSdk
|
|
19
19
|
|
20
20
|
autoload :MatrixError, 'matrix_sdk/errors'
|
21
21
|
autoload :MatrixRequestError, 'matrix_sdk/errors'
|
22
|
+
autoload :MatrixNotAuthorizedError, 'matrix_sdk/errors'
|
23
|
+
autoload :MatrixForbiddenError, 'matrix_sdk/errors'
|
24
|
+
autoload :MatrixNotFoundError, 'matrix_sdk/errors'
|
25
|
+
autoload :MatrixConflictError, 'matrix_sdk/errors'
|
26
|
+
autoload :MatrixTooManyRequestsError, 'matrix_sdk/errors'
|
22
27
|
autoload :MatrixConnectionError, 'matrix_sdk/errors'
|
23
28
|
autoload :MatrixTimeoutError, 'matrix_sdk/errors'
|
24
29
|
autoload :MatrixUnexpectedResponseError, 'matrix_sdk/errors'
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: matrix_sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.
|
4
|
+
version: 2.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Alexander Olofsson
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-01-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mocha
|
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
132
|
- !ruby/object:Gem::Version
|
133
133
|
version: '0'
|
134
134
|
requirements: []
|
135
|
-
rubygems_version: 3.2.
|
135
|
+
rubygems_version: 3.2.22
|
136
136
|
signing_key:
|
137
137
|
specification_version: 4
|
138
138
|
summary: SDK for applications using the Matrix protocol
|