smile-identity-core 2.1.1 → 2.2.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: cfb7b18b264e3489d0e51f3f9cae6c8557ef535fbf3b348e6b843695c748d76f
4
- data.tar.gz: 0f1c92749d1a139f02bd8216136eab00842d718425e45a5ffbe7174a69d1cf8a
3
+ metadata.gz: 1cd1f7ec1f9a1c9418ce0e3d5501eb8e32fcfaf029da9b9188145a16dbbdf70b
4
+ data.tar.gz: 4bb53eafd0b561c05599a33fda6450099ab7208d1800a7ed19f5f304745e9985
5
5
  SHA512:
6
- metadata.gz: 3d66bd0c015e777468b738e58116219ae48dfa99a98ef2b8a8d53abe2c7d6cc07804e23316aeb39aa0affc1c8be03307d4378c088831e37bb5084910d180713c
7
- data.tar.gz: 5eec195935a7fbd2eaf0f85930f8ebbe5578a6be874ff7288b7cc43c120cae9e2666f40eaf043245824657bee3988a4deda19fc93fd59f35def7bb60430454ab
6
+ metadata.gz: fd09fe7c7e6117497dada79d8132eae2b08e58fd36def75626cd8883f151138d54868c16eb3b5ad5f45977c5d0fe6c1e01e9184350d8147bde3dee6513da0ea2
7
+ data.tar.gz: b442ba3c424a3d0eaf5f2fedba6596825da09053bf4d4a9221d8999c5e18c7359dde3c8abc2db6f23154d0e306cf220aa654a4ad3e4c1d9afe5fcb34f5e1038e
@@ -11,6 +11,8 @@ jobs:
11
11
  runs-on: ubuntu-latest
12
12
  steps:
13
13
  - uses: actions/checkout@v3
14
+ with:
15
+ set-safe-directory: false
14
16
  - name: Release Gem
15
17
  uses: cadwallion/publish-rubygems-action@master
16
18
  env:
data/CHANGELOG.md CHANGED
@@ -6,6 +6,16 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
6
6
 
7
7
  ## [Unreleased]
8
8
 
9
+ ## [2.2.0] - 2023-04-05
10
+ ### Added
11
+ - Adds support for AML check
12
+ ### Changed
13
+ - Fix business verification docstrings
14
+
15
+ ## [2.1.2] - 2023-03-09
16
+ ### Changed
17
+ - Fix `get_web_token` by ensuring signature merges to request_params
18
+
9
19
  ## [2.1.1] - 2022-12-13
10
20
  ### Added
11
21
  - Adds UPDATE_PHOTO and COMPARE_USER_INFO to JobType
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- smile-identity-core (2.1.1)
4
+ smile-identity-core (2.2.0)
5
5
  rubyzip (~> 1.2, >= 1.2.3)
6
6
  typhoeus (~> 1.0, >= 1.0.1)
7
7
 
