matrix_sdk 2.3.0 → 2.6.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 +25 -0
- data/README.md +2 -0
- data/lib/matrix_sdk/api.rb +52 -18
- data/lib/matrix_sdk/client.rb +41 -27
- data/lib/matrix_sdk/mxid.rb +41 -1
- data/lib/matrix_sdk/protocols/cs.rb +134 -108
- data/lib/matrix_sdk/protocols/msc.rb +5 -0
- data/lib/matrix_sdk/room.rb +106 -39
- data/lib/matrix_sdk/rooms/space.rb +79 -0
- data/lib/matrix_sdk/user.rb +4 -4
- data/lib/matrix_sdk/util/events.rb +4 -6
- data/lib/matrix_sdk/util/extensions.rb +13 -19
- data/lib/matrix_sdk/util/tinycache.rb +31 -7
- data/lib/matrix_sdk/util/tinycache_adapter.rb +5 -0
- data/lib/matrix_sdk/util/uri.rb +101 -0
- data/lib/matrix_sdk/version.rb +1 -1
- data/lib/matrix_sdk.rb +10 -0
- metadata +5 -3
@@ -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,8 +202,8 @@ module MatrixSdk::Protocols::CS
|
|
190
202
|
}.merge params
|
191
203
|
data[:device_id] = device_id if device_id
|
192
204
|
|
193
|
-
request(:post,
|
194
|
-
@access_token = resp.
|
205
|
+
request(:post, client_api_latest, '/login', body: data, query: query).tap do |resp|
|
206
|
+
@access_token = resp.access_token if resp.key?(:access_token) && options[:store_token]
|
195
207
|
@device_id = resp.device_id if resp.key?(:device_id) && options[:store_device_id]
|
196
208
|
end
|
197
209
|
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
|
@@ -878,31 +912,23 @@ module MatrixSdk::Protocols::CS
|
|
878
912
|
send_state_event(room_id, 'm.room.avatar', content, **params)
|
879
913
|
end
|
880
914
|
|
881
|
-
# Gets a list of
|
915
|
+
# Gets a list of currently known aliases of a room
|
882
916
|
#
|
883
917
|
# @param [MXID,String] room_id The room ID to look up
|
884
|
-
# @param [Hash] params Extra options to provide to the request, see #get_room_state
|
885
918
|
# @return [Response] A response hash with the array :aliases
|
886
|
-
# @raise [
|
887
|
-
# @see
|
888
|
-
# @see https://matrix.org/docs/spec/client_server/latest.html#m-room-avatar
|
919
|
+
# @raise [MatrixForbiddenError] Raised if the user doesn't have the right to read aliases
|
920
|
+
# @see https://spec.matrix.org/v1.1/client-server-api/#get_matrixclientv3roomsroomidaliases
|
889
921
|
# The Matrix Spec, for more information about the event and data
|
890
922
|
# @example Looking up aliases for a room
|
891
923
|
# api.get_room_aliases('!QtykxKocfZaZOUrTwp:matrix.org')
|
892
|
-
# # MatrixSdk::MatrixNotFoundError: HTTP 404 (M_NOT_FOUND): Event not found.
|
893
|
-
# api.get_room_aliases('!QtykxKocfZaZOUrTwp:matrix.org', key: 'matrix.org')
|
894
924
|
# # => {:aliases=>["#matrix:matrix.org"]}
|
895
|
-
# api.get_room_aliases('!QtykxKocfZaZOUrTwp:matrix.org', key: 'kittenface.studio')
|
896
|
-
# # => {:aliases=>["#worlddominationhq:kittenface.studio"]}
|
897
|
-
# @example A way to find all aliases for a room
|
898
|
-
# api.get_room_state('!mjbDjyNsRXndKLkHIe:matrix.org')
|
899
|
-
# .select { |ch| ch[:type] == 'm.room.aliases' }
|
900
|
-
# .map { |ch| ch[:content][:aliases] }
|
901
|
-
# .flatten
|
902
|
-
# .compact
|
903
|
-
# # => ["#synapse:im.kabi.tk", "#synapse:matrix.org", "#synapse-community:matrix.org", "#synapse-ops:matrix.org", "#synops:matrix.org", ...
|
904
925
|
def get_room_aliases(room_id, **params)
|
905
|
-
|
926
|
+
query = {}
|
927
|
+
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
928
|
+
|
929
|
+
room_id = ERB::Util.url_encode room_id.to_s
|
930
|
+
|
931
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/aliases", query: query)
|
906
932
|
end
|
907
933
|
|
908
934
|
# Gets a list of pinned events in a room
|
@@ -1125,7 +1151,7 @@ module MatrixSdk::Protocols::CS
|
|
1125
1151
|
|
1126
1152
|
room_id = ERB::Util.url_encode room_id.to_s
|
1127
1153
|
|
1128
|
-
request(:post,
|
1154
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/leave", query: query)
|
1129
1155
|
end
|
1130
1156
|
|
1131
1157
|
def forget_room(room_id, **params)
|
@@ -1134,7 +1160,7 @@ module MatrixSdk::Protocols::CS
|
|
1134
1160
|
|
1135
1161
|
room_id = ERB::Util.url_encode room_id.to_s
|
1136
1162
|
|
1137
|
-
request(:post,
|
1163
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/forget", query: query)
|
1138
1164
|
end
|
1139
1165
|
|
1140
1166
|
# Directly joins a room by ID
|
@@ -1154,7 +1180,7 @@ module MatrixSdk::Protocols::CS
|
|
1154
1180
|
|
1155
1181
|
room_id = ERB::Util.url_encode room_id.to_s
|
1156
1182
|
|
1157
|
-
request(:post,
|
1183
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/join", body: body, query: query)
|
1158
1184
|
end
|
1159
1185
|
|
1160
1186
|
def invite_user(room_id, user_id, **params)
|
@@ -1167,7 +1193,7 @@ module MatrixSdk::Protocols::CS
|
|
1167
1193
|
|
1168
1194
|
room_id = ERB::Util.url_encode room_id.to_s
|
1169
1195
|
|
1170
|
-
request(:post,
|
1196
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/invite", body: content, query: query)
|
1171
1197
|
end
|
1172
1198
|
|
1173
1199
|
def kick_user(room_id, user_id, reason: '', **params)
|
@@ -1180,7 +1206,7 @@ module MatrixSdk::Protocols::CS
|
|
1180
1206
|
}
|
1181
1207
|
room_id = ERB::Util.url_encode room_id.to_s
|
1182
1208
|
|
1183
|
-
request(:post,
|
1209
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/kick", body: content, query: query)
|
1184
1210
|
end
|
1185
1211
|
|
1186
1212
|
def get_membership(room_id, user_id, **params)
|
@@ -1190,7 +1216,7 @@ module MatrixSdk::Protocols::CS
|
|
1190
1216
|
room_id = ERB::Util.url_encode room_id.to_s
|
1191
1217
|
user_id = ERB::Util.url_encode user_id.to_s
|
1192
1218
|
|
1193
|
-
request(:get,
|
1219
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/state/m.room.member/#{user_id}", query: query)
|
1194
1220
|
end
|
1195
1221
|
|
1196
1222
|
def set_membership(room_id, user_id, membership, reason: '', **params)
|
@@ -1214,7 +1240,7 @@ module MatrixSdk::Protocols::CS
|
|
1214
1240
|
}
|
1215
1241
|
room_id = ERB::Util.url_encode room_id.to_s
|
1216
1242
|
|
1217
|
-
request(:post,
|
1243
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/ban", body: content, query: query)
|
1218
1244
|
end
|
1219
1245
|
|
1220
1246
|
def unban_user(room_id, user_id, **params)
|
@@ -1226,7 +1252,7 @@ module MatrixSdk::Protocols::CS
|
|
1226
1252
|
}
|
1227
1253
|
room_id = ERB::Util.url_encode room_id.to_s
|
1228
1254
|
|
1229
|
-
request(:post,
|
1255
|
+
request(:post, client_api_latest, "/rooms/#{room_id}/unban", body: content, query: query)
|
1230
1256
|
end
|
1231
1257
|
|
1232
1258
|
# Gets the room directory visibility status for a room
|
@@ -1241,7 +1267,7 @@ module MatrixSdk::Protocols::CS
|
|
1241
1267
|
|
1242
1268
|
room_id = ERB::Util.url_encode room_id.to_s
|
1243
1269
|
|
1244
|
-
request(:get,
|
1270
|
+
request(:get, client_api_latest, "/directory/list/room/#{room_id}", query: query)
|
1245
1271
|
end
|
1246
1272
|
|
1247
1273
|
# Sets the room directory visibility status for a room
|
@@ -1261,7 +1287,7 @@ module MatrixSdk::Protocols::CS
|
|
1261
1287
|
|
1262
1288
|
room_id = ERB::Util.url_encode room_id.to_s
|
1263
1289
|
|
1264
|
-
request(:put,
|
1290
|
+
request(:put, client_api_latest, "/directory/list/room/#{room_id}", body: body, query: query)
|
1265
1291
|
end
|
1266
1292
|
|
1267
1293
|
def get_user_tags(user_id, room_id, **params)
|
@@ -1271,7 +1297,7 @@ module MatrixSdk::Protocols::CS
|
|
1271
1297
|
room_id = ERB::Util.url_encode room_id.to_s
|
1272
1298
|
user_id = ERB::Util.url_encode user_id.to_s
|
1273
1299
|
|
1274
|
-
request(:get,
|
1300
|
+
request(:get, client_api_latest, "/user/#{user_id}/rooms/#{room_id}/tags", query: query)
|
1275
1301
|
end
|
1276
1302
|
|
1277
1303
|
def remove_user_tag(user_id, room_id, tag, **params)
|
@@ -1282,7 +1308,7 @@ module MatrixSdk::Protocols::CS
|
|
1282
1308
|
user_id = ERB::Util.url_encode user_id.to_s
|
1283
1309
|
tag = ERB::Util.url_encode tag.to_s
|
1284
1310
|
|
1285
|
-
request(:delete,
|
1311
|
+
request(:delete, client_api_latest, "/user/#{user_id}/rooms/#{room_id}/tags/#{tag}", query: query)
|
1286
1312
|
end
|
1287
1313
|
|
1288
1314
|
def add_user_tag(user_id, room_id, tag, **params)
|
@@ -1300,7 +1326,7 @@ module MatrixSdk::Protocols::CS
|
|
1300
1326
|
user_id = ERB::Util.url_encode user_id.to_s
|
1301
1327
|
tag = ERB::Util.url_encode tag.to_s
|
1302
1328
|
|
1303
|
-
request(:put,
|
1329
|
+
request(:put, client_api_latest, "/user/#{user_id}/rooms/#{room_id}/tags/#{tag}", body: content, query: query)
|
1304
1330
|
end
|
1305
1331
|
|
1306
1332
|
def get_account_data(user_id, type_key, **params)
|
@@ -1310,7 +1336,7 @@ module MatrixSdk::Protocols::CS
|
|
1310
1336
|
user_id = ERB::Util.url_encode user_id.to_s
|
1311
1337
|
type_key = ERB::Util.url_encode type_key.to_s
|
1312
1338
|
|
1313
|
-
request(:get,
|
1339
|
+
request(:get, client_api_latest, "/user/#{user_id}/account_data/#{type_key}", query: query)
|
1314
1340
|
end
|
1315
1341
|
|
1316
1342
|
def set_account_data(user_id, type_key, account_data, **params)
|
@@ -1320,7 +1346,7 @@ module MatrixSdk::Protocols::CS
|
|
1320
1346
|
user_id = ERB::Util.url_encode user_id.to_s
|
1321
1347
|
type_key = ERB::Util.url_encode type_key.to_s
|
1322
1348
|
|
1323
|
-
request(:put,
|
1349
|
+
request(:put, client_api_latest, "/user/#{user_id}/account_data/#{type_key}", body: account_data, query: query)
|
1324
1350
|
end
|
1325
1351
|
|
1326
1352
|
def get_room_account_data(user_id, room_id, type_key, **params)
|
@@ -1331,7 +1357,7 @@ module MatrixSdk::Protocols::CS
|
|
1331
1357
|
room_id = ERB::Util.url_encode room_id.to_s
|
1332
1358
|
type_key = ERB::Util.url_encode type_key.to_s
|
1333
1359
|
|
1334
|
-
request(:get,
|
1360
|
+
request(:get, client_api_latest, "/user/#{user_id}/rooms/#{room_id}/account_data/#{type_key}", query: query)
|
1335
1361
|
end
|
1336
1362
|
|
1337
1363
|
def set_room_account_data(user_id, room_id, type_key, account_data, **params)
|
@@ -1342,7 +1368,7 @@ module MatrixSdk::Protocols::CS
|
|
1342
1368
|
room_id = ERB::Util.url_encode room_id.to_s
|
1343
1369
|
type_key = ERB::Util.url_encode type_key.to_s
|
1344
1370
|
|
1345
|
-
request(:put,
|
1371
|
+
request(:put, client_api_latest, "/user/#{user_id}/rooms/#{room_id}/account_data/#{type_key}", body: account_data, query: query)
|
1346
1372
|
end
|
1347
1373
|
|
1348
1374
|
# Retrieve user information
|
@@ -1354,7 +1380,7 @@ module MatrixSdk::Protocols::CS
|
|
1354
1380
|
def whois(user_id)
|
1355
1381
|
user_id = ERB::Util.url_encode user_id.to_s
|
1356
1382
|
|
1357
|
-
request(:get,
|
1383
|
+
request(:get, client_api_latest, "/admin/whois/#{user_id}")
|
1358
1384
|
end
|
1359
1385
|
|
1360
1386
|
def get_filter(user_id, filter_id, **params)
|
@@ -1364,7 +1390,7 @@ module MatrixSdk::Protocols::CS
|
|
1364
1390
|
user_id = ERB::Util.url_encode user_id.to_s
|
1365
1391
|
filter_id = ERB::Util.url_encode filter_id.to_s
|
1366
1392
|
|
1367
|
-
request(:get,
|
1393
|
+
request(:get, client_api_latest, "/user/#{user_id}/filter/#{filter_id}", query: query)
|
1368
1394
|
end
|
1369
1395
|
|
1370
1396
|
# Creates a filter for future use
|
@@ -1377,7 +1403,7 @@ module MatrixSdk::Protocols::CS
|
|
1377
1403
|
|
1378
1404
|
user_id = ERB::Util.url_encode user_id.to_s
|
1379
1405
|
|
1380
|
-
request(:post,
|
1406
|
+
request(:post, client_api_latest, "/user/#{user_id}/filter", body: filter_params, query: query)
|
1381
1407
|
end
|
1382
1408
|
|
1383
1409
|
def media_upload(content, content_type, **params)
|
@@ -1393,7 +1419,7 @@ module MatrixSdk::Protocols::CS
|
|
1393
1419
|
|
1394
1420
|
user_id = ERB::Util.url_encode user_id.to_s
|
1395
1421
|
|
1396
|
-
request(:get,
|
1422
|
+
request(:get, client_api_latest, "/profile/#{user_id}/displayname", query: query)
|
1397
1423
|
end
|
1398
1424
|
|
1399
1425
|
def set_display_name(user_id, display_name, **params)
|
@@ -1406,7 +1432,7 @@ module MatrixSdk::Protocols::CS
|
|
1406
1432
|
|
1407
1433
|
user_id = ERB::Util.url_encode user_id.to_s
|
1408
1434
|
|
1409
|
-
request(:put,
|
1435
|
+
request(:put, client_api_latest, "/profile/#{user_id}/displayname", body: content, query: query)
|
1410
1436
|
end
|
1411
1437
|
|
1412
1438
|
def get_avatar_url(user_id, **params)
|
@@ -1415,7 +1441,7 @@ module MatrixSdk::Protocols::CS
|
|
1415
1441
|
|
1416
1442
|
user_id = ERB::Util.url_encode user_id.to_s
|
1417
1443
|
|
1418
|
-
request(:get,
|
1444
|
+
request(:get, client_api_latest, "/profile/#{user_id}/avatar_url", query: query)
|
1419
1445
|
end
|
1420
1446
|
|
1421
1447
|
# Sets the avatar URL for a user
|
@@ -1435,7 +1461,7 @@ module MatrixSdk::Protocols::CS
|
|
1435
1461
|
# api.set_avatar_url(api.whoami?[:user_id], mxc)
|
1436
1462
|
#
|
1437
1463
|
# @param [String,MXID] user_id The ID of the user to set the avatar for
|
1438
|
-
# @param [String,URI::
|
1464
|
+
# @param [String,URI::MXC] url The new avatar URL, should be a mxc:// URL
|
1439
1465
|
# @return [Response] An empty response hash if the change was successful
|
1440
1466
|
# @see https://matrix.org/docs/spec/client_server/latest#put-matrix-client-r0-profile-userid-avatar-url
|
1441
1467
|
# The Matrix Spec, for more information about the event and data
|
@@ -1449,7 +1475,7 @@ module MatrixSdk::Protocols::CS
|
|
1449
1475
|
|
1450
1476
|
user_id = ERB::Util.url_encode user_id.to_s
|
1451
1477
|
|
1452
|
-
request(:put,
|
1478
|
+
request(:put, client_api_latest, "/profile/#{user_id}/avatar_url", body: content, query: query)
|
1453
1479
|
end
|
1454
1480
|
|
1455
1481
|
# Gets the combined profile object of a user.
|
@@ -1466,7 +1492,7 @@ module MatrixSdk::Protocols::CS
|
|
1466
1492
|
|
1467
1493
|
user_id = ERB::Util.url_encode user_id.to_s
|
1468
1494
|
|
1469
|
-
request(:get,
|
1495
|
+
request(:get, client_api_latest, "/profile/#{user_id}", query: query)
|
1470
1496
|
end
|
1471
1497
|
|
1472
1498
|
# Gets TURN server connection information and credentials
|
@@ -1475,7 +1501,7 @@ module MatrixSdk::Protocols::CS
|
|
1475
1501
|
# @see https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-voip-turnserver
|
1476
1502
|
# The Matrix Spec, for more information about the event and data
|
1477
1503
|
def get_turn_server
|
1478
|
-
request(:get,
|
1504
|
+
request(:get, client_api_latest, '/voip/turnServer')
|
1479
1505
|
end
|
1480
1506
|
|
1481
1507
|
# Sets the typing status for a user
|
@@ -1496,7 +1522,7 @@ module MatrixSdk::Protocols::CS
|
|
1496
1522
|
timeout: timeout ? timeout * 1000 : nil
|
1497
1523
|
}.compact
|
1498
1524
|
|
1499
|
-
request(:put,
|
1525
|
+
request(:put, client_api_latest, "/rooms/#{room_id}/typing/#{user_id}", body: body)
|
1500
1526
|
end
|
1501
1527
|
|
1502
1528
|
# Gets the presence status of a user
|
@@ -1508,7 +1534,7 @@ module MatrixSdk::Protocols::CS
|
|
1508
1534
|
def get_presence_status(user_id)
|
1509
1535
|
user_id = ERB::Util.url_encode user_id.to_s
|
1510
1536
|
|
1511
|
-
request(:get,
|
1537
|
+
request(:get, client_api_latest, "/presence/#{user_id}/status")
|
1512
1538
|
end
|
1513
1539
|
|
1514
1540
|
# Sets the presence status of a user
|
@@ -1528,7 +1554,7 @@ module MatrixSdk::Protocols::CS
|
|
1528
1554
|
status_msg: message
|
1529
1555
|
}.compact
|
1530
1556
|
|
1531
|
-
request(:put,
|
1557
|
+
request(:put, client_api_latest, "/presence/#{user_id}/status", body: body)
|
1532
1558
|
end
|
1533
1559
|
|
1534
1560
|
# Converts a Matrix content URL (mxc://) to a media download URL
|
@@ -1545,7 +1571,7 @@ module MatrixSdk::Protocols::CS
|
|
1545
1571
|
# # => #<URI::HTTPS https://matrix.org/_matrix/media/r0/download/example.com/media_hash>
|
1546
1572
|
def get_download_url(mxcurl, source: nil, **_params)
|
1547
1573
|
mxcurl = URI.parse(mxcurl.to_s) unless mxcurl.is_a? URI
|
1548
|
-
raise 'Not a mxc:// URL' unless mxcurl.is_a? URI::
|
1574
|
+
raise 'Not a mxc:// URL' unless mxcurl.is_a? URI::MXC
|
1549
1575
|
|
1550
1576
|
if source
|
1551
1577
|
source = "https://#{source}" unless source.include? '://'
|
@@ -1605,7 +1631,7 @@ module MatrixSdk::Protocols::CS
|
|
1605
1631
|
messages: messages
|
1606
1632
|
}.compact
|
1607
1633
|
|
1608
|
-
request(:put,
|
1634
|
+
request(:put, client_api_latest, "/sendToDevice/#{event_type}/#{txn_id}", body: body)
|
1609
1635
|
end
|
1610
1636
|
|
1611
1637
|
# Gets the room ID for an alias
|
@@ -1618,7 +1644,7 @@ module MatrixSdk::Protocols::CS
|
|
1618
1644
|
|
1619
1645
|
room_alias = ERB::Util.url_encode room_alias.to_s
|
1620
1646
|
|
1621
|
-
request(:get,
|
1647
|
+
request(:get, client_api_latest, "/directory/room/#{room_alias}", query: query)
|
1622
1648
|
end
|
1623
1649
|
|
1624
1650
|
# Sets the room ID for an alias
|
@@ -1635,7 +1661,7 @@ module MatrixSdk::Protocols::CS
|
|
1635
1661
|
}
|
1636
1662
|
room_alias = ERB::Util.url_encode room_alias.to_s
|
1637
1663
|
|
1638
|
-
request(:put,
|
1664
|
+
request(:put, client_api_latest, "/directory/room/#{room_alias}", body: content, query: query)
|
1639
1665
|
end
|
1640
1666
|
|
1641
1667
|
# Remove an alias from its room
|
@@ -1647,7 +1673,7 @@ module MatrixSdk::Protocols::CS
|
|
1647
1673
|
|
1648
1674
|
room_alias = ERB::Util.url_encode room_alias.to_s
|
1649
1675
|
|
1650
|
-
request(:delete,
|
1676
|
+
request(:delete, client_api_latest, "/directory/room/#{room_alias}", query: query)
|
1651
1677
|
end
|
1652
1678
|
|
1653
1679
|
# Gets a list of all the members in a room
|
@@ -1661,7 +1687,7 @@ module MatrixSdk::Protocols::CS
|
|
1661
1687
|
|
1662
1688
|
room_id = ERB::Util.url_encode room_id.to_s
|
1663
1689
|
|
1664
|
-
request(:get,
|
1690
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/members", query: query.merge(params))
|
1665
1691
|
end
|
1666
1692
|
|
1667
1693
|
# Gets a list of the joined members in a room
|
@@ -1676,7 +1702,7 @@ module MatrixSdk::Protocols::CS
|
|
1676
1702
|
|
1677
1703
|
room_id = ERB::Util.url_encode room_id.to_s
|
1678
1704
|
|
1679
|
-
request(:get,
|
1705
|
+
request(:get, client_api_latest, "/rooms/#{room_id}/joined_members", query: query)
|
1680
1706
|
end
|
1681
1707
|
|
1682
1708
|
# Gets a list of the current users registered devices
|
@@ -1684,7 +1710,7 @@ module MatrixSdk::Protocols::CS
|
|
1684
1710
|
# @see https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-devices
|
1685
1711
|
# The Matrix Spec, for more information about the data
|
1686
1712
|
def get_devices
|
1687
|
-
request(:get,
|
1713
|
+
request(:get, client_api_latest, '/devices')
|
1688
1714
|
end
|
1689
1715
|
|
1690
1716
|
# Gets the information about a certain client device
|
@@ -1695,7 +1721,7 @@ module MatrixSdk::Protocols::CS
|
|
1695
1721
|
def get_device(device_id)
|
1696
1722
|
device_id = ERB::Util.url_encode device_id.to_s
|
1697
1723
|
|
1698
|
-
request(:get,
|
1724
|
+
request(:get, client_api_latest, "/devices/#{device_id}")
|
1699
1725
|
end
|
1700
1726
|
|
1701
1727
|
# Sets the metadata for a device
|
@@ -1706,7 +1732,7 @@ module MatrixSdk::Protocols::CS
|
|
1706
1732
|
def set_device(device_id, display_name:)
|
1707
1733
|
device_id = ERB::Util.url_encode device_id.to_s
|
1708
1734
|
|
1709
|
-
request(:put,
|
1735
|
+
request(:put, client_api_latest, "/devices/#{device_id}", body: { display_name: display_name })
|
1710
1736
|
end
|
1711
1737
|
|
1712
1738
|
# Removes a device from the current user
|
@@ -1719,7 +1745,7 @@ module MatrixSdk::Protocols::CS
|
|
1719
1745
|
def delete_device(device_id, auth:)
|
1720
1746
|
device_id = ERB::Util.url_encode device_id.to_s
|
1721
1747
|
|
1722
|
-
request(:delete,
|
1748
|
+
request(:delete, client_api_latest, "/devices/#{device_id}", body: { auth: auth })
|
1723
1749
|
end
|
1724
1750
|
|
1725
1751
|
# Run a query for device keys
|
@@ -1744,7 +1770,7 @@ module MatrixSdk::Protocols::CS
|
|
1744
1770
|
body[:timeout] = params[:timeout_ms] if params.key? :timeout_ms
|
1745
1771
|
body[:token] = token if token
|
1746
1772
|
|
1747
|
-
request(:post,
|
1773
|
+
request(:post, client_api_latest, '/keys/query', body: body)
|
1748
1774
|
end
|
1749
1775
|
|
1750
1776
|
# Claim one-time keys for pre-key messaging
|
@@ -1759,7 +1785,7 @@ module MatrixSdk::Protocols::CS
|
|
1759
1785
|
one_time_keys: one_time_keys,
|
1760
1786
|
timeout: timeout * 1000
|
1761
1787
|
}
|
1762
|
-
request(:post,
|
1788
|
+
request(:post, client_api_latest, '/keys/claim', body: body)
|
1763
1789
|
end
|
1764
1790
|
|
1765
1791
|
# Retrieve device key changes between two sync requests
|
@@ -1775,7 +1801,7 @@ module MatrixSdk::Protocols::CS
|
|
1775
1801
|
to: to
|
1776
1802
|
}
|
1777
1803
|
|
1778
|
-
request(:get,
|
1804
|
+
request(:get, client_api_latest, '/keys/changes', query: query)
|
1779
1805
|
end
|
1780
1806
|
|
1781
1807
|
# Gets the list of registered pushers for the current user
|
@@ -1784,7 +1810,7 @@ module MatrixSdk::Protocols::CS
|
|
1784
1810
|
# @see https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-pushers
|
1785
1811
|
# The Matrix Spec, for more information about the parameters and data
|
1786
1812
|
def get_pushers
|
1787
|
-
request(:get,
|
1813
|
+
request(:get, client_api_latest, '/pushers')
|
1788
1814
|
end
|
1789
1815
|
|
1790
1816
|
# rubocop:disable Metrics/ParameterLists
|
@@ -1817,7 +1843,7 @@ module MatrixSdk::Protocols::CS
|
|
1817
1843
|
append: params[:append]
|
1818
1844
|
}.compact
|
1819
1845
|
|
1820
|
-
request(:post,
|
1846
|
+
request(:post, client_api_latest, '/pushers/set', body: body)
|
1821
1847
|
end
|
1822
1848
|
# rubocop:enable Metrics/ParameterLists
|
1823
1849
|
|
@@ -1838,7 +1864,7 @@ module MatrixSdk::Protocols::CS
|
|
1838
1864
|
only: only
|
1839
1865
|
}.compact
|
1840
1866
|
|
1841
|
-
request(:get,
|
1867
|
+
request(:get, client_api_latest, '/notifications', query: query)
|
1842
1868
|
end
|
1843
1869
|
|
1844
1870
|
# Retrieves the full list of registered push rules for the current user
|
@@ -1847,7 +1873,7 @@ module MatrixSdk::Protocols::CS
|
|
1847
1873
|
# @see https://matrix.org/docs/spec/client_server/latest#get-matrix-client-r0-pushrules
|
1848
1874
|
# The Matrix Spec, for more information about the parameters and data
|
1849
1875
|
def get_pushrules
|
1850
|
-
request(:get,
|
1876
|
+
request(:get, client_api_latest, '/pushrules/')
|
1851
1877
|
end
|
1852
1878
|
|
1853
1879
|
# Retrieves a single registered push rule for the current user
|
@@ -1863,7 +1889,7 @@ module MatrixSdk::Protocols::CS
|
|
1863
1889
|
kind = ERB::Util.url_encode kind.to_s
|
1864
1890
|
id = ERB::Util.url_encode id.to_s
|
1865
1891
|
|
1866
|
-
request(:get,
|
1892
|
+
request(:get, client_api_latest, "/pushrules/#{scope}/#{kind}/#{id}")
|
1867
1893
|
end
|
1868
1894
|
|
1869
1895
|
# Checks if a push rule for the current user is enabled
|
@@ -1879,7 +1905,7 @@ module MatrixSdk::Protocols::CS
|
|
1879
1905
|
kind = ERB::Util.url_encode kind.to_s
|
1880
1906
|
id = ERB::Util.url_encode id.to_s
|
1881
1907
|
|
1882
|
-
request(:get,
|
1908
|
+
request(:get, client_api_latest, "/pushrules/#{scope}/#{kind}/#{id}/enabled")
|
1883
1909
|
end
|
1884
1910
|
|
1885
1911
|
# Enabled/Disables a specific push rule for the current user
|
@@ -1900,7 +1926,7 @@ module MatrixSdk::Protocols::CS
|
|
1900
1926
|
enabled: enabled
|
1901
1927
|
}
|
1902
1928
|
|
1903
|
-
request(:put,
|
1929
|
+
request(:put, client_api_latest, "/pushrules/#{scope}/#{kind}/#{id}/enabled", body: body)
|
1904
1930
|
end
|
1905
1931
|
|
1906
1932
|
# Gets the current list of actions for a specific push rule for the current user
|
@@ -1916,7 +1942,7 @@ module MatrixSdk::Protocols::CS
|
|
1916
1942
|
kind = ERB::Util.url_encode kind.to_s
|
1917
1943
|
id = ERB::Util.url_encode id.to_s
|
1918
1944
|
|
1919
|
-
request(:get,
|
1945
|
+
request(:get, client_api_latest, "/pushrules/#{scope}/#{kind}/#{id}/actions")
|
1920
1946
|
end
|
1921
1947
|
|
1922
1948
|
# Replaces the list of actions for a push rule for the current user
|
@@ -1939,7 +1965,7 @@ module MatrixSdk::Protocols::CS
|
|
1939
1965
|
actions: actions
|
1940
1966
|
}
|
1941
1967
|
|
1942
|
-
request(:put,
|
1968
|
+
request(:put, client_api_latest, "/pushrules/#{scope}/#{kind}/#{id}/actions", body: body)
|
1943
1969
|
end
|
1944
1970
|
|
1945
1971
|
# Gets the MXID of the currently logged-in user
|
@@ -1948,7 +1974,7 @@ module MatrixSdk::Protocols::CS
|
|
1948
1974
|
query = {}
|
1949
1975
|
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
1950
1976
|
|
1951
|
-
request(:get,
|
1977
|
+
request(:get, client_api_latest, '/account/whoami', query: query)
|
1952
1978
|
end
|
1953
1979
|
end
|
1954
1980
|
# rubocop:enable Metrics/ModuleLength
|