yoti_sandbox 1.3.0 → 1.4.0

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: 3dca617f8f85c6d5f3f8cab50bbbaed9d25d02400fe57d92fa79e96741910460
4
- data.tar.gz: 5ff037daed4c3c10499c2fdb707359ee12fb8f498806f207842009a9012ec138
3
+ metadata.gz: 50664707d70da0ad9d28f183b68074c795f74ef59c05dbf4fbd1a0cef280d819
4
+ data.tar.gz: 6bae10a1f1675592f178d9ae1f47fdf3992196f1480a03e6a736b177a7638ea9
5
5
  SHA512:
6
- metadata.gz: cd19939c2a54cb656244b367c75ab362cd931aaf533f324c3b5c309c8ed61a5fc44d310f49f1295ccea98f70aa392e4276ffa4f3edfc2776603d61324168ee59
7
- data.tar.gz: 2702371dbc5dd6caf8ddfce5c7eaf06d110f217d314d2c402ece5d5d87b63430eb1a52ffb98427e47ead8eadd4984ae3b5fa04ede3845e3daf10fefaa6134362
6
+ metadata.gz: fe42559fa4b25d2a3f5d239471bfe86a0f1b59e00cb6c4bcb52cd895b52f2e2a4bf8087ce710d50be5514cf745e804204e245dac7f8bdf1dccf6157c9092efa1
7
+ data.tar.gz: 8de1edf888b5ede3604532ed62dd4210f7a55aa3de899c79062fefa980c37bd7d1ebf4045a40e9d879b5c87e83b3f2331d79985d7ecc447c1224a28f836afef7
data/Gemfile CHANGED
@@ -2,7 +2,7 @@ source 'https://rubygems.org'
2
2
 
3
3
  gem 'guard'
4
4
  gem 'guard-rspec'
5
- gem 'rubocop'
5
+ gem 'rubocop', '~> 1.1', require: false
6
6
  gem 'rubocop-performance'
7
7
 
8
8
  gemspec
@@ -12,9 +12,14 @@ require_relative 'doc_scan/request/check/document_authenticity_check'
12
12
  require_relative 'doc_scan/request/check/id_document_comparison_check'
13
13
  require_relative 'doc_scan/request/check/document_face_match_check'
14
14
  require_relative 'doc_scan/request/check/document_text_data_check'
15
+ require_relative 'doc_scan/request/check/supplementary_document_text_data_check'
15
16
  require_relative 'doc_scan/request/check/liveness_check'
16
17
  require_relative 'doc_scan/request/check/zoom_liveness_check'
17
18
  require_relative 'doc_scan/request/check/report/breakdown'
18
19
  require_relative 'doc_scan/request/check/report/recommendation'
19
20
  require_relative 'doc_scan/request/check/report/detail'
20
21
  require_relative 'doc_scan/request/task/document_text_data_extraction_task'
22
+ require_relative 'doc_scan/request/task/supplementary_document_text_data_extraction_task'
23
+ require_relative 'doc_scan/request/task/document_id_photo'
24
+ require_relative 'doc_scan/request/task/text_data_extraction_recommendation'
25
+ require_relative 'doc_scan/request/task/text_data_extraction_reason'
@@ -9,7 +9,7 @@ module Yoti
9
9
  # @param [CheckResult] result
10
10
  #
11
11
  def initialize(result)
12
- raise(TypeError, "#{self.class} cannot be instantiated") if self.class == Check
12
+ raise(TypeError, "#{self.class} cannot be instantiated") if instance_of?(Check)
13
13
 
14
14
  Validation.assert_is_a(CheckResult, result, 'result')
15
15
  @result = result
@@ -10,7 +10,7 @@ module Yoti
10
10
  # @param [DocumentFilter] document_filter
11
11
  #
12
12
  def initialize(result, document_filter)
13
- raise(TypeError, "#{self.class} cannot be instantiated") if self.class == DocumentCheck
13
+ raise(TypeError, "#{self.class} cannot be instantiated") if instance_of?(DocumentCheck)
14
14
 