@@ -0,0 +1,25 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'smile-identity-core'
4
+ require 'securerandom'
5
+ # See https://docs.smileidentity.com/products/for-individuals-kyc/aml-check for
6
+ # more information on business verification
7
+
8
+ # Initialize
9
+ partner_id = '' # login to the Smile Identity portal to view your partner id
10
+ api_key = '' # copy your API key from the Smile Identity portal
11
+ sid_server = '0' # Use 0 for the sandbox server, use 1 for production server
12
+
13
+ connection = SmileIdentityCore::AmlCheck.new(partner_id, api_key, sid_server)
14
+
15
+ request_params = {
16
+ job_id: "job-#{SecureRandom.uuid}",
17
+ user_id: "user-#{SecureRandom.uuid}",
18
+ full_name: 'John Leo Doe',
19
+ countries: ['US'],
20
+ birth_year: '1984', # yyyy
21
+ search_existing_user: false
22
+ }
23
+
24
+ # Submit the job
25
+ pp connection.submit_job(request_params)
@@ -0,0 +1,26 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'smile-identity-core'
4
+ require 'random/formatter'
5
+
6
+ # See https://docs.smileidentity.com/server-to-server/ruby/products/biometric-kyc for
7
+ # how to setup and retrieve configuation values for the WebApi class.
8
+
9
+ # Initialize
10
+ partner_id = '<Put your partner ID here>'; # login to the Smile Identity portal to view your partner id
11
+ default_callback = '<Put your default callback url here>'
12
+ api_key = '<Put your API key here>'; # copy your API key from the Smile Identity portal
13
+ sid_server = '<0 | 1>'; # Use '0' for the sandbox server, use '1' for production server
14
+
15
+ connection = SmileIdentityCore::WebApi.new(partner_id, default_callback, api_key, sid_server)
16
+
17
+ # Set up request payload
18
+ request_params = {
19
+ user_id: '<your unique user id>',
20
+ job_id: '<your unique job id>',
21
+ product: '<smile identity product type>',
22
+ callback_url: '<your callback url>'
23
+ }
24
+
25
+ # Get web token
26
+ connection.get_web_token(request_params)
@@ -0,0 +1,91 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'json'
4
+ require 'typhoeus'
5
+ require_relative 'validations'
6
+
7
+ module SmileIdentityCore
8
+ ##
9
+ # The AML Check product allows you to perform due diligence on your customers by screening them against
10
+ # global watchlists, politically exposed persons lists, and adverse media publications.
11
+ # For more info visit https://docs.smileidentity.com/products/for-individuals-kyc/aml-check
12
+ class AmlCheck
13
+ include Validations
14
+
15
+ ###
16
+ # Submit AML
17
+ # @param [String] :partner_id A unique number assigned by Smile ID to your account. Can be found in the portal
18
+ # @param [String] :api_key your API key from the Smile Identity portal
19
+ # @param [String] :sid_server Use 0 for the sandbox server, use 1 for production server
20
+ def initialize(partner_id, api_key, sid_server)
21
+ @partner_id = partner_id.to_s
22
+ @api_key = api_key
23
+ @sid_server = sid_server
24
+ @url = if sid_server !~ URI::DEFAULT_PARSER.make_regexp
25
+ SmileIdentityCore::ENV::SID_SERVER_MAPPING[sid_server.to_s]
26
+ else
27
+ sid_server
28
+ end
29
+ end
30
+
31
+ # Submit AML
32
+ # @param [Hash] params the options to create a job with.
33
+ # @option opts [String] :job_id A unique value generated by you to track jobs on your end.
34
+ # @option opts [String] :user_id A unique value generated by you.
35
+ # @option opts [String] :full_name The full name of the customer.
36
+ # @option opts [String] :birth_year The customer’s year of birth, in the format yyyy
37
+ # @option opts [Array] :countries An array that takes the customer’s known nationalities in 2-character
38
+ # (ISO 3166-1 alpha-2) format e.g. Nigeria is NG, Kenya is KE, etc
39
+ # @option opts [boolean] :search_existing_user If you intend to re-use the name and year of birth
40
+ # of a user’s previous KYC job
41
+ # @option opts [Hash] :optional_info Any optional data, this will be returned
42
+ # in partner_params.
43
+ def submit_job(params)
44
+ @params = symbolize_keys(params)
45
+ @optional_info = @params[:optional_info]
46
+ submit_requests
47
+ end
48
+
49
+ private
50
+
51
+ def symbolize_keys(params)
52
+ params.is_a?(Hash) ? params.transform_keys(&:to_sym) : params
53
+ end
54
+
55
+ def build_payload
56
+ @payload = generate_signature
57
+ @payload.merge!(@params)
58
+ add_partner_info
59
+ add_sdk_info
60
+ @payload
61
+ end
62
+
63
+ def add_partner_info
64
+ @payload[:partner_id] = @partner_id
65
+ @payload[:job_type] = SmileIdentityCore::JobType::AML
66
+ @payload[:partner_params] = @optional_info if @optional_info
67
+ end
68
+
69
+ def add_sdk_info
70
+ @payload[:source_sdk] = SmileIdentityCore::SOURCE_SDK
71
+ @payload[:source_sdk_version] = SmileIdentityCore::VERSION
72
+ end
73
+
74
+ def generate_signature
75
+ SmileIdentityCore::Signature.new(@partner_id, @api_key).generate_signature
76
+ end
77
+
78
+ def submit_requests
79
+ request = Typhoeus::Request.new("#{@url}/aml", method: 'POST',
80
+ headers: { 'Content-Type' => 'application/json' },
81
+ body: build_payload.to_json)
82
+
83
+ request.on_complete do |response|
84
+ return response.body if response.success?
85
+
86
+ raise "#{response.code}: #{response.body}"
87
+ end
88
+ request.run
89
+ end
90
+ end
91
+ end
@@ -20,10 +20,9 @@ module SmileIdentityCore
20
20
 
21
21
  ###
