matrix_sdk 2.5.0 → 2.6.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 +9 -0
- data/README.md +2 -0
- data/lib/matrix_sdk/api.rb +48 -17
- data/lib/matrix_sdk/client.rb +4 -3
- data/lib/matrix_sdk/mxid.rb +1 -1
- data/lib/matrix_sdk/protocols/cs.rb +10 -18
- data/lib/matrix_sdk/protocols/msc.rb +5 -4
- data/lib/matrix_sdk/room.rb +14 -22
- data/lib/matrix_sdk/rooms/space.rb +2 -2
- data/lib/matrix_sdk/user.rb +1 -1
- data/lib/matrix_sdk/util/extensions.rb +14 -5
- data/lib/matrix_sdk/util/tinycache.rb +14 -2
- data/lib/matrix_sdk/util/uri.rb +16 -4
- data/lib/matrix_sdk/version.rb +1 -1
- 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: 50821866efab2cbd39daf23bc9ff3bd7864bca5638f76c766a8ba26ab91c7423
|
4
|
+
data.tar.gz: 2601cf5141e824b322f5310e09b72d42059162e1ac87da11243167d2604f1801
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7bb45dfcb6696b75ed0be95b92fbb3f569b258d4d0456a3cd8ea16fd22d5e3d5050607e6229bfa0e32b84fc0248e554db8f93d48cd970b2ff95475cf0bcfba85
|
7
|
+
data.tar.gz: 58d8524e9d83ef570ca19a41f28758fc129c1a3988ea3522a994e58eaa93c4807850b63a2171423dd69a948738e69468542d56d882ecf98c60e6f8607928b6d1
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,12 @@
|
|
1
|
+
## 2.6.0 - 2022-07-15
|
2
|
+
|
3
|
+
- Adds some multi-thread usage support to the API (create your API/client with `threadsafe: :multithread/true/false`)
|
4
|
+
The API will currently default to running with multi-threaded requests. In case your application is single-threaded - or never performs requests from multiple threads - then you can set `threadsafe: true/false` to support connection reuse.
|
5
|
+
- Changes room finding to ignore non-canonical aliases by default
|
6
|
+
- Improves room alias handling
|
7
|
+
- Improves Ruby 3.0+ support
|
8
|
+
- Improves debug output by supporting PP (Ruby pretty print) on all MatrixSdk objects
|
9
|
+
|
1
10
|
## 2.5.0 - 2022-01-14
|
2
11
|
|
3
12
|
- Adds preliminary support for the Matrix v1.1 `client/v3` API
|
data/README.md
CHANGED
data/lib/matrix_sdk/api.rb
CHANGED
@@ -19,7 +19,7 @@ module MatrixSdk
|
|
19
19
|
}.freeze
|
20
20
|
|
21
21
|
attr_accessor :access_token, :connection_address, :connection_port, :device_id, :autoretry, :global_headers
|
22
|
-
attr_reader :homeserver, :validate_certificate, :open_timeout, :read_timeout, :well_known, :proxy_uri
|
22
|
+
attr_reader :homeserver, :validate_certificate, :open_timeout, :read_timeout, :well_known, :proxy_uri, :threadsafe
|
23
23
|
|
24
24
|
ignore_inspect :access_token, :logger
|
25
25
|
|
@@ -39,7 +39,10 @@ module MatrixSdk
|
|
39
39
|
# @option params [Hash] :global_headers Additional headers to set for all requests
|
40
40
|
# @option params [Boolean] :skip_login Should the API skip logging in if the HS URL contains user information
|
41
41
|
# @option params [Boolean] :synapse (true) Is the API connecting to a Synapse instance
|
42
|
-
# @option params [
|
42
|
+
# @option params [Boolean,:multithread] :threadsafe (:multithread) Should the connection be threadsafe/mutexed - or
|
43
|
+
# safe for simultaneous multi-thread usage. Will default to +:multithread+ - a.k.a. per-thread HTTP connections
|
44
|
+
# and requests
|
45
|
+
# @note Using threadsafe +:multithread+ currently doesn't support connection re-use
|
43
46
|
def initialize(homeserver, **params)
|
44
47
|
@homeserver = homeserver
|
45
48
|
raise ArgumentError, 'Homeserver URL must be String or URI' unless @homeserver.is_a?(String) || @homeserver.is_a?(URI)
|
@@ -64,7 +67,8 @@ module MatrixSdk
|
|
64
67
|
@global_headers.merge!(params.fetch(:global_headers)) if params.key? :global_headers
|
65
68
|
@synapse = params.fetch(:synapse, true)
|
66
69
|
@http = nil
|
67
|
-
|
70
|
+
|
71
|
+
self.threadsafe = params.fetch(:threadsafe, :multithread)
|
68
72
|
|
69
73
|
([params.fetch(:protocols, [:CS])].flatten - protocols).each do |proto|
|
70
74
|
self.class.include MatrixSdk::Protocols.const_get(proto)
|
@@ -244,6 +248,17 @@ module MatrixSdk
|
|
244
248
|
@proxy_uri = proxy_uri
|
245
249
|
end
|
246
250
|
|
251
|
+
# @param [Boolean,:multithread] threadsafe What level of thread-safety the API should use
|
252
|
+
# @return [Boolean,:multithread]
|
253
|
+
def threadsafe=(threadsafe)
|
254
|
+
raise ArgumentError, 'Threadsafe must be either a boolean or :multithread' unless [true, false, :multithread].include? threadsafe
|
255
|
+
raise ArugmentError, 'JRuby only support :multithread/false for threadsafe' if RUBY_ENGINE == 'jruby' && threadsafe == true
|
256
|
+
|
257
|
+
@threadsafe = threadsafe
|
258
|
+
@http_lock = nil unless threadsafe == true
|
259
|
+
@threadsafe
|
260
|
+
end
|
261
|
+
|
247
262
|
# Perform a raw Matrix API request
|
248
263
|
#
|
249
264
|
# @example Simple API query
|
@@ -284,15 +299,23 @@ module MatrixSdk
|
|
284
299
|
print_http(req_obj, id: req_id)
|
285
300
|
response = duration = nil
|
286
301
|
|
287
|
-
|
302
|
+
loc_http = http
|
303
|
+
perform_request = proc do
|
288
304
|
dur_start = Time.now
|
289
|
-
response =
|
305
|
+
response = loc_http.request req_obj
|
290
306
|
dur_end = Time.now
|
291
307
|
duration = dur_end - dur_start
|
292
308
|
rescue EOFError
|
293
309
|
logger.error 'Socket closed unexpectedly'
|
294
310
|
raise
|
295
311
|
end
|
312
|
+
|
313
|
+
if @threadsafe == true
|
314
|
+
http_lock.synchronize { perform_request.call }
|
315
|
+
else
|
316
|
+
perform_request.call
|
317
|
+
loc_http.finish if @threadsafe == :multithread
|
318
|
+
end
|
296
319
|
print_http(response, duration: duration, id: req_id)
|
297
320
|
|
298
321
|
begin
|
@@ -395,18 +418,26 @@ module MatrixSdk
|
|
395
418
|
|
396
419
|
host = (@connection_address || homeserver.host)
|
397
420
|
port = (@connection_port || homeserver.port)
|
398
|
-
|
399
|
-
|
400
|
-
|
401
|
-
|
402
|
-
|
403
|
-
|
404
|
-
|
405
|
-
|
406
|
-
|
407
|
-
|
408
|
-
|
409
|
-
|
421
|
+
|
422
|
+
connection = @http unless @threadsafe == :multithread
|
423
|
+
connection ||= if proxy_uri
|
424
|
+
Net::HTTP.new(host, port, proxy_uri.host, proxy_uri.port, proxy_uri.user, proxy_uri.password)
|
425
|
+
else
|
426
|
+
Net::HTTP.new(host, port)
|
427
|
+
end
|
428
|
+
|
429
|
+
connection.open_timeout = open_timeout if open_timeout
|
430
|
+
connection.read_timeout = read_timeout if read_timeout
|
431
|
+
connection.use_ssl = homeserver.scheme == 'https'
|
432
|
+
connection.verify_mode = validate_certificate ? ::OpenSSL::SSL::VERIFY_PEER : ::OpenSSL::SSL::VERIFY_NONE
|
433
|
+
connection.start
|
434
|
+
@http = connection unless @threadsafe == :multithread
|
435
|
+
|
436
|
+
connection
|
437
|
+
end
|
438
|
+
|
439
|
+
def http_lock
|
440
|
+
@http_lock ||= Mutex.new if @threadsafe == true
|
410
441
|
end
|
411
442
|
end
|
412
443
|
end
|
data/lib/matrix_sdk/client.rb
CHANGED
@@ -395,15 +395,16 @@ module MatrixSdk
|
|
395
395
|
# @param only_canonical [Boolean] Only match alias against the canonical alias
|
396
396
|
# @return [Room] The found room
|
397
397
|
# @return [nil] If no room was found
|
398
|
-
def find_room(room_id_or_alias, only_canonical:
|
398
|
+
def find_room(room_id_or_alias, only_canonical: true)
|
399
399
|
room_id_or_alias = MXID.new(room_id_or_alias.to_s) unless room_id_or_alias.is_a? MXID
|
400
400
|
raise ArgumentError, 'Must be a room id or alias' unless room_id_or_alias.room?
|
401
401
|
|
402
402
|
return @rooms.fetch(room_id_or_alias.to_s, nil) if room_id_or_alias.room_id?
|
403
403
|
|
404
|
-
|
404
|
+
room = @rooms.values.find { |r| r.aliases.include? room_id_or_alias.to_s }
|
405
|
+
return room if only_canonical
|
405
406
|
|
406
|
-
@rooms.values.find { |r| r.aliases.include? room_id_or_alias.to_s }
|
407
|
+
room || @rooms.values.find { |r| r.aliases(canonical_only: false).include? room_id_or_alias.to_s }
|
407
408
|
end
|
408
409
|
|
409
410
|
# Get a User instance from a MXID
|
data/lib/matrix_sdk/mxid.rb
CHANGED
@@ -12,7 +12,7 @@ module MatrixSdk
|
|
12
12
|
|
13
13
|
# TODO: Community-as-a-Room / Profile-as-a-Room, in case they're going for room aliases
|
14
14
|
@sigil = identifier[0]
|
15
|
-
@localpart, @domain, @port = identifier[1
|
15
|
+
@localpart, @domain, @port = identifier[1..-1].split(':') # rubocop:disable Style/SlicingWithRange # Keep support for slightly older Rubies
|
16
16
|
@port = @port.to_i if @port
|
17
17
|
|
18
18
|
raise ArgumentError, 'Identifier is not a valid MXID' unless valid?
|
@@ -203,7 +203,7 @@ module MatrixSdk::Protocols::CS
|
|
203
203
|
data[:device_id] = device_id if device_id
|
204
204
|
|
205
205
|
request(:post, client_api_latest, '/login', body: data, query: query).tap do |resp|
|
206
|
-
@access_token = resp.
|
206
|
+
@access_token = resp.access_token if resp.key?(:access_token) && options[:store_token]
|
207
207
|
@device_id = resp.device_id if resp.key?(:device_id) && options[:store_device_id]
|
208
208
|
end
|
209
209
|
end
|
@@ -912,31 +912,23 @@ module MatrixSdk::Protocols::CS
|
|
912
912
|
send_state_event(room_id, 'm.room.avatar', content, **params)
|
913
913
|
end
|
914
914
|
|
915
|
-
# Gets a list of
|
915
|
+
# Gets a list of currently known aliases of a room
|
916
916
|
#
|
917
917
|
# @param [MXID,String] room_id The room ID to look up
|
918
|
-
# @param [Hash] params Extra options to provide to the request, see #get_room_state
|
919
918
|
# @return [Response] A response hash with the array :aliases
|
920
|
-
# @raise [
|
921
|
-
# @see
|
922
|
-
# @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
|
923
921
|
# The Matrix Spec, for more information about the event and data
|
924
922
|
# @example Looking up aliases for a room
|
925
923
|
# api.get_room_aliases('!QtykxKocfZaZOUrTwp:matrix.org')
|
926
|
-
# # MatrixSdk::MatrixNotFoundError: HTTP 404 (M_NOT_FOUND): Event not found.
|
927
|
-
# api.get_room_aliases('!QtykxKocfZaZOUrTwp:matrix.org', key: 'matrix.org')
|
928
924
|
# # => {:aliases=>["#matrix:matrix.org"]}
|
929
|
-
# api.get_room_aliases('!QtykxKocfZaZOUrTwp:matrix.org', key: 'kittenface.studio')
|
930
|
-
# # => {:aliases=>["#worlddominationhq:kittenface.studio"]}
|
931
|
-
# @example A way to find all aliases for a room
|
932
|
-
# api.get_room_state('!mjbDjyNsRXndKLkHIe:matrix.org')
|
933
|
-
# .select { |ch| ch[:type] == 'm.room.aliases' }
|
934
|
-
# .map { |ch| ch[:content][:aliases] }
|
935
|
-
# .flatten
|
936
|
-
# .compact
|
937
|
-
# # => ["#synapse:im.kabi.tk", "#synapse:matrix.org", "#synapse-community:matrix.org", "#synapse-ops:matrix.org", "#synops:matrix.org", ...
|
938
925
|
def get_room_aliases(room_id, **params)
|
939
|
-
|
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)
|
940
932
|
end
|
941
933
|
|
942
934
|
# Gets a list of pinned events in a room
|
@@ -60,9 +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
|
63
|
+
@http_lock&.lock
|
64
64
|
http.request req do |response|
|
65
|
-
@http_lock
|
65
|
+
@http_lock&.unlock
|
66
66
|
break unless ctx[:run]
|
67
67
|
|
68
68
|
print_http(response, body: false)
|
@@ -136,10 +136,11 @@ module MatrixSdk::Protocols::MSC
|
|
136
136
|
break
|
137
137
|
end
|
138
138
|
end
|
139
|
+
|
139
140
|
break unless ctx[:run]
|
140
141
|
end
|
141
|
-
|
142
|
-
@http_lock.unlock if @http_lock
|
142
|
+
ensure
|
143
|
+
@http_lock.unlock if @http_lock&.owned?
|
143
144
|
end
|
144
145
|
# rubocop:enable Metrics/BlockLength
|
145
146
|
|
data/lib/matrix_sdk/room.rb
CHANGED
@@ -31,9 +31,11 @@ module MatrixSdk
|
|
31
31
|
ignore_inspect :client, :events, :prev_batch, :logger, :tinycache_adapter
|
32
32
|
|
33
33
|
# Requires heavy lookups, so they're cached for an hour
|
34
|
-
cached :joined_members,
|
35
|
-
|
36
|
-
|
34
|
+
cached :joined_members, cache_level: :all, expires_in: 60 * 60
|
35
|
+
|
36
|
+
# Only cache unfiltered requests for aliases and members
|
37
|
+
cached :aliases, unless: proc { |args| args.any? }, cache_level: :all, expires_in: 60 * 60
|
38
|
+
cached :all_members, unless: proc { |args| args.any? }, cache_level: :all, expires_in: 60 * 60
|
37
39
|
|
38
40
|
# Much simpler to look up, and lighter data-wise, so the cache is wider
|
39
41
|
cached :canonical_alias, :name, :avatar_url, :topic, :guest_access, :join_rule, :power_levels, cache_level: :some, expires_in: 15 * 60
|
@@ -272,15 +274,14 @@ module MatrixSdk
|
|
272
274
|
|
273
275
|
# Gets the room aliases
|
274
276
|
#
|
277
|
+
# @param canonical_only [Boolean] Should the list of aliases only contain the canonical ones
|
275
278
|
# @return [Array[String]] The assigned room aliases
|
276
|
-
def aliases
|
277
|
-
client.api.
|
278
|
-
|
279
|
-
|
280
|
-
|
281
|
-
|
282
|
-
.flatten
|
283
|
-
.compact
|
279
|
+
def aliases(canonical_only: true)
|
280
|
+
canonical = client.api.get_room_state(id, 'm.room.canonical_alias') rescue {}
|
281
|
+
aliases = ([canonical[:alias]].compact + (canonical[:alt_aliases] || [])).uniq.sort
|
282
|
+
return aliases if canonical_only
|
283
|
+
|
284
|
+
(aliases + client.api.get_room_aliases(id).aliases).uniq.sort
|
284
285
|
end
|
285
286
|
|
286
287
|
#
|
@@ -904,16 +905,8 @@ module MatrixSdk
|
|
904
905
|
|
905
906
|
data = tinycache_adapter.read(:aliases) || []
|
906
907
|
data << canonical_alias
|
907
|
-
|
908
|
-
|
909
|
-
|
910
|
-
def handle_room_aliases(event)
|
911
|
-
tinycache_adapter.write(:aliases, []) unless tinycache_adapter.exist? :aliases
|
912
|
-
|
913
|
-
aliases = tinycache_adapter.read(:aliases) || []
|
914
|
-
aliases.concat(event.dig(*%i[content aliases]))
|
915
|
-
|
916
|
-
tinycache_adapter.write(:aliases, aliases)
|
908
|
+
data += event.dig(*%i[content alt_aliases]) || []
|
909
|
+
tinycache_adapter.write(:aliases, data.uniq.sort)
|
917
910
|
end
|
918
911
|
|
919
912
|
def room_handlers?
|
@@ -929,7 +922,6 @@ module MatrixSdk
|
|
929
922
|
end
|
930
923
|
|
931
924
|
INTERNAL_HANDLERS = {
|
932
|
-
'm.room.aliases' => :handle_room_aliases,
|
933
925
|
'm.room.canonical_alias' => :handle_room_canonical_alias,
|
934
926
|
'm.room.guest_access' => :handle_room_guest_access,
|
935
927
|
'm.room.join_rules' => :handle_room_join_rules,
|
@@ -6,12 +6,12 @@ module MatrixSdk::Rooms
|
|
6
6
|
|
7
7
|
def tree(suggested_only: nil, max_rooms: nil)
|
8
8
|
begin
|
9
|
-
data = client.api.request :get, :
|
9
|
+
data = client.api.request :get, :client_r0, "/rooms/#{id}/spaces", query: {
|
10
10
|
suggested_only: suggested_only,
|
11
11
|
max_rooms_per_space: max_rooms
|
12
12
|
}.compact
|
13
13
|
rescue MatrixRequestError
|
14
|
-
data = client.api.request :get, :
|
14
|
+
data = client.api.request :get, :client_unstable, "/org.matrix.msc2946/rooms/#{id}/spaces", query: {
|
15
15
|
suggested_only: suggested_only,
|
16
16
|
max_rooms_per_space: max_rooms
|
17
17
|
}.compact
|
data/lib/matrix_sdk/user.rb
CHANGED
@@ -132,7 +132,7 @@ module MatrixSdk
|
|
132
132
|
|
133
133
|
# Returns all the current device keys for the user, retrieving them if necessary
|
134
134
|
def device_keys
|
135
|
-
@device_keys ||= client.api.keys_query(device_keys: { id => [] }).yield_self do |resp|
|
135
|
+
@device_keys ||= client.api.keys_query(device_keys: { id => [] }).yield_self do |resp| # rubocop:disable Style/ObjectThen # Keep Ruby 2.5 support a little longer
|
136
136
|
resp.dig(:device_keys, id.to_sym)
|
137
137
|
end
|
138
138
|
end
|
@@ -1,5 +1,7 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'pp'
|
4
|
+
|
3
5
|
unless Object.respond_to? :yield_self
|
4
6
|
class Object
|
5
7
|
def yield_self
|
@@ -51,13 +53,20 @@ module MatrixSdk
|
|
51
53
|
|
52
54
|
def ignore_inspect(*symbols)
|
53
55
|
class_eval %*
|
54
|
-
|
55
|
-
|
56
|
-
|
56
|
+
include PP::ObjectMixin
|
57
|
+
|
58
|
+
def pretty_print_instance_variables
|
59
|
+
instance_variables
|
57
60
|
.reject { |f| %i[#{symbols.map { |s| "@#{s}" }.join ' '}].include? f }
|
58
|
-
.
|
61
|
+
.sort
|
59
62
|
end
|
60
|
-
|
63
|
+
|
64
|
+
def pretty_print(pp)
|
65
|
+
pp.pp_object(self)
|
66
|
+
end
|
67
|
+
|
68
|
+
alias inspect pretty_print_inspect
|
69
|
+
*, __FILE__, __LINE__ - 14
|
61
70
|
end
|
62
71
|
end
|
63
72
|
|
@@ -75,13 +75,25 @@ module MatrixSdk::Util
|
|
75
75
|
|
76
76
|
define_method(method_names[:with_cache]) do |*args|
|
77
77
|
tinycache_adapter.fetch(__send__(method_names[:cache_key], *args), expires_in: expires_in) do
|
78
|
-
|
78
|
+
named = args.delete_at(-1) if args.last.is_a? Hash
|
79
|
+
|
80
|
+
if named
|
81
|
+
__send__(method_names[:without_cache], *args, **named)
|
82
|
+
else
|
83
|
+
__send__(method_names[:without_cache], *args)
|
84
|
+
end
|
79
85
|
end
|
80
86
|
end
|
81
87
|
|
82
88
|
define_method(method_names[:without_cache]) do |*args|
|
83
89
|
orig = method(method_name).super_method
|
84
|
-
|
90
|
+
named = args.delete_at(-1) if args.last.is_a? Hash
|
91
|
+
|
92
|
+
if named
|
93
|
+
orig.call(*args, **named)
|
94
|
+
else
|
95
|
+
orig.call(*args)
|
96
|
+
end
|
85
97
|
end
|
86
98
|
|
87
99
|
define_method(method_names[:clear_cache]) do |*args|
|
data/lib/matrix_sdk/util/uri.rb
CHANGED
@@ -7,14 +7,20 @@ module URI
|
|
7
7
|
class MXC < Generic
|
8
8
|
def full_path
|
9
9
|
select(:host, :port, :path, :query, :fragment)
|
10
|
-
.
|
10
|
+
.compact
|
11
11
|
.join
|
12
12
|
end
|
13
13
|
end
|
14
14
|
|
15
|
-
|
15
|
+
# TODO: Use +register_scheme+ on Ruby >=3.1 and fall back to old behavior
|
16
|
+
# for older Rubies. May be removed at EOL of Ruby 3.0.
|
17
|
+
if respond_to? :register_scheme
|
18
|
+
register_scheme 'MXC', MXC
|
19
|
+
else
|
20
|
+
@@schemes['MXC'] = MXC
|
21
|
+
end
|
16
22
|
|
17
|
-
unless
|
23
|
+
unless scheme_list.key? 'MATRIX'
|
18
24
|
# A matrix: URI according to MSC2312
|
19
25
|
class MATRIX < Generic
|
20
26
|
attr_reader :authority, :action, :mxid, :mxid2, :via
|
@@ -84,6 +90,12 @@ module URI
|
|
84
90
|
end
|
85
91
|
end
|
86
92
|
|
87
|
-
|
93
|
+
# TODO: Use +register_scheme+ on Ruby >=3.1 and fall back to old behavior
|
94
|
+
# for older Rubies. May be removed at EOL of Ruby 3.0.
|
95
|
+
if respond_to? :register_scheme
|
96
|
+
register_scheme 'MATRIX', MATRIX
|
97
|
+
else
|
98
|
+
@@schemes['MATRIX'] = MATRIX
|
99
|
+
end
|
88
100
|
end
|
89
101
|
end
|
data/lib/matrix_sdk/version.rb
CHANGED
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.6.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: 2022-
|
11
|
+
date: 2022-07-15 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.
|
135
|
+
rubygems_version: 3.3.8
|
136
136
|
signing_key:
|
137
137
|
specification_version: 4
|
138
138
|
summary: SDK for applications using the Matrix protocol
|