selfsdk 0.0.193 → 0.0.194

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: ce09c8f8b8cb4daafea4f4d94f2d1110fd376e8811a9e30f2703a8add593d5ab
4
- data.tar.gz: 44d649bce5e7f0d0789954fdde6bbc47896b474a95af8eb536913f1bf5ef8712
3
+ metadata.gz: 64444c470c0e92c3baf684bfd8470b7c073d24305eaa279a1bee52acb1a9d855
4
+ data.tar.gz: 2dd352e0b0f31fd3b5144b7cfc48a8f63d60e579d5f1ace40aefde6a72223c33
5
5
  SHA512:
6
- metadata.gz: 26aad938c2d5c2e0cc2328eb9639f2e15b46805de03f97456cead55d005a21942f13078db7ce75ad6507d134777040e1698a17cab8c9caf075d52407f48222b3
7
- data.tar.gz: 39ebfd842ec43b0b425b843dc9cfbf557dff14d5aa411ebd0fb8645ab7f09e81fcb5d71dd134154d9b0d80c6b891416309adf4d2ef285f8f9203cbbd80c834dc
6
+ metadata.gz: 77b0906799dbb55db2d74ee2ce479a7316bc7de79a2be36ae8b12f3b5e6bd2e38d3ee6633309fea613a4fecc9742e65fa6e5d2916bb24713c614f13427848785
7
+ data.tar.gz: aff751245062775dcb0a16b2955373ae0f549c2af0f5985d3b7ef4b102c1c9eb21e6599b40bca9d2f5ceee66d115d61c74dee2bec29650e3a4206d6ef9f7d8cf
@@ -40,7 +40,9 @@ module SelfSDK
40
40
  begin
41
41
  ciphertext = URI.open(input[:link], "Authorization" => "Bearer #{@token}").read
42
42
  break
43
- rescue
43
+ rescue => e
44
+ SelfSDK.logger.warn e.message
45
+ SelfSDK.logger.warn e.backtrace.join("\n")
44
46
  sleep 1
45
47
  end
46
48
  end
data/lib/messages/fact.rb CHANGED
@@ -14,14 +14,11 @@ module SelfSDK
14
14
  end
15
15
 
16
16
  def parse(fact)
17
- @name = SelfSDK::fact_name(fact[:fact])
18
-
19
- @operator = ""
20
- @operator = SelfSDK::operator(fact[:operator]) if fact[:operator]
21
-
17
+ @name = @messaging.source.normalize_fact_name! fact[:fact]
18
+ @operator = @messaging.source.normalize_operator!(fact[:operator])
22
19
  @sources = []
23
20
  fact[:sources]&.each do |s|
24
- @sources << SelfSDK::source(s)
21
+ @sources << @messaging.source.normalize_source!(s)
25
22
  end
26
23
 
27
24
  @expected_value = fact[:expected_value] || ""
@@ -43,7 +43,7 @@ module SelfSDK
43
43
  end
44
44
 
45
45
  def fact(name)
46
- name = SelfSDK::fact_name(name)
46
+ name = @messaging.source.normalize_fact_name!(name)
47
47
  @facts.select{|f| f.name == name}.first
48
48
  end
49
49
 
data/lib/messaging.rb CHANGED
@@ -17,7 +17,7 @@ module SelfSDK
17
17
  DEFAULT_STORAGE_DIR="./.self_storage"
18
18
  ON_DEMAND_CLOSE_CODE=3999
19
19
 
20
- attr_accessor :client, :jwt, :device_id, :ack_timeout, :timeout, :type_observer, :uuid_observer, :encryption_client
20
+ attr_accessor :client, :jwt, :device_id, :ack_timeout, :timeout, :type_observer, :uuid_observer, :encryption_client, :source
21
21
 
22
22
  # RestClient initializer
23
23
  #
@@ -47,6 +47,7 @@ module SelfSDK
47
47
  FileUtils.mkdir_p @storage_dir unless File.exist? @storage_dir
48
48
  @offset_file = "#{@storage_dir}/#{@jwt.id}:#{@device_id}.offset"
49
49
  @offset = read_offset
50
+ @source = SelfSDK::Sources.new("#{__dir__}/sources.json")
50
51
  migrate_old_storage_format
51
52
 
52
53
  unless options.include? :no_crypto