22
22
  # Submit business verification
23
- # @param [Hash] partner_params the options to create a message with.
24
- # @option opts [String] :job_type The job type, this should be 7
25
- # @option opts [String] :job_id A unique value generated by you to track jobs on your end.
26
- # @option opts [String] :user_id A unique value generated by you.
23
+ # @param [String] :partner_id A unique number assigned by Smile ID to your account. Can be found in the portal
24
+ # @param [String] :api_key your API key from the Smile Identity portal
25
+ # @param [String] :sid_server Use 0 for the sandbox server, use 1 for production server
27
26
  def initialize(partner_id, api_key, sid_server)
28
27
  @partner_id = partner_id.to_s
29
28
  @api_key = api_key
@@ -22,5 +22,8 @@ module SmileIdentityCore
22
22
  UPDATE_PHOTO = 8
23
23
  # Compares document verification to an id check
24
24
  COMPARE_USER_INFO = 9
25
+ # Performs due diligence by screening against global watchlists,
26
+ # politically exposed persons lists, and adverse media publications
27
+ AML = 10
25
28
  end
26
29
  end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module SmileIdentityCore
4
- VERSION = '2.1.1'
4
+ VERSION = '2.2.0'
5
5
  SOURCE_SDK = 'Ruby'
6
6
  end
@@ -129,9 +129,9 @@ module SmileIdentityCore
129
129
  private
130
130
 
131
131
  def request_web_token(request_params)
132
- request_params
132
+ request_params = request_params
133
133
  .merge(SmileIdentityCore::Signature.new(@partner_id, @api_key).generate_signature(Time.now.to_s))
134
- .merge!(
134
+ .merge(
135
135
  { partner_id: @partner_id,
136
136
  source_sdk: SmileIdentityCore::SOURCE_SDK,
137
137
  source_sdk_version: SmileIdentityCore::VERSION }
@@ -1,14 +1,15 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'smile-identity-core/version'
4
- require 'smile-identity-core/web_api'
5
- require 'smile-identity-core/id_api'
6
- require 'smile-identity-core/signature'
7
- require 'smile-identity-core/utilities'
8
- require 'smile-identity-core/business_verification'
9
- require 'smile-identity-core/constants/env'
10
- require 'smile-identity-core/constants/image_type'
11
- require 'smile-identity-core/constants/job_type'
3
+ require_relative 'smile-identity-core/version'
4
+ require_relative 'smile-identity-core/web_api'
5
+ require_relative 'smile-identity-core/id_api'
6
+ require_relative 'smile-identity-core/aml_check'
7
+ require_relative 'smile-identity-core/signature'
8
+ require_relative 'smile-identity-core/utilities'
9
+ require_relative 'smile-identity-core/business_verification'
10
+ require_relative 'smile-identity-core/constants/env'
11
+ require_relative 'smile-identity-core/constants/image_type'
12
+ require_relative 'smile-identity-core/constants/job_type'
12
13
 
13
14
  module SmileIdentityCore
14
15
  class Error < StandardError; end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: smile-identity-core
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.1
4
+ version: 2.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Smile Identity
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-12-13 00:00:00.000000000 Z
11
+ date: 2023-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -168,6 +168,7 @@ files:
168
168
  - Rakefile
169
169
  - bin/console
170
170
  - bin/setup
171
+ - examples/aml_check.rb
171
172
  - examples/biometric_kyc.rb
172
173
  - examples/business_verification.rb
173
174
  - examples/document_verification.rb
@@ -177,8 +178,10 @@ files:
177
178
  - examples/example-project/README.md
178
179
  - examples/example-project/sample.env
179
180
  - examples/example-project/smart_bank.rb
181
+ - examples/get_web_token.rb
180
182
  - examples/smart_selfie_authentication.rb
181
183
  - lib/smile-identity-core.rb
184
+ - lib/smile-identity-core/aml_check.rb
182
185
  - lib/smile-identity-core/business_verification.rb
183
186
  - lib/smile-identity-core/constants/env.rb
184
187
  - lib/smile-identity-core/constants/image_type.rb
@@ -213,7 +216,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
213
216
  - !ruby/object:Gem::Version
214
217
  version: '0'
215
218
  requirements: []
216
- rubygems_version: 3.3.26
219
+ rubygems_version: 3.4.10
217
220
  signing_key:
218
221
  specification_version: 4
219
222
  summary: The Smile Identity Web API allows the user to access\ most of the features