15
15
  super(result)
16
16
 
@@ -27,7 +27,7 @@ module Yoti
27
27
 
28
28
  class DocumentCheckBuilder < CheckBuilder
29
29
  def initialize
30
- raise(TypeError, "#{self.class} cannot be instantiated") if self.class == DocumentCheckBuilder
30
+ raise(TypeError, "#{self.class} cannot be instantiated") if instance_of?(DocumentCheckBuilder)
31
31
 
32
32
  super
33
33
  end
@@ -18,13 +18,15 @@ module Yoti
18
18
  class DocumentTextDataCheckResult < CheckResult
19
19
  #
20
20
  # @param [CheckReport] report
21
- # @param [Hash] document_fields
21
+ # @param [Hash,nil] document_fields
22
22
  #
23
23
  def initialize(report, document_fields)
24
24
  super(report)
25
25
 
26
- Validation.assert_is_a(Hash, document_fields, 'document_fields')
27
- document_fields.each { |_k, v| Validation.assert_respond_to(:to_json, v, 'document_fields value') }
26
+ unless document_fields.nil?
27
+ Validation.assert_is_a(Hash, document_fields, 'document_fields')
28
+ document_fields.each { |_k, v| Validation.assert_respond_to(:to_json, v, 'document_fields value') }
29
+ end
28
30
  @document_fields = document_fields
29
31
  end
30
32
 
@@ -36,12 +38,6 @@ module Yoti
36
38
  end
37
39
 
38
40
  class DocumentTextDataCheckBuilder < DocumentCheckBuilder
39
- def initialize
40
- super
41
-
42
- @document_fields = {}
43
- end
44
-
45
41
  #
46
42
  # @param [String] key
47
43
  # @param [#to_json] value
@@ -51,6 +47,7 @@ module Yoti
51
47
  def with_document_field(key, value)
52
48
  Validation.assert_is_a(String, key, 'key')
53
49
  Validation.assert_respond_to(:to_json, value, 'value')
50
+ @document_fields ||= {}
54
51
  @document_fields[key] = value
55
52
  self
56
53
  end
@@ -10,7 +10,7 @@ module Yoti
10
10
  # @param [String] liveness_type
11
11
  #
12
12
  def initialize(result, liveness_type)
13
- raise(TypeError, "#{self.class} cannot be instantiated") if self.class == LivenessCheck
13
+ raise(TypeError, "#{self.class} cannot be instantiated") if instance_of?(LivenessCheck)
14
14
 
15
15
  super(result)
16
16
 
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Yoti
6
+ module Sandbox
7
+ module DocScan
8
+ module Request
9
+ class SupplementaryDocumentTextDataCheck < DocumentCheck
10
+ #
11
+ # @return [SupplementaryDocumentTextDataCheckBuilder]
12
+ #
13
+ def self.builder
14
+ SupplementaryDocumentTextDataCheckBuilder.new
15
+ end
16
+ end
17
+
18
+ class SupplementaryDocumentTextDataCheckResult < CheckResult
19
+ #
20
+ # @param [CheckReport] report
21
+ # @param [Hash,nil] document_fields
22
+ #
23
+ def initialize(report, document_fields)
24
+ super(report)
25
+
26
+ unless document_fields.nil?
27
+ Validation.assert_is_a(Hash, document_fields, 'document_fields')
28
+ document_fields.each { |_k, v| Validation.assert_respond_to(:to_json, v, 'document_fields value') }
29
+ end
30
+ @document_fields = document_fields
31
+ end
32
+
33
+ def as_json(*_args)
34
+ super.merge(
35
+ document_fields: @document_fields
36
+ ).compact
37
+ end
38
+ end
39
+
40
+ class SupplementaryDocumentTextDataCheckBuilder < DocumentCheckBuilder
41
+ #
42
+ # @param [String] key
43
+ # @param [#to_json] value
44
+ #
45
+ # @return [self]
46
+ #
47
+ def with_document_field(key, value)
48
+ Validation.assert_is_a(String, key, 'key')
49
+ Validation.assert_respond_to(:to_json, value, 'value')
50
+ @document_fields ||= {}
51
+ @document_fields[key] = value
52
+ self
53
+ end
54
+
55
+ #
56
+ # @param [Hash] document_fields
57
+ #
58
+ # @return [self]
59
+ #
60
+ def with_document_fields(document_fields)
61
+ Validation.assert_is_a(Hash, document_fields, 'document_fields')
62
+ @document_fields = document_fields
63
+ self
64
+ end
65
+
66
+ #
67
+ # @return [SupplementaryDocumentTextDataCheck]
68
+ #
69
+ def build
70
+ report = CheckReport.new(@recommendation, @breakdowns)
71
+ result = SupplementaryDocumentTextDataCheckResult.new(report, @document_fields)
72
+ SupplementaryDocumentTextDataCheck.new(result, @document_filter)
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -19,7 +19,8 @@ module Yoti
19
19
  liveness_checks,