@@ -283,7 +284,7 @@ module SelfSDK
283
284
  end
284
285
 
285
286
  def subscribe(type, &block)
286
- type = SelfSDK::message_type(type) if type.is_a? Symbol
287
+ type = @source.message_type(type) if type.is_a? Symbol
287
288
  @type_observer[type] = { block: block }
288
289
  end
289
290
 
@@ -139,13 +139,13 @@ module SelfSDK
139
139
  fs = []
140
140
  facts.each do |f|
141
141
  fact = if f.is_a?(Hash)
142
- f
143
- else
144
- { fact: f }
145
- end
142
+ f
143
+ else
144
+ { fact: f }
145
+ end
146
146
  # validate_fact!(fact)
147
147
  fs << fact
148
- end
148
+ end
149
149
  fs
150
150
  end
151
151
 
@@ -156,67 +156,72 @@ module SelfSDK
156
156
  raise 'provided fact does not specify a name' if f[:fact].empty?
157
157
  return unless f.has_key? :sources
158
158
 
159
- valid_sources = [ SOURCE_USER_SPECIFIED,
160
- SOURCE_PASSPORT,
161
- SOURCE_DRIVING_LICENSE,
162
- SOURCE_IDENTITY_CARD,
163
- SOURCE_TWITTER,
164
- SOURCE_LINKEDIN,
165
- SOURCE_FACEBOK ]
166
- factsForPassport = [ FACT_DOCUMENT_NUMBER,
167
- FACT_SURNAME,
168
- FACT_GIVEN_NAMES,
169
- FACT_DATE_OF_BIRTH,
170
- FACT_DATE_OF_EXPIRATION,
171
- FACT_SEX,
172
- FACT_NATIONALITY,
173
- FACT_COUNTRY_OF_ISSUANCE ]
174
-
175
- factsForDL = [ FACT_DOCUMENT_NUMBER,
176
- FACT_SURNAME,
177
- FACT_GIVEN_NAMES,
178
- FACT_DATE_OF_BIRTH,
179
- FACT_DATE_OF_ISSUANCE,
180
- FACT_DATE_OF_EXPIRATION,
181
- FACT_ADDRESS,
182
- FACT_ISSUING_AUTHORITY,
183
- FACT_PLACE_OF_BIRTH,
184
- FACT_COUNTRY_OF_ISSUANCE ]
185
-
186
- factsForUser = [ FACT_DOCUMENT_NUMBER,
187
- FACT_DISPLAY_NAME,
188
- FACT_EMAIL,
189
- FACT_PHONE ]
190
-
191
- factsForTwitter = [ FACT_ACCOUNT_ID, FACT_NICKNAME ]
192
- factsForLinkedin = [ FACT_ACCOUNT_ID, FACT_NICKNAME ]
193
- factsForFacebook = [ FACT_ACCOUNT_ID, FACT_NICKNAME ]
194
-
159
+ valid_sources = [SOURCE_USER_SPECIFIED,
160
+ SOURCE_PASSPORT,
161
+ SOURCE_DRIVING_LICENSE,
162
+ SOURCE_IDENTITY_CARD,
163
+ SOURCE_TWITTER,
164
+ SOURCE_LINKEDIN,
165
+ SOURCE_FACEBOK]
166
+ fact_for_passport = [FACT_DOCUMENT_NUMBER,
167
+ FACT_SURNAME,
168
+ FACT_GIVEN_NAMES,
169
+ FACT_DATE_OF_BIRTH,
170
+ FACT_DATE_OF_EXPIRATION,
171
+ FACT_SEX,
172
+ FACT_NATIONALITY,
173
+ FACT_COUNTRY_OF_ISSUANCE]
174
+
175
+ facts_for_dl = [FACT_DOCUMENT_NUMBER,
176
+ FACT_SURNAME,
177
+ FACT_GIVEN_NAMES,
178
+ FACT_DATE_OF_BIRTH,
179
+ FACT_DATE_OF_ISSUANCE,
180
+ FACT_DATE_OF_EXPIRATION,
181
+ FACT_ADDRESS,
182
+ FACT_ISSUING_AUTHORITY,
183
+ FACT_PLACE_OF_BIRTH,
184
+ FACT_COUNTRY_OF_ISSUANCE]
185
+
186
+ facts_for_user = [FACT_DOCUMENT_NUMBER,
187
+ FACT_DISPLAY_NAME,
188
+ FACT_EMAIL,
189
+ FACT_PHONE]
190
+
191
+ facts_for_twitter = [FACT_ACCOUNT_ID, FACT_NICKNAME]
192
+ facts_for_linkedin = [FACT_ACCOUNT_ID, FACT_NICKNAME]
193
+ facts_for_facebook = [FACT_ACCOUNT_ID, FACT_NICKNAME]
194
+ facts_for_live = [FACT_SELFIE]
195
+
195
196
  f[:sources].each do |s|
