matrix_sdk 0.0.4 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,33 @@
1
+ module MatrixSdk::Protocols::IS
2
+ def identity_status
3
+ request(:get, :identity_api_v1, '/')
4
+ end
5
+
6
+ def identity_get_pubkey(id)
7
+ id = ERB::Util.url_encode id.to_s
8
+
9
+ request(:get, :identity_api_v1, "/pubkey/#{id}")
10
+ end
11
+
12
+ def identity_pubkey_isvalid(key, ephemeral: false)
13
+ if ephemeral
14
+ request(:get, :identity_api_v1, '/pubkey/ephemeral/isvalid', query: { public_key: key })
15
+ else
16
+ request(:get, :identity_api_v1, '/pubkey/isvalid', query: { public_key: key })
17
+ end
18
+ end
19
+
20
+ def identity_pubkey_ephemeral_isvalid(key)
21
+ identity_pubkey_isvalid(key, ephemeral: true)
22
+ end
23
+
24
+ def identity_lookup(medium:, address:)
25
+ request(:get, :identity_api_v1, '/lookup', query: { medium: medium, address: address })
26
+ end
27
+
28
+ def identity_bulk_lookup(threepids)
29
+ request(:post, :identity_api_v1, '/bulk_lookup', body: { threepids: threepids })
30
+ end
31
+
32
+ # XXX
33
+ end
@@ -0,0 +1,12 @@
1
+ module MatrixSdk::Protocols::SS
2
+ # Gets the server version
3
+ def server_version
4
+ Response.new(self, request(:get, :federation_v1, '/version').server).tap do |resp|
5
+ resp.instance_eval <<-'CODE', __FILE__, __LINE__ + 1
6
+ def to_s
7
+ "#{name} #{version}"
8
+ end
9
+ CODE
10
+ end
11
+ end
12
+ end
@@ -3,6 +3,8 @@ require 'matrix_sdk'
3
3
  module MatrixSdk
4
4
  # A class for tracking the information about a room on Matrix
5
5
  class Room
6
+ include MatrixSdk::Logging
7
+
6
8
  # @!attribute [rw] canonical_alias
7
9
  # @return [String, nil] the canonical alias of the room
8
10
  # @!attribute [rw] event_history_limit
@@ -48,7 +50,7 @@ module MatrixSdk
48
50
  # An inspect method that skips a handful of instance variables to avoid
49
51
  # flooding the terminal with debug data.
50
52
  # @return [String] a regular inspect string without the data for some variables
51
- ignore_inspect :client, :members, :events, :prev_batch,
53
+ ignore_inspect :client, :members, :events, :prev_batch, :logger,
52
54
  :on_event, :on_state_event, :on_ephemeral_event
53
55
 
54
56
  alias room_id id
@@ -66,6 +68,7 @@ module MatrixSdk
66
68
  @guest_access = nil
67
69
  @members = []
68
70
  @events = []
71
+ @members_loaded = false
69
72
  @event_history_limit = 10
70
73
 
71
74
  @prev_batch = nil
@@ -77,10 +80,6 @@ module MatrixSdk
77
80
  logger.debug "Created room #{room_id}"
78
81
  end
79
82
 
80
- def logger
81
- @logger ||= Logging.logger[self]
82
- end
83
-
84
83
  #
85
84
  # State readers
86
85
  #
@@ -100,7 +99,7 @@ module MatrixSdk
100
99
 
101
100
  members = joined_members
102
101
  .reject { |m| m.user_id == client.mxid }
103
- .map(&:get_display_name)
102
+ .map(&:display_name)
104
103
 
105
104
  return members.first if members.one?
106
105
  return "#{members.first} and #{members.last}" if members.count == 2
@@ -111,13 +110,14 @@ module MatrixSdk
111
110
 
112
111
  # Populates and returns the #members array
113
112
  def joined_members
114
- return members unless members.empty?
113
+ return members if @members_loaded && !members.empty?
115
114
 
116
115
  client.api.get_room_members(id)[:chunk].each do |chunk|
117
116
  next unless chunk [:content][:membership] == 'join'
118
117
 
119
- ensure_member(User.new(client, chunk[:state_key], display_name: chunk[:content].fetch(:displayname)))
118
+ ensure_member(User.new(client, chunk[:state_key], display_name: chunk[:content].fetch(:displayname, nil)))
120
119
  end
120
+ @members_loaded = true
121
121
  members
122
122
  end
123
123
 
@@ -242,6 +242,7 @@ module MatrixSdk
242
242
  # @param reason [String,nil] the reason for the redaction
243
243
  def redact_message(event_id, reason = nil)
244
244
  client.api.redact_event(id, event_id, reason: reason)
245
+ true
245
246
  end
246
247
 
247
248
  # Backfills messages into the room history
@@ -256,6 +257,7 @@ module MatrixSdk
256
257
  events.each do |ev|
257
258
  put_event(ev)
258
259
  end
260
+ true
259
261
  end
260
262
 
261
263
  #