20
20
  document_face_match_checks,
21
21
  async_report_delay,
22
- id_document_comparison_checks = nil
22
+ id_document_comparison_checks = nil,
23
+ supplementary_document_text_data_checks = nil
23
24
  )
24
25
  Validation.assert_is_a(Array, document_text_data_checks, 'document_text_data_checks')
25
26
  @document_text_data_checks = document_text_data_checks
@@ -38,6 +39,14 @@ module Yoti
38
39
 
39
40
  Validation.assert_is_a(Array, id_document_comparison_checks, 'id_document_comparison_checks', true)
40
41
  @id_document_comparison_checks = id_document_comparison_checks
42
+
43
+ Validation.assert_is_a(
44
+ Array,
45
+ supplementary_document_text_data_checks,
46
+ 'supplementary_document_text_data_checks',
47
+ true
48
+ )
49
+ @supplementary_document_text_data_checks = supplementary_document_text_data_checks
41
50
  end
42
51
 
43
52
  def self.builder
@@ -55,6 +64,7 @@ module Yoti
55
64
  ID_DOCUMENT_FACE_MATCH: @document_face_match_checks,
56
65
  LIVENESS: @liveness_checks,
57
66
  ID_DOCUMENT_COMPARISON: @id_document_comparison_checks,
67
+ SUPPLEMENTARY_DOCUMENT_TEXT_DATA_CHECK: @supplementary_document_text_data_checks,
58
68
  async_report_delay: @async_report_delay
59
69
  }.compact
60
70
  end
@@ -67,6 +77,7 @@ module Yoti
67
77
  @document_authenticity_checks = []
68
78
  @document_face_match_checks = []
69
79
  @id_document_comparison_checks = []
80
+ @supplementary_document_text_data_checks = []
70
81
  end
71
82
 
72
83
  #
@@ -135,6 +146,21 @@ module Yoti
135
146
  self
136
147
  end
137
148
 
149
+ #
150
+ # @param [SupplementaryDocumentTextDataCheck] supplementary_document_text_data_check
151
+ #
152
+ # @return [self]
153
+ #
154
+ def with_supplementary_document_text_data_check(supplementary_document_text_data_check)
155
+ Validation.assert_is_a(
156
+ SupplementaryDocumentTextDataCheck,
157
+ supplementary_document_text_data_check,
158
+ 'supplementary_document_text_data_check'
159
+ )
160
+ @supplementary_document_text_data_checks << supplementary_document_text_data_check
161
+ self
162
+ end
163
+
138
164
  #
139
165
  # @return [CheckReports]
140
166
  #
@@ -145,7 +171,8 @@ module Yoti
145
171
  @liveness_checks,
146
172
  @document_face_match_checks,
147
173
  @async_report_delay,
148
- @id_document_comparison_checks
174
+ @id_document_comparison_checks,
175
+ @supplementary_document_text_data_checks
149
176
  )
150
177
  end
151
178
  end
