selfsdk 0.0.193 → 0.0.194

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: 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