selfsdk 0.0.182 → 0.0.184

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f69744dc023bc671a461138870259c77060a8631d447abe9e4da89df57fa2c19
4
- data.tar.gz: 0a906d47e3b30c43dab5f96ff58452fbb9280a91768516cdb318336598901823
3
+ metadata.gz: 2c16f1734a708b0ebd37ca4fa0cea0e48db09344d4efb0654e5b4df6a37fd2d4
4
+ data.tar.gz: 32313fa1c28a57370c43d7100bdacc06bad28f0722ba0589a63c24bd0327bfd2
5
5
  SHA512:
6
- metadata.gz: 10feb47142b359f87b428719b5e5916ce7d3f173ca73be6ec7670149979ef2985850dbf9b2043cba6f847c5022031b6b45885c3c6930ef103d6303cfd8830524
7
- data.tar.gz: bfe025909daadde71071c161acaa389145deea760543aa328c5bd3c4d8da04e88da79918cde1f836d28232f50fe0f7837ca96fb08b04a5cf2addcc2ea7add8ed
6
+ metadata.gz: 9a015baa1ed364efcc422af5de6a54f87cbb953cdb45de7f397aa8cd2273b99c8ce4f6fbba0fc62f0ef803f38edf8155fbb1e9e14042b4f4ff76b391147da614
7
+ data.tar.gz: dfec1973db212e016774292d57bda452727cadd201ecdb80ab0f507a97ff3df244887ffde06704a618de63e0d101c75b7e8c879ff983654892d9496a50db7889
@@ -34,6 +34,7 @@ module SelfSDK
34
34
  @options = opts.fetch(:options, false)
35
35
  @description = opts.include?(:description) ? opts[:description] : nil
36
36
  @exp_timeout = opts.fetch(:exp_timeout, DEFAULT_EXP_TIMEOUT)
37
+ @allowed_for = opts.fetch(:allowed_for, nil)
37
38
 
38
39
  @intermediary = if opts.include?(:intermediary)
39
40
  opts[:intermediary]
@@ -89,6 +90,7 @@ module SelfSDK
89
90
  }
90
91
  b[:options] = @options unless (@options.nil? || @options == false)
91
92
  b[:description] = @description unless (@description.nil? || @description.empty?)
93
+ b[:allowed_until] = (SelfSDK::Time.now + @allowed_for).strftime('%FT%TZ') unless @allowed_for.nil?
92
94
  b
93
95
  end
94
96
 
data/lib/messaging.rb CHANGED
@@ -92,6 +92,11 @@ module SelfSDK
92
92
  send_message m
93
93
  end
94
94
 
95
+ def session?(identifier, device)
96
+ path = @encryption_client.session_path(identifier, device)
97
+ File.file?(path)
98
+ end
99
+
95
100
  # Send custom mmessage
96
101
  #
97
102
  # @param recipient [string] selfID to be requested
data/lib/selfsdk.rb CHANGED
@@ -85,7 +85,7 @@ module SelfSDK
85
85
 
86
86
  # Provides access to SelfSDK::Services::Chat service
87
87
  def chat
88
- @chat ||= SelfSDK::Services::Chat.new(messaging, @client)
88
+ @chat ||= SelfSDK::Services::Chat.new(messaging, identity)
89
89
  end
90
90
 
91
91
  def app_id
data/lib/services/chat.rb CHANGED
@@ -14,7 +14,9 @@ module SelfSDK
14
14
  def initialize(messaging, client)
15
15
  @messaging = messaging
16
16
  @client = client
17
- @app_id = @client.jwt.id
17
+ @app_id = @messaging.client.client.jwt.id
18
+ @auth_token = @messaging.client.client.jwt.auth_token
19
+ @self_url = @messaging.client.client.self_url
18
20
  end
19
21
 
20
22
  # Sends a message to a list of recipients.