@@ -0,0 +1,35 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'base64'
4
+
5
+ module Yoti
6
+ module Sandbox
7
+ module DocScan
8
+ module Request
9
+ class DocumentIdPhoto
10
+ #
11
+ # @param [String] content_type
12
+ # @param [bin] data
13
+ #
14
+ def initialize(content_type, data)
15
+ Validation.assert_is_a(String, content_type, 'content_type')
16
+ @content_type = content_type
17
+
18
+ @data = data
19
+ end
20
+
21
+ def to_json(*_args)
22
+ as_json.to_json
23
+ end
24
+
25
+ def as_json(*_args)
26
+ {
27
+ content_type: @content_type,
28
+ data: Base64.strict_encode64(@data)
29
+ }
30
+ end
31
+ end
32
+ end
33
+ end
34
+ end
35
+ end
@@ -12,8 +12,6 @@ module Yoti
12
12
  # @param [DocumentFilter] document_filter
13
13
  #
14
14
  def initialize(result, document_filter)
15
- raise(TypeError, "#{self.class} cannot be instantiated") if self.class == DocumentCheck
16
-
17
15
  Validation.assert_is_a(DocumentTextDataExtractionTaskResult, result, 'result')
18
16
  @result = result
19
17
 
@@ -43,12 +41,31 @@ module Yoti
43
41
 
44
42
  class DocumentTextDataExtractionTaskResult
45
43
  #
46
- # @param [Hash] document_fields
47
- #
48
- def initialize(document_fields)
49
- Validation.assert_is_a(Hash, document_fields, 'document_fields')
50
- document_fields.each { |_k, v| Validation.assert_respond_to(:to_json, v, 'document_fields value') }
44
+ # @param [Hash,nil] document_fields
45
+ # @param [DocumentIdPhoto,nil] document_id_photo
46
+ # @param [String,nil] detected_country
47
+ # @param [TextDataExtractionRecommendation,nil] recommendation
48
+ #
49
+ def initialize(
50
+ document_fields,
51
+ document_id_photo = nil,
52
+ detected_country = nil,
53
+ recommendation = nil
54
+ )
55
+ unless document_fields.nil?
56
+ Validation.assert_is_a(Hash, document_fields, 'document_fields')
57
+ document_fields.each { |_k, v| Validation.assert_respond_to(:to_json, v, 'document_fields value') }
58
+ end
51
59
  @document_fields = document_fields
60
+
61
+ Validation.assert_is_a(DocumentIdPhoto, document_id_photo, 'document_id_photo', true)
62
+ @document_id_photo = document_id_photo
63
+
64
+ Validation.assert_is_a(String, detected_country, 'detected_country', true)
65
+ @detected_country = detected_country
66
+
67
+ Validation.assert_is_a(TextDataExtractionRecommendation, recommendation, 'recommendation', true)
68
+ @recommendation = recommendation
52
69
  end
53
70
 
54
71
  def to_json(*_args)
@@ -57,16 +74,15 @@ module Yoti
57
74
 
58
75
  def as_json(*_args)
59
76
  {
60
- document_fields: @document_fields
61
- }
77
+ document_fields: @document_fields,
78
+ document_id_photo: @document_id_photo,
79
+ detected_country: @detected_country,
80
+ recommendation: @recommendation
81
+ }.compact
62
82
  end
63
83
  end
64
84
 
65
85
  class DocumentTextDataExtractionTaskBuilder
66
- def initialize
67
- @document_fields = {}
68
- end
69
-
70
86
  #
71
87
  # @param [String] key
72
88
  # @param [#to_json] value
@@ -76,6 +92,7 @@ module Yoti
76
92
  def with_document_field(key, value)
77
93
  Validation.assert_is_a(String, key, 'key')
78
94
  Validation.assert_respond_to(:to_json, value, 'value')
95
+ @document_fields ||= {}
79
96
  @document_fields[key] = value
80
97
  self
81
98
  end
@@ -101,11 +118,49 @@ module Yoti
101
118
  self
102
119
  end
103
120
 