@@ -269,8 +271,6 @@ module MatrixSdk
269
271
  user_id = user_id.id if user_id.is_a? MatrixSdk::User
270
272
  client.api.invite_user(id, user_id)
271
273
  true
272
- rescue MatrixError
273
- false
274
274
  end
275
275
 
276
276
  # Kicks a user from the room
@@ -281,8 +281,6 @@ module MatrixSdk
281
281
  user_id = user_id.id if user_id.is_a? MatrixSdk::User
282
282
  client.api.kick_user(id, user_id, reason: reason)
283
283
  true
284
- rescue MatrixError
285
- false
286
284
  end
287
285
 
288
286
  # Bans a user from the room
@@ -293,8 +291,6 @@ module MatrixSdk
293
291
  user_id = user_id.id if user_id.is_a? MatrixSdk::User
294
292
  client.api.ban_user(id, user_id, reason: reason)
295
293
  true
296
- rescue MatrixError
297
- false
298
294
  end
299
295
 
300
296
  # Unbans a user from the room
@@ -304,8 +300,6 @@ module MatrixSdk
304
300
  user_id = user_id.id if user_id.is_a? MatrixSdk::User
305
301
  client.api.unban_user(id, user_id)
306
302
  true
307
- rescue MatrixError
308
- false
309
303
  end
310
304
 
311
305
  # Requests to be removed from the room
@@ -314,8 +308,6 @@ module MatrixSdk
314
308
  client.api.leave_room(id)
315
309
  client.rooms.delete id
316
310
  true
317
- rescue MatrixError
318
- false
319
311
  end
320
312
 
321
313
  # Retrieves a custom entry from the room-specific account data
@@ -330,6 +322,7 @@ module MatrixSdk
330
322
  # @param account_data [Hash] the data to store
331
323
  def set_account_data(type, account_data)
332
324
  client.api.set_room_account_data(client.mxid, id, type, account_data)
325
+ true
333
326
  end
334
327
 
335
328
  # Changes the room-specific user profile
@@ -347,6 +340,7 @@ module MatrixSdk
347
340
  data[:avatar_url] = params[:avatar_url] unless params[:avatar_url].nil?
348
341
 
349
342
  client.api.set_membership(id, client.mxid, 'join', params.fetch(:reason, 'Updating room profile information'), data)
343
+ true
350
344
  end
351
345
 
352
346
  def tags
@@ -369,10 +363,12 @@ module MatrixSdk
369
363
 
370
364
  def remove_tag(tag)
371
365
  client.api.remove_user_tag(client.mxid, id, tag)
366
+ true
372
367
  end
373
368
 
374
369
  def add_tag(tag, params = {})
375
370
  client.api.add_user_tag(client.mxid, id, tag, params)
371
+ true
376
372
  end
377
373
 
378
374
  #
@@ -382,8 +378,6 @@ module MatrixSdk
382
378
  def name=(name)
383
379
  client.api.set_room_name(id, name)
384
380
  @name = name
385
- rescue MatrixError
386
- nil
387
381
  end
388
382
 
389
383
  # Reloads the name of the room
@@ -393,15 +387,11 @@ module MatrixSdk
393
387
  changed = data[:name] != name
394
388
  @name = data[:name] if changed
395
389
  changed
396
- rescue MatrixError
397
- false
398
390
  end
399
391
 
400
392
  def topic=(topic)
401
393
  client.api.set_room_topic(id, topic)
402
394
  @topic = topic
403
- rescue MatrixError
404
- nil
405
395
  end
406
396
 
407
397
  # Reloads the topic of the room
@@ -411,8 +401,6 @@ module MatrixSdk
411
401
  changed = data[:topic] != topic
412
402
  @topic = data[:topic] if changed
413
403
  changed
414
- rescue MatrixError
415
- false
416
404
  end
417
405
 
418
406
  # Add an alias to the room
@@ -421,8 +409,6 @@ module MatrixSdk
421
409
  client.api.set_room_alias(id, room_alias)
422
410
  @aliases << room_alias
423
411
  true
424
- rescue MatrixError
425
- false
426
412
  end
427
413
 
428
414
  # Reloads the list of aliases by an API query
@@ -440,8 +426,6 @@ module MatrixSdk
440
426
  changed = new_aliases != aliases
441
427
  @aliases = new_aliases if changed
442
428
  changed
443
- rescue MatrixError
444
- false
445
429
  end
446
430
 
447
431
  def invite_only=(invite_only)
@@ -452,8 +436,6 @@ module MatrixSdk
452
436
  def join_rule=(join_rule)
453
437
  client.api.set_join_rule(id, join_rule)
454
438
  @join_rule = join_rule
455
- rescue MatrixError
456
- nil
457
439
  end
458
440
 
459
441
  def allow_guests=(allow_guests)
@@ -464,8 +446,6 @@ module MatrixSdk
464
446
  def guest_access=(guest_access)
465
447
  client.api.set_guest_access(id, guest_access)
466
448
  @guest_access = guest_access
