yoti 1.6.2 → 1.6.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/ISSUE_TEMPLATE.md +17 -0
- data/lib/yoti/activity_details.rb +1 -0
- data/lib/yoti/version.rb +1 -1
- metadata +3 -7
- data/lib/yoti/sandbox.rb +0 -4
- data/lib/yoti/sandbox/anchor.rb +0 -49
- data/lib/yoti/sandbox/attribute.rb +0 -52
- data/lib/yoti/sandbox/profile.rb +0 -171
- data/lib/yoti/sandbox/sandbox_client.rb +0 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 296612e32508787e11d3c6f9404434b9d9575284008ae7d60df4a20f83526f6f
|
4
|
+
data.tar.gz: 4e0e6a0c0ea6a297399df4a9937ae3e6cd82da95f67d5a70b8cc7db0665e5c50
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fc8a50eab70a1b29ba480e7df303144d56b4edb46b48124292dbfb98de9167659eee80b2d38e0c633c709151953252cb888dad5f2114c721eed8871915b3f0b2
|
7
|
+
data.tar.gz: 2c8dcc5342813067af5fb6980ef0acb8c5c8f2981c23fbf4311261a46034f852ba35b1c028a6cfed33c5fda52d0b193cb857e145cbafa4b342e0377e0ff2effb
|
@@ -0,0 +1,17 @@
|
|
1
|
+
---
|
2
|
+
name: Custom issue template
|
3
|
+
about: " There's a better way to get help!"
|
4
|
+
title: ''
|
5
|
+
labels: ''
|
6
|
+
assignees: ''
|
7
|
+
|
8
|
+
---
|
9
|
+
|
10
|
+
#
|
11
|
+
# Wait ✋
|
12
|
+
#
|
13
|
+
# There's a better way to get help!
|
14
|
+
#
|
15
|
+
# Send your questions or issues to sdksupport@yoti.com
|
16
|
+
#
|
17
|
+
#
|
data/lib/yoti/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: yoti
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.6.
|
4
|
+
version: 1.6.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sebastian Zaremba
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-04-06 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -208,6 +208,7 @@ executables: []
|
|
208
208
|
extensions: []
|
209
209
|
extra_rdoc_files: []
|
210
210
|
files:
|
211
|
+
- ".github/ISSUE_TEMPLATE.md"
|
211
212
|
- ".gitignore"
|
212
213
|
- CONTRIBUTING.md
|
213
214
|
- Gemfile
|
@@ -261,11 +262,6 @@ files:
|
|
261
262
|
- lib/yoti/protobuf/sharepubapi/ExtraData_pb.rb
|
262
263
|
- lib/yoti/protobuf/sharepubapi/IssuingAttributes_pb.rb
|
263
264
|
- lib/yoti/protobuf/sharepubapi/ThirdPartyAttribute_pb.rb
|
264
|
-
- lib/yoti/sandbox.rb
|
265
|
-
- lib/yoti/sandbox/anchor.rb
|
266
|
-
- lib/yoti/sandbox/attribute.rb
|
267
|
-
- lib/yoti/sandbox/profile.rb
|
268
|
-
- lib/yoti/sandbox/sandbox_client.rb
|
269
265
|
- lib/yoti/share/attribute_issuance_details.rb
|
270
266
|
- lib/yoti/share/extra_data.rb
|
271
267
|
- lib/yoti/ssl.rb
|
data/lib/yoti/sandbox.rb
DELETED
data/lib/yoti/sandbox/anchor.rb
DELETED
@@ -1,49 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sandbox
|
4
|
-
# Anchor describes an anchor on a Sandbox Attribute
|
5
|
-
class Anchor
|
6
|
-
attr_reader :type
|
7
|
-
attr_reader :value
|
8
|
-
attr_reader :sub_type
|
9
|
-
attr_reader :timestamp
|
10
|
-
|
11
|
-
def initialize(type:, value:, sub_type: '', timestamp: Time.now)
|
12
|
-
@type = type
|
13
|
-
@value = value
|
14
|
-
@sub_type = sub_type
|
15
|
-
@timestamp = timestamp
|
16
|
-
end
|
17
|
-
|
18
|
-
def as_json(*_args)
|
19
|
-
{
|
20
|
-
type: @type,
|
21
|
-
value: @value,
|
22
|
-
sub_type: @sub_type,
|
23
|
-
timestamp: @timestamp.to_i
|
24
|
-
}
|
25
|
-
end
|
26
|
-
|
27
|
-
def to_json(*args)
|
28
|
-
as_json.to_json(*args)
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.source(value, sub_type: '', timestamp: Time.now)
|
32
|
-
Anchor.new(
|
33
|
-
type: 'SOURCE',
|
34
|
-
value: value,
|
35
|
-
sub_type: sub_type,
|
36
|
-
timestamp: timestamp
|
37
|
-
)
|
38
|
-
end
|
39
|
-
|
40
|
-
def self.verifier(value, sub_type: '', timestamp: Time.now)
|
41
|
-
Anchor.new(
|
42
|
-
type: 'VERIFIER',
|
43
|
-
value: value,
|
44
|
-
sub_type: sub_type,
|
45
|
-
timestamp: timestamp
|
46
|
-
)
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
@@ -1,52 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sandbox
|
4
|
-
# Attribute describes an attribute on a sandbox profile
|
5
|
-
class Attribute
|
6
|
-
attr_accessor :name
|
7
|
-
attr_accessor :value
|
8
|
-
attr_accessor :derivation
|
9
|
-
attr_accessor :optional
|
10
|
-
attr_reader :anchors
|
11
|
-
|
12
|
-
def initialize(
|
13
|
-
name: '',
|
14
|
-
value: '',
|
15
|
-
derivation: '',
|
16
|
-
optional: false,
|
17
|
-
anchors: []
|
18
|
-
)
|
19
|
-
@name = name
|
20
|
-
@value = value
|
21
|
-
@derivation = derivation
|
22
|
-
@optional = optional
|
23
|
-
@anchors = anchors
|
24
|
-
end
|
25
|
-
|
26
|
-
def as_json(*_args)
|
27
|
-
{
|
28
|
-
name: name,
|
29
|
-
value: value,
|
30
|
-
derivation: derivation,
|
31
|
-
optional: optional,
|
32
|
-
anchors: anchors
|
33
|
-
}
|
34
|
-
end
|
35
|
-
|
36
|
-
def with_anchor(anchor)
|
37
|
-
@anchors.push anchor
|
38
|
-
self
|
39
|
-
end
|
40
|
-
end
|
41
|
-
|
42
|
-
# Helper functions for building derivation strings
|
43
|
-
module Derivation
|
44
|
-
def self.age_over(age)
|
45
|
-
"age_over:#{age}"
|
46
|
-
end
|
47
|
-
|
48
|
-
def self.age_under(age)
|
49
|
-
"age_under:#{age}"
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
data/lib/yoti/sandbox/profile.rb
DELETED
@@ -1,171 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'yoti/data_type/attribute'
|
4
|
-
|
5
|
-
require 'base64'
|
6
|
-
|
7
|
-
require_relative 'attribute'
|
8
|
-
|
9
|
-
module Sandbox
|
10
|
-
# Builds a user profile on the sandbox instance
|
11
|
-
class Profile
|
12
|
-
attr_reader :remember_me_id
|
13
|
-
attr_reader :attributes
|
14
|
-
|
15
|
-
def as_json(*_args)
|
16
|
-
{
|
17
|
-
remember_me_id: remember_me_id,
|
18
|
-
profile_attributes: attributes.map(&:as_json)
|
19
|
-
}
|
20
|
-
end
|
21
|
-
|
22
|
-
def to_json(*_args)
|
23
|
-
as_json.to_json
|
24
|
-
end
|
25
|
-
|
26
|
-
def initialize
|
27
|
-
@remember_me_id = ''
|
28
|
-
@attributes = []
|
29
|
-
end
|
30
|
-
|
31
|
-
def with_remember_me_id(id)
|
32
|
-
@remember_me_id = id
|
33
|
-
self
|
34
|
-
end
|
35
|
-
|
36
|
-
def with_attribute(
|
37
|
-
name:,
|
38
|
-
value:,
|
39
|
-
derivation: '',
|
40
|
-
optional: false,
|
41
|
-
anchors: []
|
42
|
-
)
|
43
|
-
@attributes.push Sandbox::Attribute.new(
|
44
|
-
name: name,
|
45
|
-
value: value,
|
46
|
-
derivation: derivation,
|
47
|
-
optional: optional,
|
48
|
-
anchors: anchors
|
49
|
-
)
|
50
|
-
self
|
51
|
-
end
|
52
|
-
|
53
|
-
def with_given_names(value, optional: false, anchors: [])
|
54
|
-
with_attribute(
|
55
|
-
name: Yoti::Attribute::GIVEN_NAMES,
|
56
|
-
value: value,
|
57
|
-
optional: optional,
|
58
|
-
anchors: anchors
|
59
|
-
)
|
60
|
-
end
|
61
|
-
|
62
|
-
def with_family_name(value, optional: false, anchors: [])
|
63
|
-
with_attribute(
|
64
|
-
name: Yoti::Attribute::FAMILY_NAME,
|
65
|
-
value: value,
|
66
|
-
optional: optional,
|
67
|
-
anchors: anchors
|
68
|
-
)
|
69
|
-
end
|
70
|
-
|
71
|
-
def with_full_name(value, optional: false, anchors: [])
|
72
|
-
with_attribute(
|
73
|
-
name: Yoti::Attribute::FULL_NAME,
|
74
|
-
value: value,
|
75
|
-
optional: optional,
|
76
|
-
anchors: anchors
|
77
|
-
)
|
78
|
-
end
|
79
|
-
|
80
|
-
def with_date_of_birth(date, optional: false, anchors: [])
|
81
|
-
with_attribute(
|
82
|
-
name: Yoti::Attribute::DATE_OF_BIRTH,
|
83
|
-
value: date.to_s,
|
84
|
-
optional: optional,
|
85
|
-
anchors: anchors
|
86
|
-
)
|
87
|
-
end
|
88
|
-
|
89
|
-
def with_age_verification(dob:, derivation:, optional: false, anchors: [])
|
90
|
-
with_attribute(
|
91
|
-
name: Yoti::Attribute::DATE_OF_BIRTH,
|
92
|
-
value: dob.to_s,
|
93
|
-
derivation: derivation,
|
94
|
-
optional: optional,
|
95
|
-
anchors: anchors
|
96
|
-
)
|
97
|
-
end
|
98
|
-
|
99
|
-
def with_gender(value, optional: false, anchors: [])
|
100
|
-
with_attribute(
|
101
|
-
name: Yoti::Attribute::GENDER,
|
102
|
-
value: value,
|
103
|
-
optional: optional,
|
104
|
-
anchors: anchors
|
105
|
-
)
|
106
|
-
end
|
107
|
-
|
108
|
-
def with_phone_number(value, optional: false, anchors: [])
|
109
|
-
with_attribute(
|
110
|
-
name: Yoti::Attribute::PHONE_NUMBER,
|
111
|
-
value: value,
|
112
|
-
optional: optional,
|
113
|
-
anchors: anchors
|
114
|
-
)
|
115
|
-
end
|
116
|
-
|
117
|
-
def with_nationality(value, optional: false, anchors: [])
|
118
|
-
with_attribute(
|
119
|
-
name: Yoti::Attribute::NATIONALITY,
|
120
|
-
value: value,
|
121
|
-
optional: optional,
|
122
|
-
anchors: anchors
|
123
|
-
)
|
124
|
-
end
|
125
|
-
|
126
|
-
def with_postal_address(value, optional: false, anchors: [])
|
127
|
-
with_attribute(
|
128
|
-
name: Yoti::Attribute::POSTAL_ADDRESS,
|
129
|
-
value: value,
|
130
|
-
optional: optional,
|
131
|
-
anchors: anchors
|
132
|
-
)
|
133
|
-
end
|
134
|
-
|
135
|
-
def with_structured_postal_address(data, optional: false, anchors: [])
|
136
|
-
with_attribute(
|
137
|
-
name: Yoti::Attribute::STRUCTURED_POSTAL_ADDRESS,
|
138
|
-
value: data.to_json,
|
139
|
-
optional: optional,
|
140
|
-
anchors: anchors
|
141
|
-
)
|
142
|
-
end
|
143
|
-
|
144
|
-
def with_selfie(data, optional: false, anchors: [])
|
145
|
-
with_attribute(
|
146
|
-
name: Yoti::Attribute::SELFIE,
|
147
|
-
value: Base64.strict_encode64(data),
|
148
|
-
optional: optional,
|
149
|
-
anchors: anchors
|
150
|
-
)
|
151
|
-
end
|
152
|
-
|
153
|
-
def with_email_address(value, optional: false, anchors: [])
|
154
|
-
with_attribute(
|
155
|
-
name: Yoti::Attribute::EMAIL_ADDRESS,
|
156
|
-
value: value,
|
157
|
-
optional: optional,
|
158
|
-
anchors: anchors
|
159
|
-
)
|
160
|
-
end
|
161
|
-
|
162
|
-
def with_document_details(value, optional: false, anchors: [])
|
163
|
-
with_attribute(
|
164
|
-
name: Yoti::Attribute::DOCUMENT_DETAILS,
|
165
|
-
value: value,
|
166
|
-
optional: optional,
|
167
|
-
anchors: anchors
|
168
|
-
)
|
169
|
-
end
|
170
|
-
end
|
171
|
-
end
|
@@ -1,40 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Sandbox
|
4
|
-
# Client is responsible for setting up test data in the sandbox instance
|
5
|
-
class Client
|
6
|
-
attr_accessor :base_url
|
7
|
-
|
8
|
-
def initialize(base_url:)
|
9
|
-
@base_url = base_url
|
10
|
-
end
|
11
|
-
|
12
|
-
def setup_sharing_profile(profile)
|
13
|
-
endpoint = "/apps/#{Yoti.configuration.client_sdk_id}/tokens?\
|
14
|
-
nonce=#{SecureRandom.uuid}×tamp=#{Time.now.to_i}"
|
15
|
-
uri = URI(
|
16
|
-
"#{@base_url}/#{endpoint}"
|
17
|
-
)
|
18
|
-
|
19
|
-
response = Net::HTTP.start(
|
20
|
-
uri.hostname,
|
21
|
-
uri.port,
|
22
|
-
use_ssl: true
|
23
|
-
) do |http|
|
24
|
-
unsigned = Net::HTTP::Post.new uri
|
25
|
-
unsigned.body = profile.to_json
|
26
|
-
signed_request = Yoti::SignedRequest.new(
|
27
|
-
unsigned,
|
28
|
-
endpoint,
|
29
|
-
profile
|
30
|
-
).sign
|
31
|
-
http.request signed_request
|
32
|
-
end
|
33
|
-
|
34
|
-
raise "Failed to share profile #{response.code}: #{response.body}" unless response.code == '201'
|
35
|
-
|
36
|
-
token = JSON.parse(response.body)['token']
|
37
|
-
token
|
38
|
-
end
|
39
|
-
end
|
40
|
-
end
|