121
+ #
122
+ # @param [String] content_type
123
+ # @param [bin] data
124
+ #
125
+ # @return [self]
126
+ #
127
+ def with_document_id_photo(content_type, data)
128
+ @document_id_photo = DocumentIdPhoto.new(content_type, data)
129
+ self
130
+ end
131
+
132
+ #
133
+ # @param [TextDataExtractionRecommendation] recommendation
134
+ #
135
+ # @return [self]
136
+ #
137
+ def with_recommendation(recommendation)
138
+ Validation.assert_is_a(TextDataExtractionRecommendation, recommendation, 'recommendation')
139
+ @recommendation = recommendation
140
+ self
141
+ end
142
+
143
+ #
144
+ # @param [String] detected_country
145
+ #
146
+ # @return [self]
147
+ #
148
+ def with_detected_country(detected_country)
149
+ Validation.assert_is_a(String, detected_country, 'detected_country')
150
+ @detected_country = detected_country
151
+ self
152
+ end
153
+
104
154
  #
105
155
  # @return [DocumentTextDataExtractionTask]
106
156
  #
107
157
  def build
108
- result = DocumentTextDataExtractionTaskResult.new(@document_fields)
158
+ result = DocumentTextDataExtractionTaskResult.new(
159
+ @document_fields,
160
+ @document_id_photo,
161
+ @detected_country,
162
+ @recommendation
163
+ )
109
164
  DocumentTextDataExtractionTask.new(result, @document_filter)
110
165
  end
111
166
  end
