matrix_sdk 1.0.1 → 1.1.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 +12 -0
- data/README.md +18 -2
- data/lib/matrix_sdk/api.rb +4 -4
- data/lib/matrix_sdk/client.rb +46 -3
- data/lib/matrix_sdk/errors.rb +22 -0
- data/lib/matrix_sdk/protocols/cs.rb +69 -2
- data/lib/matrix_sdk/room.rb +56 -11
- 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: 5b922104b5ab91c432c502117ed7f8f6a4c25121a8c407658427c28a9a9f47a3
|
4
|
+
data.tar.gz: 99bc5b83c327b3ac326ce4515f77bd9801c260797036daaf2cb4192e08e74ec1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cd9020a5792c251aca178339ecd836495b07e414e7121711be4af78aef5fdd45d2c106fb59f9bead22767825dd694d0a43429c3db7c394bd90d9b48ddb9517c2
|
7
|
+
data.tar.gz: d0a15efe764f0b6b9d0fd0ec11f50385da455a1fa3e3ad92f092cfd728f377726f3d84e4d961554519b724e6dc6e402113767050281e55bcee6e9328604091d2
|
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,15 @@
|
|
1
|
+
## v1.1.0 - 2019-06-04
|
2
|
+
|
3
|
+
- The create_room method in the client abstraction now automatically stores the created room
|
4
|
+
- Adds more CS API endpoints, exposed as #get_joined_rooms, #get_public_rooms, and #username_available?
|
5
|
+
- Adds a method to the client abstraction to reload all joined rooms
|
6
|
+
- Adds a method to the client abstraction to get a list of all public rooms
|
7
|
+
- Adds avatar tracking to rooms in the client abstraction
|
8
|
+
- Adds lazy loading of join rules and guest access for rooms in the client abstraction
|
9
|
+
- Adds granular error classes like MatrixSdk::MatrixNotFoundError to make error handling easier
|
10
|
+
- Improves the CS API endpoint for room state retrieval
|
11
|
+
- Fixes an issue in the client abstraction where it would fail to load aliases if multiple HSes have applied aliases to a room
|
12
|
+
|
1
13
|
## v1.0.1 - 2019-05-24
|
2
14
|
|
3
15
|
- Fixes an error in the room creation code
|
data/README.md
CHANGED
@@ -27,8 +27,8 @@ api.request :get, :federation_v1, '/version'
|
|
27
27
|
# Client wrapper
|
28
28
|
require 'matrix_sdk'
|
29
29
|
|
30
|
-
client = MatrixSdk::Client.new 'https://
|
31
|
-
client.login
|
30
|
+
client = MatrixSdk::Client.new 'https://example.com'
|
31
|
+
client.login 'username', 'notarealpass' #, no_sync: true
|
32
32
|
|
33
33
|
client.rooms.count
|
34
34
|
# => 5
|
@@ -40,6 +40,22 @@ hq.send_text "This is an example message - don't actually do this ;)"
|
|
40
40
|
# => {:event_id=>"$123457890abcdef:matrix.org"}
|
41
41
|
```
|
42
42
|
|
43
|
+
```ruby
|
44
|
+
# Client wrapper
|
45
|
+
require 'matrix_sdk'
|
46
|
+
|
47
|
+
client = MatrixSdk::Client.new 'https://example.com'
|
48
|
+
client.api.access_token = 'thisisnotarealtoken'
|
49
|
+
|
50
|
+
# Doesn't automatically trigger a sync when setting the token directly
|
51
|
+
client.rooms.count
|
52
|
+
# => 0
|
53
|
+
|
54
|
+
client.sync
|
55
|
+
client.rooms.count
|
56
|
+
# => 5
|
57
|
+
```
|
58
|
+
|
43
59
|
## Contributing
|
44
60
|
|
45
61
|
Bug reports and pull requests are welcome on GitHub at https://github.com/ananace/ruby-matrix-sdk
|
data/lib/matrix_sdk/api.rb
CHANGED
@@ -41,7 +41,7 @@ module MatrixSdk
|
|
41
41
|
# @option params [Hash] :global_headers Additional headers to set for all requests
|
42
42
|
# @option params [Boolean] :skip_login Should the API skip logging in if the HS URL contains user information
|
43
43
|
# @option params [Hash] :well_known The .well-known object that the server was discovered through, should not be set manually
|
44
|
-
def initialize(homeserver, params
|
44
|
+
def initialize(homeserver, **params)
|
45
45
|
@homeserver = homeserver
|
46
46
|
raise ArgumentError, 'Homeserver URL must be String or URI' unless @homeserver.is_a?(String) || @homeserver.is_a?(URI)
|
47
47
|
|
@@ -178,7 +178,7 @@ module MatrixSdk
|
|
178
178
|
@homeserver = hs_info
|
179
179
|
end
|
180
180
|
|
181
|
-
def request(method, api, path, options
|
181
|
+
def request(method, api, path, **options)
|
182
182
|
url = homeserver.dup.tap do |u|
|
183
183
|
u.path = api_to_path(api) + path
|
184
184
|
u.query = [u.query, URI.encode_www_form(options.fetch(:query))].flatten.compact.join('&') if options[:query]
|
@@ -212,7 +212,7 @@ module MatrixSdk
|
|
212
212
|
data = JSON.parse(response.body, symbolize_names: true) rescue nil
|
213
213
|
|
214
214
|
if response.is_a? Net::HTTPTooManyRequests
|
215
|
-
raise MatrixRequestError.
|
215
|
+
raise MatrixRequestError.new_by_code(data, response.code) unless autoretry
|
216
216
|
|
217
217
|
failures += 1
|
218
218
|
waittime = data[:retry_after_ms] || data[:error][:retry_after_ms] || @backoff_time
|
@@ -221,7 +221,7 @@ module MatrixSdk
|
|
221
221
|
end
|
222
222
|
|
223
223
|
return MatrixSdk::Response.new self, data if response.is_a? Net::HTTPSuccess
|
224
|
-
raise MatrixRequestError.
|
224
|
+
raise MatrixRequestError.new_by_code(data, response.code) if data
|
225
225
|
|
226
226
|
raise MatrixConnectionError.class_by_code(response.code), response
|
227
227
|
end
|
data/lib/matrix_sdk/client.rb
CHANGED
@@ -89,10 +89,52 @@ module MatrixSdk
|
|
89
89
|
alias user_id mxid
|
90
90
|
alias user_id= mxid=
|
91
91
|
|
92
|
+
def public_rooms
|
93
|
+
rooms = []
|
94
|
+
since = nil
|
95
|
+
loop do
|
96
|
+
data = api.get_public_rooms since: since
|
97
|
+
|
98
|
+
data[:chunk].each do |chunk|
|
99
|
+
rooms << Room.new(self, chunk[:room_id],
|
100
|
+
name: chunk[:name], topic: chunk[:topic], aliases: chunk[:aliases],
|
101
|
+
canonical_alias: chunk[:canonical_alias], avatar_url: chunk[:avatar_url],
|
102
|
+
join_rule: :public, world_readable: chunk[:world_readable]).tap do |r|
|
103
|
+
r.instance_variable_set :@guest_access, chunk[:guest_can_join] ? :can_join : :forbidden
|
104
|
+
end
|
105
|
+
end
|
106
|
+
|
107
|
+
break if data[:next_batch].nil?
|
108
|
+
|
109
|
+
since = data.next_batch
|
110
|
+
end
|
111
|
+
|
112
|
+
rooms
|
113
|
+
end
|
114
|
+
|
92
115
|
def rooms
|
116
|
+
if @rooms.empty? && cache != :none
|
117
|
+
api.get_joined_rooms.joined_rooms.each do |id|
|
118
|
+
ensure_room(id)
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
93
122
|
@rooms.values
|
94
123
|
end
|
95
124
|
|
125
|
+
def reload_rooms!
|
126
|
+
return true if cache == :none
|
127
|
+
|
128
|
+
@rooms.clear
|
129
|
+
api.get_joined_rooms.joined_rooms.each do |id|
|
130
|
+
r = ensure_room(id)
|
131
|
+
r.reload!
|
132
|
+
end
|
133
|
+
|
134
|
+
true
|
135
|
+
end
|
136
|
+
alias refresh_rooms! reload_rooms!
|
137
|
+
|
96
138
|
def register_as_guest
|
97
139
|
data = api.register(kind: :guest)
|
98
140
|
post_authentication(data)
|
@@ -158,8 +200,9 @@ module MatrixSdk
|
|
158
200
|
!(mxid.nil? || @api.access_token.nil?)
|
159
201
|
end
|
160
202
|
|
161
|
-
def create_room(room_alias = nil, params
|
162
|
-
api.create_room(params.merge(room_alias: room_alias))
|
203
|
+
def create_room(room_alias = nil, **params)
|
204
|
+
data = api.create_room(params.merge(room_alias: room_alias))
|
205
|
+
ensure_room(data.room_id)
|
163
206
|
end
|
164
207
|
|
165
208
|
def join_room(room_id_or_alias)
|
@@ -197,7 +240,7 @@ module MatrixSdk
|
|
197
240
|
raise MatrixUnexpectedResponseError, 'Upload succeeded, but no media URI returned'
|
198
241
|
end
|
199
242
|
|
200
|
-
def start_listener_thread(params
|
243
|
+
def start_listener_thread(**params)
|
201
244
|
@should_listen = true
|
202
245
|
thread = Thread.new { listen_forever(params) }
|
203
246
|
@sync_thread = thread
|
data/lib/matrix_sdk/errors.rb
CHANGED
@@ -10,6 +10,22 @@ module MatrixSdk
|
|
10
10
|
attr_reader :code, :httpstatus, :message
|
11
11
|
alias error message
|
12
12
|
|
13
|
+
def self.class_by_code(code)
|
14
|
+
code = code.to_i
|
15
|
+
|
16
|
+
return MatrixNotAuthorizedError if code == 401
|
17
|
+
return MatrixForbiddenError if code == 403
|
18
|
+
return MatrixNotFoundError if code == 404
|
19
|
+
return MatrixConflictError if code == 409
|
20
|
+
return MatrixTooManyRequestsError if code == 429
|
21
|
+
|
22
|
+
MatrixRequestError
|
23
|
+
end
|
24
|
+
|
25
|
+
def self.new_by_code(data, code)
|
26
|
+
class_by_code(code).new(data, code)
|
27
|
+
end
|
28
|
+
|
13
29
|
def initialize(error, status)
|
14
30
|
@code = error[:errcode]
|
15
31
|
@httpstatus = status
|
@@ -23,6 +39,12 @@ module MatrixSdk
|
|
23
39
|
end
|
24
40
|
end
|
25
41
|
|
42
|
+
class MatrixNotAuthorizedError < MatrixRequestError; end
|
43
|
+
class MatrixForbiddenError < MatrixRequestError; end
|
44
|
+
class MatrixNotFoundError < MatrixRequestError; end
|
45
|
+
class MatrixConflictError < MatrixRequestError; end
|
46
|
+
class MatrixTooManyRequestsError < MatrixRequestError; end
|
47
|
+
|
26
48
|
# An error raised when errors occur in the connection layer
|
27
49
|
class MatrixConnectionError < MatrixError
|
28
50
|
def self.class_by_code(code)
|
@@ -82,6 +82,19 @@ module MatrixSdk::Protocols::CS
|
|
82
82
|
end
|
83
83
|
end
|
84
84
|
|
85
|
+
# Checks if a given username is available and valid for registering
|
86
|
+
#
|
87
|
+
# @example Verifying a username
|
88
|
+
# api.username_available?('example')
|
89
|
+
# # => { available: true }
|
90
|
+
#
|
91
|
+
# @param username [String] The username to check
|
92
|
+
# @return [Response]
|
93
|
+
# @see https://matrix.org/docs/spec/client_server/latest.html#get-matrix-client-r0-register-available
|
94
|
+
def username_available?(username)
|
95
|
+
request(:get, :client_r0, '/register/available', query: { username: username })
|
96
|
+
end
|
97
|
+
|
85
98
|
# Logs in using the client API /login endpoint, and optionally stores the resulting access for API usage
|
86
99
|
#
|
87
100
|
# @example Logging in with username and password
|
@@ -138,6 +151,50 @@ module MatrixSdk::Protocols::CS
|
|
138
151
|
request(:post, :client_r0, '/logout', query: query)
|
139
152
|
end
|
140
153
|
|
154
|
+
# Gets the list of rooms joined by the current user
|
155
|
+
#
|
156
|
+
# @return [Response] An array of room IDs under the key :joined_rooms
|
157
|
+
# @see https://matrix.org/docs/spec/client_server/latest.html#get-matrix-client-r0-joined-rooms
|
158
|
+
def get_joined_rooms(**params)
|
159
|
+
query = {}
|
160
|
+
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
161
|
+
|
162
|
+
request(:get, :client_r0, '/joined_rooms', query: query)
|
163
|
+
end
|
164
|
+
|
165
|
+
# Gets the list of public rooms on a Matrix server
|
166
|
+
#
|
167
|
+
# @param limit [Integer] Limits the number of results returned
|
168
|
+
# @param since [String] A pagination token received from an earlier call
|
169
|
+
# @param server [String] The Matrix server to request public rooms from
|
170
|
+
# @return [Response] An array of public rooms in the :chunk key, along with
|
171
|
+
# :next_batch, :prev_batch, and :total_room_count_estimate
|
172
|
+
# for pagination
|
173
|
+
# @see https://matrix.org/docs/spec/client_server/latest.html#get-matrix-client-r0-publicrooms
|
174
|
+
# https://matrix.org/docs/spec/client_server/latest.html#post-matrix-client-r0-publicrooms
|
175
|
+
def get_public_rooms(server: nil, **params)
|
176
|
+
query = {
|
177
|
+
server: server
|
178
|
+
}.compact
|
179
|
+
body = nil
|
180
|
+
method = :get
|
181
|
+
|
182
|
+
if !params[:filter].nil? || !params[:include_all_networks].nil? || !params[:third_party_instance_id].nil?
|
183
|
+
body = {
|
184
|
+
limit: params[:limit],
|
185
|
+
since: params[:since],
|
186
|
+
filter: params[:filter],
|
187
|
+
include_all_networks: params[:include_all_networks],
|
188
|
+
third_party_instance_id: params[:third_party_instance_id]
|
189
|
+
}.merge(params).compact
|
190
|
+
method = :post
|
191
|
+
else
|
192
|
+
query = query.merge(params).compact
|
193
|
+
end
|
194
|
+
|
195
|
+
request(method, :client_r0, '/publicRooms', query: query, body: body)
|
196
|
+
end
|
197
|
+
|
141
198
|
# Creates a new room
|
142
199
|
# @param params [Hash] The room creation details
|
143
200
|
# @option params [Symbol] :visibility (:public) The room visibility
|
@@ -418,14 +475,15 @@ module MatrixSdk::Protocols::CS
|
|
418
475
|
# @return [Response] A response hash with the contents of the state event
|
419
476
|
# @see https://matrix.org/docs/spec/client_server/r0.3.0.html#get-matrix-client-r0-rooms-roomid-state-eventtype
|
420
477
|
# The Matrix Spec, for more information about the call and response
|
421
|
-
def get_room_state(room_id, state_type, **params)
|
478
|
+
def get_room_state(room_id, state_type = nil, key: nil, **params)
|
422
479
|
query = {}
|
423
480
|
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
424
481
|
|
425
482
|
room_id = ERB::Util.url_encode room_id.to_s
|
426
483
|
state_type = ERB::Util.url_encode state_type.to_s
|
484
|
+
key = ERB::Util.url_encode key.to_s
|
427
485
|
|
428
|
-
request(:get, :client_r0, "/rooms/#{room_id}/state/#{state_type}", query: query)
|
486
|
+
request(:get, :client_r0, "/rooms/#{room_id}/state#{state_type.empty? ? nil : "/#{state_type}"}#{key.empty? ? nil : "/#{key}"}", query: query)
|
429
487
|
end
|
430
488
|
|
431
489
|
# Gets the display name of a room
|
@@ -707,6 +765,15 @@ module MatrixSdk::Protocols::CS
|
|
707
765
|
request(:put, :client_r0, "/profile/#{user_id}/avatar_url", body: content, query: query)
|
708
766
|
end
|
709
767
|
|
768
|
+
def get_profile(user_id, **params)
|
769
|
+
query = {}
|
770
|
+
query[:user_id] = params.delete(:user_id) if protocol?(:AS) && params.key?(:user_id)
|
771
|
+
|
772
|
+
user_id = ERB::Util.url_encode user_id.to_s
|
773
|
+
|
774
|
+
request(:get, :client_r0, "/profile/#{user_id}", query: query)
|
775
|
+
end
|
776
|
+
|
710
777
|
def get_download_url(mxcurl, **_params)
|
711
778
|
mxcurl = URI.parse(mxcurl.to_s) unless mxcurl.is_a? URI
|
712
779
|
raise 'Not a mxc:// URL' unless mxcurl.is_a? URI::MATRIX
|
data/lib/matrix_sdk/room.rb
CHANGED
@@ -39,7 +39,7 @@ module MatrixSdk
|
|
39
39
|
# @return [Array(Object)] the last +event_history_limit+ events to arrive in the room
|
40
40
|
# @see https://matrix.org/docs/spec/client_server/r0.3.0.html#get-matrix-client-r0-sync
|
41
41
|
# The timeline events are what will end up in here
|
42
|
-
attr_reader :id, :client, :name, :topic, :aliases, :
|
42
|
+
attr_reader :id, :client, :name, :topic, :aliases, :members, :events
|
43
43
|
|
44
44
|
# @!attribute [r] on_event
|
45
45
|
# @return [EventHandlerArray] The list of event handlers for all events
|
@@ -68,10 +68,12 @@ module MatrixSdk
|
|
68
68
|
@aliases = []
|
69
69
|
@join_rule = nil
|
70
70
|
@guest_access = nil
|
71
|
+
@world_readable = nil
|
71
72
|
@members = []
|
72
73
|
@events = []
|
73
74
|
@members_loaded = false
|
74
75
|
@event_history_limit = 10
|
76
|
+
@avatar_url = nil
|
75
77
|
|
76
78
|
@prev_batch = nil
|
77
79
|
|
@@ -123,6 +125,22 @@ module MatrixSdk
|
|
123
125
|
members
|
124
126
|
end
|
125
127
|
|
128
|
+
# Gets the avatar url of the room - if any
|
129
|
+
def avatar_url
|
130
|
+
@avatar_url ||= client.api.get_room_state(id, 'm.room.avatar').url
|
131
|
+
rescue MatrixNotFoundError
|
132
|
+
# No avatar has been set
|
133
|
+
nil
|
134
|
+
end
|
135
|
+
|
136
|
+
def guest_access
|
137
|
+
@guest_access ||= client.api.get_room_state(id, 'm.room.guest_access').guest_access.to_sym
|
138
|
+
end
|
139
|
+
|
140
|
+
def join_rule
|
141
|
+
@join_rule ||= client.api.get_room_state(id, 'm.room.join_rules').join_rule.to_sym
|
142
|
+
end
|
143
|
+
|
126
144
|
# Checks if +guest_access+ is set to +:can_join+
|
127
145
|
def guest_access?
|
128
146
|
guest_access == :can_join
|
@@ -328,20 +346,19 @@ module MatrixSdk
|
|
328
346
|
end
|
329
347
|
|
330
348
|
# Changes the room-specific user profile
|
331
|
-
# @param
|
332
|
-
# @
|
333
|
-
# @option params [String,URI] :avatar_url the new avatar URL to use in the room
|
349
|
+
# @param display_name [String] the new display name to use in the room
|
350
|
+
# @param avatar_url [String,URI] the new avatar URL to use in the room
|
334
351
|
# @note the avatar URL should be a mxc:// URI
|
335
|
-
def set_user_profile(
|
336
|
-
return nil unless
|
352
|
+
def set_user_profile(display_name: nil, avatar_url: nil, reason: nil)
|
353
|
+
return nil unless display_name || avatar_url
|
337
354
|
|
338
355
|
data = client.api.get_membership(id, client.mxid)
|
339
356
|
raise "Can't set profile if you haven't joined the room" unless data[:membership] == 'join'
|
340
357
|
|
341
|
-
data[:displayname] =
|
342
|
-
data[:avatar_url] =
|
358
|
+
data[:displayname] = display_name unless display_name.nil?
|
359
|
+
data[:avatar_url] = avatar_url unless avatar_url.nil?
|
343
360
|
|
344
|
-
client.api.set_membership(id, client.mxid, 'join',
|
361
|
+
client.api.set_membership(id, client.mxid, 'join', reason || 'Updating room profile information', data)
|
345
362
|
true
|
346
363
|
end
|
347
364
|
|
@@ -377,6 +394,14 @@ module MatrixSdk
|
|
377
394
|
# State updates
|
378
395
|
#
|
379
396
|
|
397
|
+
def reload!
|
398
|
+
reload_name!
|
399
|
+
reload_topic!
|
400
|
+
reload_aliases!
|
401
|
+
true
|
402
|
+
end
|
403
|
+
alias refresh! reload!
|
404
|
+
|
380
405
|
def name=(name)
|
381
406
|
client.api.set_room_name(id, name)
|
382
407
|
@name = name
|
@@ -389,7 +414,10 @@ module MatrixSdk
|
|
389
414
|
changed = data[:name] != name
|
390
415
|
@name = data[:name] if changed
|
391
416
|
changed
|
417
|
+
rescue MatrixNotFoundError
|
418
|
+
nil
|
392
419
|
end
|
420
|
+
alias refresh_name! reload_name!
|
393
421
|
|
394
422
|
def topic=(topic)
|
395
423
|
client.api.set_room_topic(id, topic)
|
@@ -403,7 +431,10 @@ module MatrixSdk
|
|
403
431
|
changed = data[:topic] != topic
|
404
432
|
@topic = data[:topic] if changed
|
405
433
|
changed
|
434
|
+
rescue MatrixNotFoundError
|
435
|
+
nil
|
406
436
|
end
|
437
|
+
alias refresh_topic! reload_topic!
|
407
438
|
|
408
439
|
# Add an alias to the room
|
409
440
|
# @return [Boolean] if the addition was successful or not
|
@@ -419,16 +450,19 @@ module MatrixSdk
|
|
419
450
|
# alias list updates.
|
420
451
|
def reload_aliases!
|
421
452
|
data = client.api.get_room_state(id)
|
422
|
-
new_aliases = data.select { |chunk| chunk.key?(:content) && chunk[:content].key?(:aliases) }
|
453
|
+
new_aliases = data.select { |chunk| chunk[:type] == 'm.room.aliases' && chunk.key?(:content) && chunk[:content].key?(:aliases) }
|
423
454
|
.map { |chunk| chunk[:content][:aliases] }
|
424
455
|
.flatten
|
425
|
-
.
|
456
|
+
.compact
|
426
457
|
return false if new_aliases.nil?
|
427
458
|
|
428
459
|
changed = new_aliases != aliases
|
429
460
|
@aliases = new_aliases if changed
|
430
461
|
changed
|
462
|
+
rescue MatrixNotFoundError
|
463
|
+
nil
|
431
464
|
end
|
465
|
+
alias refresh_aliases! reload_aliases!
|
432
466
|
|
433
467
|
def invite_only=(invite_only)
|
434
468
|
self.join_rule = invite_only ? :invite : :public
|
@@ -450,6 +484,17 @@ module MatrixSdk
|
|
450
484
|
@guest_access = guest_access
|
451
485
|
end
|
452
486
|
|
487
|
+
def avatar_url=(avatar_url)
|
488
|
+
avatar_url = URI(avatar_url) unless avatar_url.is_a? URI
|
489
|
+
raise ArgumentError, 'Must be a valid MXC URL' unless avatar_url.is_a? URI::MATRIX
|
490
|
+
|
491
|
+
content = {
|
492
|
+
url: avatar_url
|
493
|
+
}
|
494
|
+
client.api.send_state_event(id, 'm.room.avatar', content)
|
495
|
+
@avatar_url = avatar_url
|
496
|
+
end
|
497
|
+
|
453
498
|
# Modifies the power levels of the room
|
454
499
|
# @param users [Hash] the user-specific power levels to set or remove
|
455
500
|
# @param users_default [Hash] the default user power levels to set
|
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: 1.0
|
4
|
+
version: 1.1.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: 2019-
|
11
|
+
date: 2019-06-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: logging
|
@@ -146,7 +146,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
146
146
|
- !ruby/object:Gem::Version
|
147
147
|
version: '0'
|
148
148
|
requirements: []
|
149
|
-
rubygems_version: 3.0.
|
149
|
+
rubygems_version: 3.0.1
|
150
150
|
signing_key:
|
151
151
|
specification_version: 4
|
152
152
|
summary: SDK for applications using the Matrix protocol
|