yoti 1.6.4 → 1.7.0
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 +4 -4
- data/README.md +4 -0
- data/Rakefile +0 -8
- data/lib/yoti.rb +50 -1
- data/lib/yoti/client.rb +13 -4
- data/lib/yoti/configuration.rb +7 -2
- data/lib/yoti/data_type/age_verification.rb +1 -1
- data/lib/yoti/data_type/base_profile.rb +1 -1
- data/lib/yoti/data_type/image.rb +4 -12
- data/lib/yoti/data_type/image_jpeg.rb +2 -0
- data/lib/yoti/data_type/image_png.rb +2 -0
- data/lib/yoti/data_type/media.rb +19 -0
- data/lib/yoti/doc_scan/client.rb +163 -0
- data/lib/yoti/doc_scan/constants.rb +28 -0
- data/lib/yoti/doc_scan/session/create/create_session_result.rb +50 -0
- data/lib/yoti/doc_scan/session/create/document_filter.rb +31 -0
- data/lib/yoti/doc_scan/session/create/document_restrictions_filter.rb +140 -0
- data/lib/yoti/doc_scan/session/create/notification_config.rb +142 -0
- data/lib/yoti/doc_scan/session/create/orthogonal_restrictions_filter.rb +150 -0
- data/lib/yoti/doc_scan/session/create/requested_check.rb +39 -0
- data/lib/yoti/doc_scan/session/create/requested_document_authenticity_check.rb +53 -0
- data/lib/yoti/doc_scan/session/create/requested_face_match_check.rb +95 -0
- data/lib/yoti/doc_scan/session/create/requested_liveness_check.rb +108 -0
- data/lib/yoti/doc_scan/session/create/requested_task.rb +39 -0
- data/lib/yoti/doc_scan/session/create/requested_text_extraction_task.rb +94 -0
- data/lib/yoti/doc_scan/session/create/required_document.rb +31 -0
- data/lib/yoti/doc_scan/session/create/required_id_document.rb +53 -0
- data/lib/yoti/doc_scan/session/create/sdk_config.rb +221 -0
- data/lib/yoti/doc_scan/session/create/session_specification.rb +203 -0
- data/lib/yoti/doc_scan/session/retrieve/authenticity_check_response.rb +12 -0
- data/lib/yoti/doc_scan/session/retrieve/breakdown_response.rb +38 -0
- data/lib/yoti/doc_scan/session/retrieve/check_response.rb +63 -0
- data/lib/yoti/doc_scan/session/retrieve/details_response.rb +28 -0
- data/lib/yoti/doc_scan/session/retrieve/document_fields_response.rb +21 -0
- data/lib/yoti/doc_scan/session/retrieve/face_map_response.rb +21 -0
- data/lib/yoti/doc_scan/session/retrieve/face_match_check_response.rb +12 -0
- data/lib/yoti/doc_scan/session/retrieve/frame_response.rb +21 -0
- data/lib/yoti/doc_scan/session/retrieve/generated_check_response.rb +28 -0
- data/lib/yoti/doc_scan/session/retrieve/generated_media.rb +28 -0
- data/lib/yoti/doc_scan/session/retrieve/generated_text_data_check_response.rb +12 -0
- data/lib/yoti/doc_scan/session/retrieve/get_session_result.rb +113 -0
- data/lib/yoti/doc_scan/session/retrieve/id_document_resource_response.rb +52 -0
- data/lib/yoti/doc_scan/session/retrieve/liveness_check_response.rb +12 -0
- data/lib/yoti/doc_scan/session/retrieve/liveness_resource_response.rb +24 -0
- data/lib/yoti/doc_scan/session/retrieve/media_response.rb +38 -0
- data/lib/yoti/doc_scan/session/retrieve/page_response.rb +27 -0
- data/lib/yoti/doc_scan/session/retrieve/recommendation_response.rb +34 -0
- data/lib/yoti/doc_scan/session/retrieve/report_response.rb +31 -0
- data/lib/yoti/doc_scan/session/retrieve/resource_container.rb +50 -0
- data/lib/yoti/doc_scan/session/retrieve/resource_response.rb +39 -0
- data/lib/yoti/doc_scan/session/retrieve/task_response.rb +87 -0
- data/lib/yoti/doc_scan/session/retrieve/text_data_check_response.rb +12 -0
- data/lib/yoti/doc_scan/session/retrieve/text_extraction_task_response.rb +18 -0
- data/lib/yoti/doc_scan/session/retrieve/zoom_liveness_resource_response.rb +33 -0
- data/lib/yoti/doc_scan/support/supported_documents.rb +60 -0
- data/lib/yoti/dynamic_share_service/extension/thirdparty_attribute_extension.rb +1 -1
- data/lib/yoti/dynamic_share_service/policy/dynamic_policy.rb +4 -4
- data/lib/yoti/dynamic_share_service/share_url.rb +26 -33
- data/lib/yoti/errors.rb +17 -2
- data/lib/yoti/http/aml_check_request.rb +12 -6
- data/lib/yoti/http/payloads/aml_address.rb +4 -0
- data/lib/yoti/http/payloads/aml_profile.rb +7 -1
- data/lib/yoti/http/profile_request.rb +11 -6
- data/lib/yoti/http/request.rb +218 -18
- data/lib/yoti/http/signed_request.rb +13 -4
- data/lib/yoti/ssl.rb +2 -2
- data/lib/yoti/util/anchor_processor.rb +1 -1
- data/lib/yoti/util/validation.rb +41 -0
- data/lib/yoti/version.rb +1 -1
- data/rubocop.yml +9 -1
- data/yoti.gemspec +1 -2
- metadata +49 -18
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 02fe8b8e97eb660a8f100add12f7a07591fd78c39a0b476ce386b01af9d8c18e
|
4
|
+
data.tar.gz: b37386c172ecf56164d5e8b18129c41698444459e4611b35e8aeda4da9176287
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 36f47a7c8728ccdde726c67d7ecde1282051f128e63ffd685c6981634d660bba98ff7de9c0aed53dee950112a392978c5ffce44d3a130d16d7487eb5fd22431c
|
7
|
+
data.tar.gz: bbbee64ecc44ce41a204c8109fb673339972886d5818db20d3952009b76fedf12222e705b7eb090c4da0fb0f9c8375fc4402e0ed9c595a8a72974e3f37ea5397
|
data/README.md
CHANGED
@@ -1,6 +1,10 @@
|
|
1
1
|
# Yoti Ruby SDK
|
2
2
|
|
3
3
|
[](https://travis-ci.com/getyoti/yoti-ruby-sdk)
|
4
|
+
[](https://sonarcloud.io/dashboard?id=getyoti%3Aruby)
|
5
|
+
[](https://sonarcloud.io/dashboard?id=getyoti%3Aruby)
|
6
|
+
[](https://sonarcloud.io/dashboard?id=getyoti%3Aruby)
|
7
|
+
[](https://sonarcloud.io/dashboard?id=getyoti%3Aruby)
|
4
8
|
|
5
9
|
Welcome to the Yoti Ruby SDK. This repository contains the tools you need to quickly integrate your Ruby back-end with Yoti so that your users can share their identity details with your application in a secure and trusted way.
|
6
10
|
|
data/Rakefile
CHANGED
@@ -14,14 +14,6 @@ RSpec::Core::RakeTask.new(:test_generators) do |t|
|
|
14
14
|
t.pattern = ['spec/generators']
|
15
15
|
end
|
16
16
|
|
17
|
-
################################
|
18
|
-
# Coveralls #
|
19
|
-
################################
|
20
|
-
|
21
|
-
require 'coveralls/rake/task'
|
22
|
-
Coveralls::RakeTask.new
|
23
|
-
task test_with_coveralls: [:spec, 'coveralls:push']
|
24
|
-
|
25
17
|
################################
|
26
18
|
# Rubocop #
|
27
19
|
################################
|
data/lib/yoti.rb
CHANGED
@@ -18,6 +18,7 @@ require_relative 'yoti/data_type/application_profile'
|
|
18
18
|
require_relative 'yoti/data_type/profile'
|
19
19
|
require_relative 'yoti/data_type/attribute'
|
20
20
|
require_relative 'yoti/data_type/signed_time_stamp'
|
21
|
+
require_relative 'yoti/data_type/media'
|
21
22
|
require_relative 'yoti/data_type/image'
|
22
23
|
require_relative 'yoti/data_type/image_jpeg'
|
23
24
|
require_relative 'yoti/data_type/image_png'
|
@@ -26,7 +27,8 @@ require_relative 'yoti/data_type/document_details'
|
|
26
27
|
|
27
28
|
require_relative 'yoti/util/age_processor'
|
28
29
|
require_relative 'yoti/util/anchor_processor'
|
29
|
-
require_relative 'yoti/util/log
|
30
|
+
require_relative 'yoti/util/log'
|
31
|
+
require_relative 'yoti/util/validation'
|
30
32
|
|
31
33
|
require_relative 'yoti/activity_details'
|
32
34
|
require_relative 'yoti/client'
|
@@ -47,6 +49,53 @@ require_relative 'yoti/dynamic_share_service/extension/thirdparty_attribute_exte
|
|
47
49
|
require_relative 'yoti/share/extra_data'
|
48
50
|
require_relative 'yoti/share/attribute_issuance_details'
|
49
51
|
|
52
|
+
require_relative 'yoti/doc_scan/client'
|
53
|
+
require_relative 'yoti/doc_scan/constants'
|
54
|
+
|
55
|
+
require_relative 'yoti/doc_scan/session/create/create_session_result'
|
56
|
+
require_relative 'yoti/doc_scan/session/create/requested_check'
|
57
|
+
require_relative 'yoti/doc_scan/session/create/requested_document_authenticity_check'
|
58
|
+
require_relative 'yoti/doc_scan/session/create/requested_face_match_check'
|
59
|
+
require_relative 'yoti/doc_scan/session/create/requested_liveness_check'
|
60
|
+
require_relative 'yoti/doc_scan/session/create/requested_task'
|
61
|
+
require_relative 'yoti/doc_scan/session/create/requested_text_extraction_task'
|
62
|
+
require_relative 'yoti/doc_scan/session/create/document_filter'
|
63
|
+
require_relative 'yoti/doc_scan/session/create/document_restrictions_filter'
|
64
|
+
require_relative 'yoti/doc_scan/session/create/orthogonal_restrictions_filter'
|
65
|
+
require_relative 'yoti/doc_scan/session/create/required_document'
|
66
|
+
require_relative 'yoti/doc_scan/session/create/required_id_document'
|
67
|
+
require_relative 'yoti/doc_scan/session/create/sdk_config'
|
68
|
+
require_relative 'yoti/doc_scan/session/create/notification_config'
|
69
|
+
require_relative 'yoti/doc_scan/session/create/session_specification'
|
70
|
+
|
71
|
+
require_relative 'yoti/doc_scan/session/retrieve/check_response'
|
72
|
+
require_relative 'yoti/doc_scan/session/retrieve/resource_response'
|
73
|
+
require_relative 'yoti/doc_scan/session/retrieve/authenticity_check_response'
|
74
|
+
require_relative 'yoti/doc_scan/session/retrieve/breakdown_response'
|
75
|
+
require_relative 'yoti/doc_scan/session/retrieve/details_response'
|
76
|
+
require_relative 'yoti/doc_scan/session/retrieve/document_fields_response'
|
77
|
+
require_relative 'yoti/doc_scan/session/retrieve/face_map_response'
|
78
|
+
require_relative 'yoti/doc_scan/session/retrieve/face_match_check_response'
|
79
|
+
require_relative 'yoti/doc_scan/session/retrieve/frame_response'
|
80
|
+
require_relative 'yoti/doc_scan/session/retrieve/generated_check_response'
|
81
|
+
require_relative 'yoti/doc_scan/session/retrieve/generated_media'
|
82
|
+
require_relative 'yoti/doc_scan/session/retrieve/generated_text_data_check_response'
|
83
|
+
require_relative 'yoti/doc_scan/session/retrieve/get_session_result'
|
84
|
+
require_relative 'yoti/doc_scan/session/retrieve/id_document_resource_response'
|
85
|
+
require_relative 'yoti/doc_scan/session/retrieve/liveness_check_response'
|
86
|
+
require_relative 'yoti/doc_scan/session/retrieve/liveness_resource_response'
|
87
|
+
require_relative 'yoti/doc_scan/session/retrieve/media_response'
|
88
|
+
require_relative 'yoti/doc_scan/session/retrieve/page_response'
|
89
|
+
require_relative 'yoti/doc_scan/session/retrieve/recommendation_response'
|
90
|
+
require_relative 'yoti/doc_scan/session/retrieve/report_response'
|
91
|
+
require_relative 'yoti/doc_scan/session/retrieve/resource_container'
|
92
|
+
require_relative 'yoti/doc_scan/session/retrieve/task_response'
|
93
|
+
require_relative 'yoti/doc_scan/session/retrieve/text_data_check_response'
|
94
|
+
require_relative 'yoti/doc_scan/session/retrieve/text_extraction_task_response'
|
95
|
+
require_relative 'yoti/doc_scan/session/retrieve/zoom_liveness_resource_response'
|
96
|
+
|
97
|
+
require_relative 'yoti/doc_scan/support/supported_documents'
|
98
|
+
|
50
99
|
# The main module namespace of the Yoti gem
|
51
100
|
module Yoti
|
52
101
|
class << self
|
data/lib/yoti/client.rb
CHANGED
@@ -1,15 +1,17 @@
|
|
1
1
|
module Yoti
|
2
2
|
#
|
3
|
-
# Handles all the publicly
|
4
|
-
#
|
3
|
+
# Handles all the publicly accessible Yoti methods for
|
4
|
+
# getting data using an encrypted connect token
|
5
5
|
#
|
6
6
|
module Client
|
7
7
|
#
|
8
8
|
# Performs all the steps required to get the decrypted profile from an API request
|
9
9
|
#
|
10
|
-
# @param
|
10
|
+
# @param [String] encrypted_connect_token
|
11
|
+
# Token provided as a base 64 string
|
11
12
|
#
|
12
|
-
# @return [
|
13
|
+
# @return [ActivityDetails]
|
14
|
+
# An ActivityDetails instance encapsulating the user profile
|
13
15
|
#
|
14
16
|
def self.get_activity_details(encrypted_connect_token)
|
15
17
|
receipt = Yoti::ProfileRequest.new(encrypted_connect_token).receipt
|
@@ -22,6 +24,13 @@ module Yoti
|
|
22
24
|
ActivityDetails.new(receipt, user_profile, application_profile, extra_data)
|
23
25
|
end
|
24
26
|
|
27
|
+
#
|
28
|
+
# Perform AML check
|
29
|
+
#
|
30
|
+
# @param [AmlProfile] aml_profile
|
31
|
+
#
|
32
|
+
# @return [<Hash>]
|
33
|
+
#
|
25
34
|
def self.aml_check(aml_profile)
|
26
35
|
Yoti::AmlCheckRequest.new(aml_profile).response
|
27
36
|
end
|
data/lib/yoti/configuration.rb
CHANGED
@@ -3,7 +3,7 @@ module Yoti
|
|
3
3
|
attr_accessor :client_sdk_id, :key_file_path, :key, :sdk_identifier,
|
4
4
|
:api_url, :api_port, :api_version
|
5
5
|
|
6
|
-
attr_writer :api_endpoint
|
6
|
+
attr_writer :api_endpoint, :doc_scan_api_endpoint
|
7
7
|
|
8
8
|
# Set config variables by using a configuration block
|
9
9
|
def initialize
|
@@ -18,7 +18,12 @@ module Yoti
|
|
18
18
|
|
19
19
|
# @return [String] the API endpoint for the selected API version
|
20
20
|
def api_endpoint
|
21
|
-
@api_endpoint ||= "#{@api_url}/api/#{@api_version}"
|
21
|
+
@api_endpoint ||= ENV['YOTI_API_URL'] || "#{@api_url}/api/#{@api_version}"
|
22
|
+
end
|
23
|
+
|
24
|
+
# @return [String] the Doc Scan API endpoint
|
25
|
+
def doc_scan_api_endpoint
|
26
|
+
@doc_scan_api_endpoint ||= ENV['YOTI_DOC_SCAN_API_URL'] || "#{@api_url}/idverify/#{@api_version}"
|
22
27
|
end
|
23
28
|
|
24
29
|
# Validates the configuration values set in instance variables
|
@@ -37,7 +37,7 @@ module Yoti
|
|
37
37
|
attr_reader :age
|
38
38
|
|
39
39
|
#
|
40
|
-
# @param [Yoti::Attribute]
|
40
|
+
# @param [Yoti::Attribute] attribute
|
41
41
|
#
|
42
42
|
def initialize(attribute)
|
43
43
|
raise(ArgumentError, "'#{attribute.name}' is not a valid age verification") unless /^[^:]+:(?!.*:)[0-9]+$/.match?(attribute.name)
|
data/lib/yoti/data_type/image.rb
CHANGED
@@ -1,19 +1,11 @@
|
|
1
|
-
|
1
|
+
# frozen_string_literal: true
|
2
2
|
|
3
3
|
module Yoti
|
4
|
-
class Image
|
5
|
-
attr_reader :content
|
6
|
-
attr_reader :mime_type
|
7
|
-
|
4
|
+
class Image < Media
|
8
5
|
def initialize(content, mime_type)
|
9
|
-
raise(TypeError,
|
10
|
-
|
11
|
-
@content = content
|
12
|
-
@mime_type = mime_type
|
13
|
-
end
|
6
|
+
raise(TypeError, "#{self.class} is an abstract class, so cannot be instantiated") if self.class == Image
|
14
7
|
|
15
|
-
|
16
|
-
"data:#{mime_type};base64,#{Base64.strict_encode64(content)}"
|
8
|
+
super(content, mime_type)
|
17
9
|
end
|
18
10
|
end
|
19
11
|
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'base64'
|
4
|
+
|
5
|
+
module Yoti
|
6
|
+
class Media
|
7
|
+
attr_reader :content
|
8
|
+
attr_reader :mime_type
|
9
|
+
|
10
|
+
def initialize(content, mime_type)
|
11
|
+
@content = content
|
12
|
+
@mime_type = mime_type
|
13
|
+
end
|
14
|
+
|
15
|
+
def base64_content
|
16
|
+
"data:#{mime_type};base64,#{Base64.strict_encode64(content)}"
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,163 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Yoti
|
4
|
+
module DocScan
|
5
|
+
class Client
|
6
|
+
class << self
|
7
|
+
#
|
8
|
+
# Creates a Doc Scan session using the supplied session specification
|
9
|
+
#
|
10
|
+
# @param [Yoti::DocScan::Session::Create::SessionSpecification] session_specification
|
11
|
+
#
|
12
|
+
# @return [Yoti::DocScan::Session::Create::CreateSessionResult]
|
13
|
+
#
|
14
|
+
def create_session(session_specification)
|
15
|
+
Validation.assert_is_a(
|
16
|
+
Yoti::DocScan::Session::Create::SessionSpecification,
|
17
|
+
session_specification,
|
18
|
+
'session_specification'
|
19
|
+
)
|
20
|
+
|
21
|
+
response = create_request
|
22
|
+
.with_http_method('POST')
|
23
|
+
.with_endpoint('sessions')
|
24
|
+
.with_payload(session_specification)
|
25
|
+
.with_query_param('sdkId', Yoti.configuration.client_sdk_id)
|
26
|
+
.build
|
27
|
+
.execute
|
28
|
+
|
29
|
+
Yoti::DocScan::Session::Create::CreateSessionResult.new(JSON.parse(response.body))
|
30
|
+
end
|
31
|
+
|
32
|
+
#
|
33
|
+
# Retrieves the state of a previously created Yoti Doc Scan session
|
34
|
+
#
|
35
|
+
# @param [String] session_id
|
36
|
+
#
|
37
|
+
# @return [Yoti::DocScan::Session::Retrieve::GetSessionResult]
|
38
|
+
#
|
39
|
+
def get_session(session_id)
|
40
|
+
Validation.assert_is_a(String, session_id, 'session_id')
|
41
|
+
|
42
|
+
response = create_request
|
43
|
+
.with_http_method('GET')
|
44
|
+
.with_endpoint(session_path(session_id))
|
45
|
+
.with_query_param('sdkId', Yoti.configuration.client_sdk_id)
|
46
|
+
.build
|
47
|
+
.execute
|
48
|
+
|
49
|
+
Yoti::DocScan::Session::Retrieve::GetSessionResult.new(JSON.parse(response.body))
|
50
|
+
end
|
51
|
+
|
52
|
+
#
|
53
|
+
# Deletes a previously created Yoti Doc Scan session and all
|
54
|
+
# of its related resources
|
55
|
+
#
|
56
|
+
# @param [String] session_id
|
57
|
+
#
|
58
|
+
def delete_session(session_id)
|
59
|
+
Validation.assert_is_a(String, session_id, 'session_id')
|
60
|
+
|
61
|
+
create_request
|
62
|
+
.with_http_method('DELETE')
|
63
|
+
.with_endpoint(session_path(session_id))
|
64
|
+
.with_query_param('sdkId', Yoti.configuration.client_sdk_id)
|
65
|
+
.build
|
66
|
+
.execute
|
67
|
+
end
|
68
|
+
|
69
|
+
#
|
70
|
+
# Retrieves media related to a Yoti Doc Scan session based
|
71
|
+
# on the supplied media ID
|
72
|
+
#
|
73
|
+
# @param [String] session_id
|
74
|
+
# @param [String] media_id
|
75
|
+
#
|
76
|
+
# @return [Yoti::Media]
|
77
|
+
#
|
78
|
+
def get_media_content(session_id, media_id)
|
79
|
+
Validation.assert_is_a(String, session_id, 'session_id')
|
80
|
+
Validation.assert_is_a(String, media_id, 'media_id')
|
81
|
+
|
82
|
+
response = create_request
|
83
|
+
.with_http_method('GET')
|
84
|
+
.with_endpoint(media_path(session_id, media_id))
|
85
|
+
.with_query_param('sdkId', Yoti.configuration.client_sdk_id)
|
86
|
+
.build
|
87
|
+
.execute
|
88
|
+
|
89
|
+
Yoti::Media.new(
|
90
|
+
response.body,
|
91
|
+
response.get_fields('content-type')[0]
|
92
|
+
)
|
93
|
+
end
|
94
|
+
|
95
|
+
#
|
96
|
+
# Deletes media related to a Yoti Doc Scan session based
|
97
|
+
# on the supplied media ID
|
98
|
+
#
|
99
|
+
# @param [String] session_id
|
100
|
+
# @param [String] media_id
|
101
|
+
#
|
102
|
+
def delete_media_content(session_id, media_id)
|
103
|
+
Validation.assert_is_a(String, session_id, 'session_id')
|
104
|
+
Validation.assert_is_a(String, media_id, 'media_id')
|
105
|
+
|
106
|
+
create_request
|
107
|
+
.with_http_method('DELETE')
|
108
|
+
.with_endpoint(media_path(session_id, media_id))
|
109
|
+
.with_query_param('sdkId', Yoti.configuration.client_sdk_id)
|
110
|
+
.build
|
111
|
+
.execute
|
112
|
+
end
|
113
|
+
|
114
|
+
#
|
115
|
+
# Gets a list of supported documents.
|
116
|
+
#
|
117
|
+
# @return [Yoti::DocScan::Support::SupportedDocumentsResponse]
|
118
|
+
#
|
119
|
+
def supported_documents
|
120
|
+
response = create_request
|
121
|
+
.with_http_method('GET')
|
122
|
+
.with_endpoint('supported-documents')
|
123
|
+
.build
|
124
|
+
.execute
|
125
|
+
|
126
|
+
Yoti::DocScan::Support::SupportedDocumentsResponse.new(JSON.parse(response.body))
|
127
|
+
end
|
128
|
+
|
129
|
+
private
|
130
|
+
|
131
|
+
#
|
132
|
+
# @param [String] session_id
|
133
|
+
#
|
134
|
+
# @return [String]
|
135
|
+
#
|
136
|
+
def session_path(session_id)
|
137
|
+
"sessions/#{session_id}"
|
138
|
+
end
|
139
|
+
|
140
|
+
#
|
141
|
+
# @param [String] session_id
|
142
|
+
# @param [String] media_id
|
143
|
+
#
|
144
|
+
# @return [String]
|
145
|
+
#
|
146
|
+
def media_path(session_id, media_id)
|
147
|
+
"#{session_path(session_id)}/media/#{media_id}/content"
|
148
|
+
end
|
149
|
+
|
150
|
+
#
|
151
|
+
# Create a base Doc Scan request
|
152
|
+
#
|
153
|
+
# @return [Yoti::Request]
|
154
|
+
#
|
155
|
+
def create_request
|
156
|
+
Yoti::Request
|
157
|
+
.builder
|
158
|
+
.with_base_url(Yoti.configuration.doc_scan_api_endpoint)
|
159
|
+
end
|
160
|
+
end
|
161
|
+
end
|
162
|
+
end
|
163
|
+
end
|
@@ -0,0 +1,28 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Yoti
|
4
|
+
module DocScan
|
5
|
+
class Constants
|
6
|
+
ID_DOCUMENT_AUTHENTICITY = 'ID_DOCUMENT_AUTHENTICITY'
|
7
|
+
ID_DOCUMENT_TEXT_DATA_CHECK = 'ID_DOCUMENT_TEXT_DATA_CHECK'
|
8
|
+
ID_DOCUMENT_FACE_MATCH = 'ID_DOCUMENT_FACE_MATCH'
|
9
|
+
LIVENESS = 'LIVENESS'
|
10
|
+
ID_DOCUMENT_TEXT_DATA_EXTRACTION = 'ID_DOCUMENT_TEXT_DATA_EXTRACTION'
|
11
|
+
ID_DOCUMENT = 'ID_DOCUMENT'
|
12
|
+
ORTHOGONAL_RESTRICTIONS = 'ORTHOGONAL_RESTRICTIONS'
|
13
|
+
DOCUMENT_RESTRICTIONS = 'DOCUMENT_RESTRICTIONS'
|
14
|
+
INCLUDE = 'WHITELIST'
|
15
|
+
EXCLUDE = 'BLACKLIST'
|
16
|
+
ALWAYS = 'ALWAYS'
|
17
|
+
FALLBACK = 'FALLBACK'
|
18
|
+
NEVER = 'NEVER'
|
19
|
+
ZOOM = 'ZOOM'
|
20
|
+
CAMERA = 'CAMERA'
|
21
|
+
CAMERA_AND_UPLOAD = 'CAMERA_AND_UPLOAD'
|
22
|
+
RESOURCE_UPDATE = 'RESOURCE_UPDATE'
|
23
|
+
TASK_COMPLETION = 'TASK_COMPLETION'
|
24
|
+
CHECK_COMPLETION = 'CHECK_COMPLETION'
|
25
|
+
SESSION_COMPLETION = 'SESSION_COMPLETION'
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
@@ -0,0 +1,50 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Yoti
|
4
|
+
module DocScan
|
5
|
+
module Session
|
6
|
+
module Create
|
7
|
+
#
|
8
|
+
# The response to a successful CreateSession call
|
9
|
+
#
|
10
|
+
class CreateSessionResult
|
11
|
+
#
|
12
|
+
# Returns the time-to-live (TTL) for the client session
|
13
|
+
# token for the created session
|
14
|
+
#
|
15
|
+
# @return [Integer]
|
16
|
+
#
|
17
|
+
attr_reader :client_session_token_ttl
|
18
|
+
|
19
|
+
#
|
20
|
+
# Returns the client session token for the created session
|
21
|
+
#
|
22
|
+
# @return [String]
|
23
|
+
#
|
24
|
+
attr_reader :client_session_token
|
25
|
+
|
26
|
+
#
|
27
|
+
# Session ID of the created session
|
28
|
+
#
|
29
|
+
# @return [String]
|
30
|
+
#
|
31
|
+
attr_reader :session_id
|
32
|
+
|
33
|
+
#
|
34
|
+
# @param [Hash] response
|
35
|
+
#
|
36
|
+
def initialize(response)
|
37
|
+
Validation.assert_is_a(Integer, response['client_session_token_ttl'], 'client_session_token_ttl', true)
|
38
|
+
@client_session_token_ttl = response['client_session_token_ttl']
|
39
|
+
|
40
|
+
Validation.assert_is_a(String, response['client_session_token'], 'client_session_token', true)
|
41
|
+
@client_session_token = response['client_session_token']
|
42
|
+
|
43
|
+
Validation.assert_is_a(String, response['session_id'], 'session_id', true)
|
44
|
+
@session_id = response['session_id']
|
45
|
+
end
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|