@@ -0,0 +1,152 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Yoti
6
+ module Sandbox
7
+ module DocScan
8
+ module Request
9
+ class SupplementaryDocumentTextDataExtractionTask
10
+ #
11
+ # @param [SupplementaryDocumentTextDataExtractionTaskResult] result
12
+ # @param [DocumentFilter] document_filter
13
+ #
14
+ def initialize(result, document_filter)
15
+ Validation.assert_is_a(SupplementaryDocumentTextDataExtractionTaskResult, result, 'result')
16
+ @result = result
17
+
18
+ Validation.assert_is_a(DocumentFilter, document_filter, 'document_filter', true)
19
+ @document_filter = document_filter
20
+ end
21
+
22
+ def to_json(*_args)
23
+ as_json.to_json
24
+ end
25
+
26
+ def as_json(*_args)
27
+ json = {
28
+ result: @result.as_json
29
+ }
30
+ json[:document_filter] = @document_filter.as_json unless @document_filter.nil?
31
+ json
32
+ end
33
+
34
+ #
35
+ # @return [SupplementaryDocumentTextDataExtractionTaskBuilder]
36
+ #
37
+ def self.builder
38
+ SupplementaryDocumentTextDataExtractionTaskBuilder.new
39
+ end
40
+ end
41
+
42
+ class SupplementaryDocumentTextDataExtractionTaskResult
43
+ #
44
+ # @param [Hash,nil] document_fields
45
+ # @param [String,nil] detected_country
46
+ # @param [TextDataExtractionRecommendation,nil] recommendation
47
+ #
48
+ def initialize(
49
+ document_fields,
50
+ detected_country = nil,
51
+ recommendation = nil
52
+ )
53
+ unless document_fields.nil?
54
+ Validation.assert_is_a(Hash, document_fields, 'document_fields')
55
+ document_fields.each { |_k, v| Validation.assert_respond_to(:to_json, v, 'document_fields value') }
56
+ end
57
+ @document_fields = document_fields
58
+
59
+ Validation.assert_is_a(String, detected_country, 'detected_country', true)
60
+ @detected_country = detected_country
61
+
62
+ Validation.assert_is_a(TextDataExtractionRecommendation, recommendation, 'recommendation', true)
63
+ @recommendation = recommendation
64
+ end
65
+
66
+ def to_json(*_args)
67
+ as_json.to_json
68
+ end
69
+
70
+ def as_json(*_args)
71
+ {
72
+ document_fields: @document_fields,
73
+ detected_country: @detected_country,
74
+ recommendation: @recommendation
75
+ }.compact
76
+ end
77
+ end
78
+
79
+ class SupplementaryDocumentTextDataExtractionTaskBuilder
80
+ #
81
+ # @param [String] key
82
+ # @param [#to_json] value
83
+ #
84
+ # @return [self]
85
+ #
86
+ def with_document_field(key, value)
87
+ Validation.assert_is_a(String, key, 'key')
88
+ Validation.assert_respond_to(:to_json, value, 'value')
89
+ @document_fields ||= {}
90
+ @document_fields[key] = value
91
+ self
92
+ end
93
+
94
+ #
95
+ # @param [Hash] document_fields
96
+ #
97
+ # @return [self]
98
+ #
99
+ def with_document_fields(document_fields)
100
+ Validation.assert_is_a(Hash, document_fields, 'document_fields')
101
+ @document_fields = document_fields
102
+ self
103
+ end
104
+
105
+ #
106
+ # @param [DocumentFilter] document_filter
107
+ #
108
+ # @return [self]
109
+ #
110
+ def with_document_filter(document_filter)
111
+ @document_filter = document_filter
112
+ self
113
+ end
114
+
115
+ #
116
+ # @param [TextDataExtractionRecommendation] recommendation
117
+ #
118
+ # @return [self]
119
+ #
120
+ def with_recommendation(recommendation)
121
+ Validation.assert_is_a(TextDataExtractionRecommendation, recommendation, 'recommendation')
122
+ @recommendation = recommendation
123
+ self
124
+ end
125
+
126
+ #
127
+ # @param [String] detected_country
128
+ #
129
+ # @return [self]
130
+ #
131
+ def with_detected_country(detected_country)
132
+ Validation.assert_is_a(String, detected_country, 'detected_country')
133
+ @detected_country = detected_country
134
+ self
135
+ end
136
+
137
+ #
138
+ # @return [SupplementaryDocumentTextDataExtractionTask]
139
+ #
140
+ def build
141
+ result = SupplementaryDocumentTextDataExtractionTaskResult.new(
142
+ @document_fields,
143
+ @detected_country,
144
+ @recommendation
145
+ )
146
+ SupplementaryDocumentTextDataExtractionTask.new(result, @document_filter)
147
+ end
148
+ end
149
+ end
150
+ end
151
+ end
152
+ end
@@ -0,0 +1,78 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Yoti
6
+ module Sandbox
7
+ module DocScan
8
+ module Request
9
+ class TextDataExtractionReason
10
+ #
11
+ # @param [String] value
12
+ # @param [String] detail
13
+ #
14
+ def initialize(value, detail)
15
+ Validation.assert_is_a(String, value, 'value')
16
+ @value = value
17
+
18
+ Validation.assert_is_a(String, detail, 'detail', true)
19
+ @detail = detail
20
+ end
21
+
22
+ def to_json(*_args)
23
+ as_json.to_json
24
+ end
25
+
26
+ def as_json(*_args)
27
+ {
28
+ value: @value,
29
+ detail: @detail
30
+ }.compact
31
+ end
32
+
33
+ #
34
+ # @return [TextDataExtractionReasonBuilder]
35
+ #
36
+ def self.builder
37
+ TextDataExtractionReasonBuilder.new
38
+ end
39
+ end
40
+
41
+ class TextDataExtractionReasonBuilder
42
+ #
43
+ # @return [self]
44
+ #
45
+ def for_quality
46
+ @value = 'QUALITY'
47
+ self
48
+ end
49
+
50
+ #
51
+ # @return [self]
52
+ #
53
+ def for_user_error
54
+ @value = 'USER_ERROR'
55
+ self
56
+ end
57
+
58
+ #
59
+ # @param [String] detail
60
+ #
61
+ # @return [self]
62
+ #
63
+ def with_detail(detail)
64
+ @detail = detail
65
+ self
66
+ end
67
+
68
+ #
69
+ # @return [TextDataExtractionReason]
70
+ #
71
+ def build
72
+ TextDataExtractionReason.new(@value, @detail)
73
+ end
74
+ end
75
+ end
76
+ end
77
+ end
78
+ end
@@ -0,0 +1,86 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+
5
+ module Yoti
6
+ module Sandbox
7
+ module DocScan
8
+ module Request
9
+ class TextDataExtractionRecommendation
10
+ #
11
+ # @param [String] value
12
+ # @param [TextDataExtractionReason] reason
13
+ #
14
+ def initialize(value, reason)
15
+ Validation.assert_is_a(String, value, 'value')
16
+ @value = value
17
+
18
+ Validation.assert_is_a(TextDataExtractionReason, reason, 'reason', true)
19
+ @reason = reason
20
+ end
21
+
22
+ def to_json(*_args)
23
+ as_json.to_json
24
+ end
25
+
26
+ def as_json(*_args)
27
+ {
28
+ value: @value,
29
+ reason: @reason
30
+ }.compact
31
+ end
32
+
33
+ #
34
+ # @return [TextDataExtractionRecommendationBuilder]
35
+ #
36
+ def self.builder
37
+ TextDataExtractionRecommendationBuilder.new
38
+ end
39
+ end
40
+
41
+ class TextDataExtractionRecommendationBuilder
42
+ #
43
+ # @return [self]
44
+ #
45
+ def for_progress
46
+ @value = 'PROGRESS'
47
+ self
48
+ end
49
+
50
+ #
51
+ # @return [self]
52
+ #
53
+ def for_should_try_again
54
+ @value = 'SHOULD_TRY_AGAIN'
55
+ self
56
+ end
57
+
58
+ #
59
+ # @return [self]
60
+ #
61
+ def for_must_try_again
62
+ @value = 'MUST_TRY_AGAIN'
63
+ self
64
+ end
65
+
66
+ #
67
+ # @param [TextDataExtractionReason] reason
68
+ #
69
+ # @return [self]
70
+ #
71
+ def with_reason(reason)
72
+ @reason = reason
73
+ self
74
+ end
75
+
76
+ #
77
+ # @return [TextDataExtractionRecommendation]
78
+ #
79
+ def build
80
+ TextDataExtractionRecommendation.new(@value, @reason)
81
+ end
82
+ end
83
+ end
84
+ end
85
+ end
86
+ end
@@ -7,14 +7,25 @@ module Yoti
7
7
  class TaskResults