@@ -32,7 +34,7 @@ module SelfSDK
32
34
  payload[:rid] = opts[:rid] if opts.key? :rid
33
35
  payload[:objects] = opts[:objects] if opts.key? :objects
34
36
 
35
- m = SelfSDK::Chat::Message.new(self, recipients, payload, @messaging.client.jwt.auth_token, @client.self_url)
37
+ m = SelfSDK::Chat::Message.new(self, recipients, payload, @auth_token, @self_url)
36
38
  _req = send(m.recipients, m.payload)
37
39
 
38
40
  m
@@ -41,8 +43,7 @@ module SelfSDK
41
43
  # Subscribes to an incoming chat message
42
44
  def on_message(opts = {}, &block)
43
45
  @messaging.subscribe :chat_message do |msg|
44
- puts "(#{msg.payload[:iss]}, #{msg.payload[:jti]})"
45
- cm = SelfSDK::Chat::Message.new(self, msg.payload[:aud], msg.payload, @messaging.client.jwt.auth_token, @client.self_url)
46
+ cm = SelfSDK::Chat::Message.new(self, msg.payload[:aud], msg.payload, @auth_token, @self_url)
46
47
 
47
48
  cm.mark_as_delivered unless opts[:mark_as_delivered] == false
48
49
  cm.mark_as_read if opts[:mark_as_read] == true
@@ -127,7 +128,7 @@ module SelfSDK
127
128
  members: members }
128
129
 
129
130
  if opts.key? :data
130
- obj = SelfSDK::Chat::FileObject.new(@messaging.client.jwt.auth_token, @client.self_url)
131
+ obj = SelfSDK::Chat::FileObject.new(@auth_token, @self_url)
131
132
  obj_payload = obj.build_from_data("", opts[:data], opts[:mime]).to_payload
132
133
  obj_payload.delete(:name)
133
134
  payload.merge! obj_payload
@@ -142,6 +143,12 @@ module SelfSDK
142
143
  # @param gid [string] group id.
143
144
  # @param members [array] list of group members.
144
145
  def join(gid, members)
146
+ # Allow incoming connections from the given members
147
+
148
+ # Create missing sessions with group members.
149
+ create_missing_sessions(members)
150
+
151
+ # Send joining confirmation.
145
152
  send(members, typ: 'chat.join', gid: gid, aud: gid)
146
153
  end
147
154
 
@@ -173,6 +180,31 @@ module SelfSDK
173
180
  end
174
181
  m
175
182
  end
183
+
184
+ # Group invites may come with members of the group we haven't set up a session
185
+ # previously, for those identitiese need to establish a session, but only if
186
+ # our identity appears before the others in the list members.
187
+ def create_missing_sessions(members)
188
+ return if members.empty?
189
+
190
+ posterior_members = false
191
+ requests = []
192
+
193
+ members.each do |m|
194
+ if posterior_members
195
+ @client.devices(m).each do |d|
196
+ continue unless @messaging.client.session?(m, d)
197
+
198
+ requests << @messaging.send("#{m}:#{d}", {
199
+ typ: 'sessions.create',
200
+ aud: m
201
+ })
202
+ end
203
+ end
204
+
205
+ posterior_members = true if m == @app_id
206
+ end
207
+ end
176
208
  end
177
209
  end
178
210
  end
@@ -40,6 +40,7 @@ module SelfSDK
40
40
  # @param [Hash] opts the options to authenticate.
41
41
  # @option opts [String] :cid The unique identifier of the authentication request.
42
42
  # @option opts [Integer] :exp_timeout timeout in seconds to expire the request.
43
+ # @option opts [Integer] :allowed_for number of seconds for enabling recurrent requests.
43
44
  # @return [Object] SelfSDK:::Messages::FactRequest
44
45
  def request(selfid, facts, opts = {}, &block)
45
46
  SelfSDK.logger.info "authenticating #{selfid}"
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.182
4
+ version: 0.0.184
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aldgate Ventures