selfsdk 0.0.190 → 0.0.193
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/chat/file_object.rb +18 -4
- data/lib/crypto.rb +1 -1
- data/lib/services/docs.rb +3 -2
- data/lib/services/facts.rb +4 -0
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ce09c8f8b8cb4daafea4f4d94f2d1110fd376e8811a9e30f2703a8add593d5ab
|
4
|
+
data.tar.gz: 44d649bce5e7f0d0789954fdde6bbc47896b474a95af8eb536913f1bf5ef8712
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 26aad938c2d5c2e0cc2328eb9639f2e15b46805de03f97456cead55d005a21942f13078db7ce75ad6507d134777040e1698a17cab8c9caf075d52407f48222b3
|
7
|
+
data.tar.gz: 39ebfd842ec43b0b425b843dc9cfbf557dff14d5aa411ebd0fb8645ab7f09e81fcb5d71dd134154d9b0d80c6b891416309adf4d2ef285f8f9203cbbd80c834dc
|
data/lib/chat/file_object.rb
CHANGED
@@ -6,14 +6,14 @@ require 'open-uri'
|
|
6
6
|
module SelfSDK
|
7
7
|
module Chat
|
8
8
|
class FileObject
|
9
|
-
attr_accessor :link, :mime, :content, :key, :nonce, :ciphertext
|
9
|
+
attr_accessor :name, :link, :mime, :content, :key, :nonce, :ciphertext
|
10
10
|
|
11
11
|
def initialize(token, url)
|
12
12
|
@token = token
|
13
13
|
@url = url
|
14
14
|
end
|
15
15
|
|
16
|
-
def build_from_data(name, data, mime)
|
16
|
+
def build_from_data(name, data, mime, opts = {})
|
17
17
|
@key = SelfCrypto::Util.aead_xchacha20poly1305_ietf_keygen
|
18
18
|
@nonce = SelfCrypto::Util.aead_xchacha20poly1305_ietf_nonce
|
19
19
|
@content = data
|
@@ -25,7 +25,8 @@ module SelfSDK
|
|
25
25
|
|
26
26
|
# Upload
|
27
27
|
remote_object = upload(ciphertext)
|
28
|
-
|
28
|
+
public_url = opts[:public_url] || @url
|
29
|
+
@link = "#{public_url}/v1/objects/#{remote_object["id"]}"
|
29
30
|
@expires = remote_object["expires"]
|
30
31
|
|
31
32
|
self
|
@@ -34,7 +35,20 @@ module SelfSDK
|
|
34
35
|
# Incoming objects
|
35
36
|
def build_from_object(input)
|
36
37
|
# Download from CDN
|
37
|
-
ciphertext =
|
38
|
+
ciphertext = ""
|
39
|
+
5.times do
|
40
|
+
begin
|
41
|
+
ciphertext = URI.open(input[:link], "Authorization" => "Bearer #{@token}").read
|
42
|
+
break
|
43
|
+
rescue
|
44
|
+
sleep 1
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
if ciphertext.empty?
|
49
|
+
SelfSDK.logger.warn "unable to process incoming object"
|
50
|
+
return
|
51
|
+
end
|
38
52
|
|
39
53
|
@content = ciphertext
|
40
54
|
@key = nil
|
data/lib/crypto.rb
CHANGED
@@ -151,7 +151,7 @@ module SelfSDK
|
|
151
151
|
# if there is no session, create one
|
152
152
|
# if there is an existing session and we are sent a one time key message, check
|
153
153
|
# if it belongs to this current session and create a new inbound session if it doesn't
|
154
|
-
if session_with_bob.nil? || m.instance_of?(SelfCrypto::PreKeyMessage)
|
154
|
+
if session_with_bob.nil? || m.instance_of?(SelfCrypto::PreKeyMessage) && !session_with_bob.will_receive?(m)
|
155
155
|
# 7b-ii) use the initial message to create a session for bob or carol
|
156
156
|
session_with_bob = @account.inbound_session(m)
|
157
157
|
|
data/lib/services/docs.rb
CHANGED
@@ -28,7 +28,7 @@ module SelfSDK
|
|
28
28
|
# @param objects [Array] array of objects to be signed. provide an empty array if
|
29
29
|
# you just want the body to be signed.
|
30
30
|
# @yield [request] Invokes the given block when a response is received.
|
31
|
-
def request_signature(recipient, body, objects, &block)
|
31
|
+
def request_signature(recipient, body, objects, opts = {}, &block)
|
32
32
|
jti = SecureRandom.uuid
|
33
33
|
req = {
|
34
34
|
jti: jti,
|
@@ -43,7 +43,8 @@ module SelfSDK
|
|
43
43
|
req[:objects] << SelfSDK::Chat::FileObject.new(auth_token, @self_url).build_from_data(
|
44
44
|
o[:name],
|
45
45
|
o[:data],
|
46
|
-
o[:mime]
|
46
|
+
o[:mime],
|
47
|
+
opts
|
47
48
|
).to_payload
|
48
49
|
end
|
49
50
|
|
data/lib/services/facts.rb
CHANGED