8
8
  #
9
9
  # @param [Array<DocumentTextDataExtractionTask>] document_text_data_extraction_tasks
10
+ # @param [Array<SupplementaryDocumentTextDataExtractionTask>] supplementary_document_text_data_extraction_tasks
10
11
  #
11
- def initialize(document_text_data_extraction_tasks)
12
+ def initialize(
13
+ document_text_data_extraction_tasks,
14
+ supplementary_document_text_data_extraction_tasks
15
+ )
12
16
  Validation.assert_is_a(
13
17
  Array,
14
18
  document_text_data_extraction_tasks,
15
19
  'document_text_data_extraction_tasks'
16
20
  )
17
21
  @document_text_data_extraction_tasks = document_text_data_extraction_tasks
22
+
23
+ Validation.assert_is_a(
24
+ Array,
25
+ supplementary_document_text_data_extraction_tasks,
26
+ 'supplementary_document_text_data_extraction_tasks'
27
+ )
28
+ @supplementary_document_text_data_extraction_tasks = supplementary_document_text_data_extraction_tasks
18
29
  end
19
30
 
20
31
  def self.builder
@@ -27,7 +38,8 @@ module Yoti
27
38
 
28
39
  def as_json(*_args)
29
40
  {
30
- Yoti::DocScan::Constants::ID_DOCUMENT_TEXT_DATA_EXTRACTION => @document_text_data_extraction_tasks
41
+ ID_DOCUMENT_TEXT_DATA_EXTRACTION: @document_text_data_extraction_tasks,
42
+ SUPPLEMENTARY_DOCUMENT_TEXT_DATA_EXTRACTION: @supplementary_document_text_data_extraction_tasks
31
43
  }
