Class: SmileIdentityCore::WebApi

Inherits:
Object
  • Object
show all
Defined in:
lib/smile-identity-core/web_api.rb

Overview

Allows Identity verifications of ids with images

Instance Method Summary collapse

Constructor Details

#initialize(partner_id, default_callback, api_key, sid_server) ⇒ WebApi

Returns a new instance of WebApi.



14
15
16
17
18
19
20
# File 'lib/smile-identity-core/web_api.rb', line 14

def initialize(partner_id, default_callback, api_key, sid_server)
  @api_key = api_key
  @callback_url = default_callback
  @partner_id = partner_id.to_s
  @sid_server = sid_server
  @url = SmileIdentityCore::ENV.determine_url(sid_server)
end

Instance Method Details

#get_job_status(partner_params, options) ⇒ Object



42
43
44
45
46
47
48
49
50
51
# File 'lib/smile-identity-core/web_api.rb', line 42

def get_job_status(partner_params, options)
  partner_params = symbolize_keys partner_params
  @timestamp = Time.now.to_i

  user_id = partner_params[:user_id]
  job_id = partner_params[:job_id]

  utilities = SmileIdentityCore::Utilities.new(@partner_id, @api_key, @sid_server)
  utilities.get_job_status(user_id, job_id, options)
end

#get_web_token(request_params) ⇒ Object

Raises:

  • (ArgumentError)


119
120
121
122
123
124
125
126
127
128
129
130
131
132
# File 'lib/smile-identity-core/web_api.rb', line 119

def get_web_token(request_params)
  raise ArgumentError, 'Please ensure that you send through request params' if request_params.nil?
  raise ArgumentError, 'Request params needs to be an object' unless request_params.is_a?(Hash)

  callback_url = request_params[:callback_url] || @callback_url
  request_params[:callback_url] = callback_url

  keys = %i[user_id job_id product callback_url]
  blank_keys = get_blank_keys(keys, request_params)
  error_message = "#{blank_keys.join(', ')} #{blank_keys.length > 1 ? 'are' : 'is'} required to get a web token"
  raise ArgumentError, error_message unless blank_keys.empty?

  request_web_token(request_params)
end

#id_info=(id_info) ⇒ Object



81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
# File 'lib/smile-identity-core/web_api.rb', line 81

def id_info=(id_info)
  updated_id_info = id_info.nil? ? {} : id_info

  # if it doesnt exist, set it false
  updated_id_info[:entered] = 'false' if !updated_id_info.key?(:entered) || id_info[:entered].empty?

  # if it's a boolean
  updated_id_info[:entered] = id_info[:entered].to_s

  is_jt6 = @partner_params[:job_type].to_i == JobType::DOCUMENT_VERIFICATION
  is_jt11 = @partner_params[:job_type].to_i == JobType::ENHANCED_DOCUMENT_VERIFICATION
  keys = if is_jt6 || is_jt11
           %i[country]
         else
           %i[country id_type id_number]
         end
  keys.push(:id_type) if is_jt11

  if updated_id_info[:entered] == 'true' || is_jt6 || is_jt11
    keys.each do |key|
      raise ArgumentError, "Please make sure that #{key} is included in the id_info" if id_info[key].to_s.empty?
    end
  end

  @id_info = updated_id_info
end

#images=(images) ⇒ Object

Raises:

  • (ArgumentError)


68
69
70
71
72
73
74
75
76
77
78
79
# File 'lib/smile-identity-core/web_api.rb', line 68

def images=(images)
  raise ArgumentError, 'Please ensure that you send through image details' if images.nil?

  raise ArgumentError, 'Image details needs to be an array' unless images.is_a?(Array)

  # all job types require atleast a selfie
  if images.empty? || images.none? { |h| (h[:image_type_id]).zero? || h[:image_type_id] == 2 }
    raise ArgumentError, 'You need to send through at least one selfie image'
  end

  @images = images.map { |image| symbolize_keys image }
end

#options=(options) ⇒ Object



108
109
110
111
112
113
114
115
116
117
# File 'lib/smile-identity-core/web_api.rb', line 108

def options=(options)
  updated_options = options || {}

  updated_options[:optional_callback] = check_string(:optional_callback, options)
  updated_options[:return_job_status] = check_boolean(:return_job_status, options)
  updated_options[:return_image_links] = check_boolean(:return_image_links, options)
  updated_options[:return_history] = check_boolean(:return_history, options)

  @options = updated_options
end

#partner_params=(partner_params) ⇒ Object

Raises:

  • (ArgumentError)


53
54
55
56
57
58
59
60
61
62
63
64
65
66
# File 'lib/smile-identity-core/web_api.rb', line 53

def partner_params=(partner_params)
  raise ArgumentError, 'Please ensure that you send through partner params' if partner_params.nil?

  raise ArgumentError, 'Partner params needs to be a hash' unless partner_params.is_a?(Hash)

  %i[user_id job_id job_type].each do |key|
    if partner_params[key].to_s.empty?
      raise ArgumentError,
        "Please make sure that #{key} is included in the partner params"
    end
  end

  @partner_params = partner_params
end

#submit_job(partner_params, images, id_info, options) ⇒ Object



22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/smile-identity-core/web_api.rb', line 22

def submit_job(partner_params, images, id_info, options)
  self.partner_params = symbolize_keys partner_params

  if [JobType::ENHANCED_KYC, JobType::BUSINESS_VERIFICATION].include?(@partner_params[:job_type].to_i)
    return SmileIdentityCore::IDApi.new(@partner_id, @api_key, @sid_server).submit_job(partner_params, id_info)
  end

  self.images = images
  self.id_info = symbolize_keys id_info
  self.options = symbolize_keys options

  @callback_url = @options[:optional_callback] if @options[:optional_callback]&.length&.positive?

  validate_enroll_with_id if @partner_params[:job_type].to_i == 1

  validate_return_data

  setup_requests
end