196
197
  raise errInvalidSource unless valid_sources.include? s.to_s
197
198
 
198
199
  if s.to_s == SOURCE_PASSPORT || s.to_s == SOURCE_IDENTITY_CARD
199
- raise errInvalidFactToSource unless factsForPassport.include? f[:fact]
200
+ raise errInvalidFactToSource unless fact_for_passport.include? f[:fact]
200
201
  end
201
202
 
202
203
  if s.to_s == SOURCE_DRIVING_LICENSE
203
- raise errInvalidFactToSource unless factsForDL.include? f[:fact]
204
+ raise errInvalidFactToSource unless facts_for_dl.include? f[:fact]
204
205
  end
205
206
 
206
207
  if s.to_s == SOURCE_USER_SPECIFIED
207
- raise errInvalidFactToSource unless factsForUser.include? f[:fact].to_s
208
+ raise errInvalidFactToSource unless facts_for_user.include? f[:fact].to_s
208
209
  end
209
210
 
210
211
  if s.to_s == SOURCE_TWITTER
211
- raise errInvalidFactToSource unless factsForTwitter.include? f[:fact].to_s
212
+ raise errInvalidFactToSource unless facts_for_twitter.include? f[:fact].to_s
212
213
  end
213
214
 
214
215
  if s.to_s == SOURCE_LINKEDIN
215
- raise errInvalidFactToSource unless factsForLinkedin.include? f[:fact].to_s
216
+ raise errInvalidFactToSource unless facts_for_linkedin.include? f[:fact].to_s
216
217
  end
217
218
 
218
219
  if s.to_s == SOURCE_FACEBOOK
219
- raise errInvalidFactToSource unless factsForFacebok.include? f[:fact].to_s
220
+ raise errInvalidFactToSource unless facts_for_facebook.include? f[:fact].to_s
221
+ end
222
+
223
+ if s.to_s == SOURCE_LIVE
224
+ raise errInvalidFactToSource unless facts_for_live.include? f[:fact].to_s
220
225
  end
221
226
  end
222
227
  end
data/lib/sources.rb CHANGED
@@ -2,38 +2,42 @@
2
2
 
3
3
  # frozen_string_literal: true
4
4
 
5
+ require "json"
5
6
  module SelfSDK
6
- FACT_EMAIL = "email_address"
7
- FACT_PHONE = "phone_number"
8
- FACT_DISPLAY_NAME = "display_name"
9
- FACT_DOCUMENT_NUMBER = "document_number"
10
- FACT_GIVEN_NAMES = "given_names"
11
- FACT_SURNAME = "surname"
12
- FACT_SEX = "sex"
13
- FACT_ISSUING_AUTHORITY = "issuing_authority"
14
- FACT_NATIONALITY = "nationality"
15
- FACT_ADDRESS = "address"
16
- FACT_PLACE_OF_BIRTH = "place_of_birth"
17
- FACT_DATE_OF_BIRTH = "date_of_birth"
18
- FACT_DATE_OF_ISSUANCE = "date_of_issuance"
19
- FACT_DATE_OF_EXPIRATION = "date_of_expiration"
20
- FACT_VALID_FROM = "valid_from"
21
- FACT_VALID_TO = "valid_to"
22
- FACT_CATEGORIES = "categories"
23
- FACT_SORT_CODE = "sort_code"
24
- FACT_COUNTRY_OF_ISSUANCE = "country_of_issuance"
25
- FACT_ACCOUNT_ID = "account_id"
26
- FACT_NICKNAME = "nickname"
7
+ class Sources
8
+ def initialize(sources_file)
9
+ file = File.open sources_file
10
+ data = JSON.load(file)
11
+ file.close
12
+ @sources = data["sources"]
13
+ @facts = []
14
+ @sources.each do |source, facts|
15
+ @facts.push(*facts)
16
+ end
17
+ end
18
+
19
+ def normalize_fact_name!(fact)
20
+ fact = fact.to_s
21
+ raise "invalid fact '#{fact}'" unless @facts.include?(fact)
22
+ fact
23
+ end
24
+
25
+ def validate_source!(source)
26
+ raise "invalid source '#{source}'" unless @sources.keys.include?(source.to_s)
27
+ end
28
+
29
+ def normalize_operator!(input)
30
+ return "" unless input
27
31
 