32
44
  end
33
45
  end
@@ -35,6 +47,7 @@ module Yoti
35
47
  class TaskResultsBuilder
36
48
  def initialize
37
49
  @document_text_data_extraction_tasks = []
50
+ @supplementary_document_text_data_extraction_tasks = []
38
51
  end
39
52
 
40
53
  #
@@ -52,11 +65,29 @@ module Yoti
52
65
  self
53
66
  end
54
67
 
68
+ #
69
+ # @param [SupplementaryDocumentTextDataExtractionTask] supplementary_document_text_data_extraction_task
70
+ #
71
+ # @return [self]
72
+ #
73
+ def with_supplementary_document_text_data_extraction_task(supplementary_document_text_data_extraction_task)
74
+ Validation.assert_is_a(
75
+ SupplementaryDocumentTextDataExtractionTask,
76
+ supplementary_document_text_data_extraction_task,
77
+ 'supplementary_document_text_data_extraction_task'
78
+ )
79
+ @supplementary_document_text_data_extraction_tasks << supplementary_document_text_data_extraction_task
80
+ self
81
+ end
82
+
55
83
  #
56
84
  # @return [TaskResults]
57
85
  #
58
86
  def build
59
- TaskResults.new(@document_text_data_extraction_tasks)
87
+ TaskResults.new(
88
+ @document_text_data_extraction_tasks,
89
+ @supplementary_document_text_data_extraction_tasks
90
+ )
60
91
  end
61
92
  end
62
93
  end
@@ -41,7 +41,7 @@ module Yoti
41
41
  # @param [#as_json] value
42
42
  #
43
43
  def initialize(type, value)
44
- raise(TypeError, "#{self.class} cannot be instantiated") if self.class == DataEntry
44
+ raise(TypeError, "#{self.class} cannot be instantiated") if instance_of?(DataEntry)
45
45
 
46
46
  Validation.assert_is_a(String, type, 'type')
47
47
  @type = type
@@ -3,7 +3,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
 
4
4
  Gem::Specification.new do |spec|
5
5
  spec.name = 'yoti_sandbox'
6
- spec.version = '1.3.0'
6
+ spec.version = '1.4.0'
7
7
  spec.authors = ['Yoti']
8
8
  spec.email = ['websdk@yoti.com']
9
9
 
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: yoti_sandbox
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Yoti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-09-22 00:00:00.000000000 Z
11
+ date: 2020-11-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: yoti
@@ -148,11 +148,16 @@ files:
148
148
  - lib/yoti_sandbox/doc_scan/request/check/report/breakdown.rb
149
149
  - lib/yoti_sandbox/doc_scan/request/check/report/detail.rb
150
150
  - lib/yoti_sandbox/doc_scan/request/check/report/recommendation.rb
151
+ - lib/yoti_sandbox/doc_scan/request/check/supplementary_document_text_data_check.rb
151
152
  - lib/yoti_sandbox/doc_scan/request/check/zoom_liveness_check.rb
152
153
  - lib/yoti_sandbox/doc_scan/request/check_reports.rb
153
154
  - lib/yoti_sandbox/doc_scan/request/document_filter.rb
154
155
  - lib/yoti_sandbox/doc_scan/request/response_config.rb
156
+ - lib/yoti_sandbox/doc_scan/request/task/document_id_photo.rb
155
157
  - lib/yoti_sandbox/doc_scan/request/task/document_text_data_extraction_task.rb
158
+ - lib/yoti_sandbox/doc_scan/request/task/supplementary_document_text_data_extraction_task.rb
159
+ - lib/yoti_sandbox/doc_scan/request/task/text_data_extraction_reason.rb
160
+ - lib/yoti_sandbox/doc_scan/request/task/text_data_extraction_recommendation.rb
156
161
  - lib/yoti_sandbox/doc_scan/request/task_results.rb
157
162
  - lib/yoti_sandbox/profile.rb
158
163
  - lib/yoti_sandbox/profile/age_verification.rb