467
- rescue MatrixError
468
- nil
469
449
  end
470
450
 
471
451
  # Modifies the power levels of the room
@@ -486,8 +466,6 @@ module MatrixSdk
486
466
 
487
467
  client.api.set_power_levels(id, data)
488
468
  true
489
- rescue MatrixError
490
- false
491
469
  end
492
470
 
493
471
  # Modifies the required power levels for actions in the room
@@ -508,8 +486,7 @@ module MatrixSdk
508
486
  end
509
487
 
510
488
  client.api.set_power.levels(id, data)
511
- rescue MatrixError
512
- false
489
+ true
513
490
  end
514
491
 
515
492
  private
@@ -39,8 +39,6 @@ module MatrixSdk
39
39
  def display_name=(name)
40
40
  client.api.set_display_name(id, name)
41
41
  @display_name = name
42
- rescue MatrixError
43
- nil
44
42
  end
45
43
 
46
44
  # Gets a friendly name of the user
@@ -58,8 +56,12 @@ module MatrixSdk
58
56
  def avatar_url=(url)
59
57
  client.api.set_avatar_url(id, url)
60
58
  @avatar_url = url
61
- rescue MatrixError
62
- nil
59
+ end
60
+
61
+ def device_keys
62
+ @device_keys ||= client.api.keys_query(device_keys: { id => [] }).yield_self do |resp|
63
+ resp[:device_keys][id.to_sym]
64
+ end
63
65
  end
64
66
  end
65
67
  end
@@ -1,3 +1,3 @@
1
1
  module MatrixSdk
2
- VERSION = '0.0.4'.freeze
2
+ VERSION = '0.1.0'.freeze
3
3
  end
data/matrix-sdk.gemspec CHANGED
@@ -6,9 +6,9 @@ Gem::Specification.new do |spec|
6
6
  spec.authors = ['Alexander Olofsson']
7
7
  spec.email = ['ace@haxalot.com']
8
8
 
9
- spec.summary = ''
10
- spec.description = ''
11
- spec.homepage = 'https://github.com/ananace/ruby_matrix_sdk'
9
+ spec.summary = 'SDK for applications using the Matrix protocol'
10
+ spec.description = spec.summary
11
+ spec.homepage = 'https://github.com/ananace/ruby-matrix-sdk'
12
12
  spec.license = 'MIT'
13
13
 
14
14
  spec.files = `git ls-files -z`.split("\x0").reject do |f|
@@ -20,6 +20,7 @@ Gem::Specification.new do |spec|
20
20
 
21
21
  spec.add_development_dependency 'mocha'
22
22
  spec.add_development_dependency 'rake'
23
+ spec.add_development_dependency 'simplecov'
23
24
  spec.add_development_dependency 'test-unit'
24
25
 
25
26
  # TODO: Put this in a better location
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: 0.0.4
4
+ version: 0.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-02-20 00:00:00.000000000 Z
11
+ date: 2019-05-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: logging
@@ -52,6 +52,20 @@ dependencies:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
54
  version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: simplecov
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: test-unit
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -80,7 +94,7 @@ dependencies:
80
94
  - - ">="
81
95
  - !ruby/object:Gem::Version
82
96
  version: '0'
83
- description: ''
97
+ description: SDK for applications using the Matrix protocol
84
98
  email:
85
99
  - ace@haxalot.com
86
100
  executables: []
@@ -99,16 +113,21 @@ files:
99
113
  - examples/simple_client.rb
100
114
  - lib/matrix_sdk.rb
101
115
  - lib/matrix_sdk/api.rb
116
+ - lib/matrix_sdk/application_service.rb
102
117
  - lib/matrix_sdk/client.rb
103
118
  - lib/matrix_sdk/errors.rb
104
119
  - lib/matrix_sdk/extensions.rb
105
120
  - lib/matrix_sdk/mxid.rb
121
+ - lib/matrix_sdk/protocols/as.rb
122
+ - lib/matrix_sdk/protocols/cs.rb
123
+ - lib/matrix_sdk/protocols/is.rb
124
+ - lib/matrix_sdk/protocols/ss.rb
106
125
  - lib/matrix_sdk/response.rb
107
126
  - lib/matrix_sdk/room.rb
108
127
  - lib/matrix_sdk/user.rb
109
128
  - lib/matrix_sdk/version.rb
110
129
  - matrix-sdk.gemspec
111
- homepage: https://github.com/ananace/ruby_matrix_sdk
130
+ homepage: https://github.com/ananace/ruby-matrix-sdk
112
131
  licenses:
113
132
  - MIT
114
133
  metadata: {}
@@ -127,9 +146,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
127
146
  - !ruby/object:Gem::Version
128
147
  version: '0'
129
148
  requirements: []
130
- rubyforge_project:
131
- rubygems_version: 2.7.7
149
+ rubygems_version: 3.0.3
132
150
  signing_key:
133
151
  specification_version: 4
134
- summary: ''
152
+ summary: SDK for applications using the Matrix protocol
135
153
  test_files: []