selfsdk 0.0.161 → 0.0.166

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 6c7562e018dee44a3bb70e3f52dcc12dc2e5a5824d68e3d85e9810e1b48afb06
4
- data.tar.gz: 831bc7d29fabf7e32dbde64b6fa6d9b8b8466c8e3b203d024d45d4697d96b407
3
+ metadata.gz: 8c85c6fa67915d806be363e234ac87b2bdffc6d331a48a273f48f737bb476fa6
4
+ data.tar.gz: fadf3e8a7df24cb74b71fc0e695f647b94510afb4092e58ca86f9aa6e0d2deaa
5
5
  SHA512:
6
- metadata.gz: 159b597aded28279b54b8a1b1e70dd54f04603b012a0487aa7dd95db0412e8d063e5a3b0af5acfb8711f41918d33cca6038704e136fe6fb6a1ed50773df1990d
7
- data.tar.gz: c3c42b8c818150bff70d43b821bf73087925a81535abceabb45f293f3ded2c8b916d4b8f7e4d34da7cde9ba4916414d943c09212358727221800e9d369e09d0f
6
+ metadata.gz: dfc07013f91c98b460991df709e4526fe86ee37d6f26818d87fe3c29c10c99ec69401d1c51a1f7ab80f1a7bad1248ce81cb7091fa469d584863d962e6c39effa
7
+ data.tar.gz: 7f3455f82fd7a2dec5579dd67d4a43a80ffc3fb24b35f90f7ab82bffd86d264e8760154decc7119ffc9c9fc6976669f2804f0f8222c7f52a6a0e4ebe55496cc5
@@ -9,7 +9,7 @@ module SelfSDK
9
9
  module Messages
10
10
  class AuthenticationMessage < Base
11
11
 
12
- def parse(input, original=nil)
12
+ def parse(input, envelope=nil)
13
13
  @input = input
14
14
  @typ = @typ
15
15
  @payload = get_payload input
@@ -21,6 +21,10 @@ module SelfSDK
21
21
  @expires = ::Time.parse(payload[:exp])
22
22
  @issued = ::Time.parse(payload[:iat])
23
23
  @status = payload[:status]
24
+ if envelope
25
+ issuer = envelope.sender.split(":")
26
+ @from_device = issuer.last
27
+ end
24
28
  end
25
29
  end
26
30
  end
data/lib/messages/base.rb CHANGED
@@ -27,10 +27,12 @@ module SelfSDK
27
27
  res
28
28
  end
29
29
 
30
- def send_message
30
+ def send_message(device_id = nil)
31
31
  check_credits!
32
+ dds = devices
33
+ dds = [device_id] if device_id
32
34
  res = []
33
- devices.each do |d|
35
+ dds.each do |d|
34
36
  res << @messaging.send_message(proto(d))
35
37
  SelfSDK.logger.info "asynchronously requested information to #{@to}:#{d}"
36
38
  end
@@ -39,17 +39,23 @@ module SelfSDK
39
39
  end
40
40
  end
41
41
 
42
- def parse(input)
42
+ def parse(input, envelope=nil)
43
43
  @input = input
44
44
  @typ = MSG_TYPE
45
45
  @payload = get_payload input
46
46
  @id = @payload[:cid]
47
47
  @from = @payload[:iss]
48
48
  @to = @payload[:sub]
49
+ @audience = payload[:aud]
49
50
  @expires = @payload[:exp]
50
51
  @description = @payload.include?(:description) ? @payload[:description] : nil
51
52
  @facts = @payload[:facts]
52
53
  @options = @payload[:options]
54
+
55
+ if envelope
56
+ issuer = envelope.sender.split(":")
57
+ @from_device = issuer.last
58
+ end
53
59
  end
54
60
 
55
61
  def build_response
@@ -59,8 +65,6 @@ module SelfSDK
59
65
  m.to = @from
60
66
  m.sub = @to
61
67
  m.audience = @from
62
- m.to_device = @from_device
63
- m.from_device = @to_device
64
68
  m.facts = @facts
65
69
  m
66
70
  end
@@ -13,7 +13,7 @@ module SelfSDK
13
13
 
14
14
  attr_accessor :facts, :audience
15
15
 
16
- def parse(input)
16
+ def parse(input, envelope=nil)
17
17
  @input = input
18
18
  @typ = MSG_TYPE
19
19
  @payload = get_payload input
@@ -35,6 +35,10 @@ module SelfSDK
35
35
  SelfSDK.logger.info e.message
36
36
  end
37
37
  end
38
+ if envelope
39
+ issuer = envelope.sender.split(":")
40
+ @from_device = issuer.last
41
+ end
38
42
  end
39
43
 
40
44
  def fact(name)
@@ -81,8 +85,7 @@ module SelfSDK
81
85
  protected
82
86
 
83
87
  def proto(to_device)
84
-
85
-
88
+ @to_device = to_device
86
89
  Msgproto::Message.new(
87
90
  type: Msgproto::MsgType::MSG,
88
91
  id: SecureRandom.uuid,
@@ -10,11 +10,13 @@ require_relative "authentication_req"
10
10
  module SelfSDK
11
11
  module Messages
12
12
  def self.parse(input, messaging, original=nil)
13
+ envelope = nil
13
14
  body = if input.is_a? String
14
- input
15
+ input
15
16
  else
16
- issuer = input.sender.split(":")
17
- messaging.encryption_client.decrypt(input.ciphertext, issuer.first, issuer.last)
17
+ envelope = input
18
+ issuer = input.sender.split(":")
19
+ messaging.encryption_client.decrypt(input.ciphertext, issuer.first, issuer.last)
18
20
  end
19
21
 
20
22
  jwt = JSON.parse(body, symbolize_names: true)
@@ -23,16 +25,16 @@ module SelfSDK
23
25
  case payload[:typ]
24
26
  when "identities.facts.query.req"
25
27
  m = FactRequest.new(messaging)
26
- m.parse(body)
28
+ m.parse(body, envelope)
27
29
  when "identities.facts.query.resp"
28
30
  m = FactResponse.new(messaging)
29
- m.parse(body)
31
+ m.parse(body, envelope)
30
32
  when "identities.authenticate.resp"
31
33
  m = AuthenticationResp.new(messaging)
32
- m.parse(body)
34
+ m.parse(body, envelope)
33
35
  when "identities.authenticate.req"
34
36
  m = AuthenticationReq.new(messaging)
35
- m.parse(body)
37
+ m.parse(body, envelope)
36
38
  else
37
39
  raise StandardError.new("Invalid message type.")
38
40
  end
data/lib/messaging.rb CHANGED
@@ -286,6 +286,14 @@ module SelfSDK
286
286
  @acks["authentication"][:waiting_cond].wait_while { @acks["authentication"][:waiting] }
287
287
  @acks.delete("authentication")
288
288
  end
289
+ # In case this does not succeed start the process again.
290
+ if @acks.include? 'authentication'
291
+ if @acks['authentication'][:waiting]
292
+ close
293
+ start_connection
294
+ end
295
+ @acks.delete("authentication")
296
+ end
289
297
  end
290
298
 
291
299
  # Cleans expired messages
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: selfsdk
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.161
4
+ version: 0.0.166
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aldgate Ventures