matrix_sdk 2.4.0 → 2.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +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
|