28
- SOURCE_USER_SPECIFIED = "user_specified"
29
- SOURCE_PASSPORT = "passport"
30
- SOURCE_DRIVING_LICENSE = "driving_license"
31
- SOURCE_IDENTITY_CARD = "identity_card"
32
- SOURCE_TWITTER = "twitter"
33
- SOURCE_LINKEDIN = "linkedin"
34
- SOURCE_FACEBOOK = "facebook"
32
+ operators = { equals: '==',
33
+ different: '!=',
34
+ great_or_equal_than: '>=',
35
+ less_or_equal: '<=',
36
+ great_than: '>',
37
+ less_than: '<' }
38
+ get(operators, input, "operator")
39
+ end
35
40
 
36
- class << self
37
41
  def message_type(s)
38
42
  types = { authentication_request: SelfSDK::Messages::AuthenticationReq::MSG_TYPE,
39
43
  authentication_response: SelfSDK::Messages::AuthenticationResp::MSG_TYPE,
@@ -51,51 +55,7 @@ module SelfSDK
51
55
  return types[s]
52
56
  end
53
57
 
54
- def operator(input)
55
- operators = { equals: '==',
56
- different: '!=',
57
- great_or_equal_than: '>=',
58
- less_or_equal: '<=',
59
- great_than: '>',
60
- less_than: '<' }
61
- get(operators, input, "operator")
62
- end
63
-
64
- def fact_name(input)
65
- facts = { email_address: FACT_EMAIL,
66
- phone_number: FACT_PHONE,
67
- display_name: FACT_DISPLAY_NAME,
68
- document_number: FACT_DOCUMENT_NUMBER,
69
- given_names: FACT_GIVEN_NAMES,
70
- surname: FACT_SURNAME,
71
- sex: FACT_SEX,
72
- issuing_authority: FACT_ISSUING_AUTHORITY,
73
- nationality: FACT_NATIONALITY,
74
- address: FACT_ADDRESS,
75
- place_of_birth: FACT_PLACE_OF_BIRTH,
76
- date_of_birth: FACT_DATE_OF_BIRTH,
77
- date_of_issuance: FACT_DATE_OF_ISSUANCE,
78
- date_of_expiration: FACT_DATE_OF_EXPIRATION,
79
- valid_from: FACT_VALID_FROM,
80
- valid_to: FACT_VALID_TO,
81
- categories: FACT_CATEGORIES,
82
- sort_code: FACT_SORT_CODE,
83
- country_of_issuance: FACT_COUNTRY_OF_ISSUANCE,
84
- account_id: FACT_ACCOUNT_ID,
85
- nickname: FACT_NICKNAME }
86
- get(facts, input, "fact")
87
- end
88
-
89
- def source(input)
90
- sources = { user_specified: SOURCE_USER_SPECIFIED,
91
- passport: SOURCE_PASSPORT,
92
- driving_license: SOURCE_DRIVING_LICENSE,
93
- identity_card: SOURCE_IDENTITY_CARD,
94
- twitter: SOURCE_TWITTER,
95
- linkedin: SOURCE_LINKEDIN,
96
- facebook: SOURCE_FACEBOOK }
97
- get(sources, input, "source")
98
- end
58
+ private
99
59
 
100
60
  def get(options, input, option_type)
101
61
  if input.is_a? Symbol
@@ -105,6 +65,5 @@ module SelfSDK
105
65
  raise "invalid #{option_type} '#{input}'" unless options.values.include? input
106
66
  input
107
67
  end
108
-
109
68
  end
110
69
  end
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.193
4
+ version: 0.0.194
5
5
  platform: ruby
6
6
  authors:
7
7
  - Aldgate Ventures