class SmileIdentityCore::IDApi
Public Class Methods
new(partner_id, api_key, sid_server)
click to toggle source
# File lib/smile-identity-core/id_api.rb, line 4 def initialize(partner_id, api_key, sid_server) @partner_id = partner_id.to_s @api_key = api_key @sid_server = sid_server if !(sid_server =~ URI::regexp) sid_server_mapping = { 0 => 'https://3eydmgh10d.execute-api.us-west-2.amazonaws.com/test', 1 => 'https://la7am6gdm8.execute-api.us-west-2.amazonaws.com/prod' } @url = sid_server_mapping[sid_server.to_i] else @url = sid_server end end
Public Instance Methods
id_info=(id_info)
click to toggle source
# File lib/smile-identity-core/id_api.rb, line 52 def id_info=(id_info) updated_id_info = id_info if updated_id_info.nil? || updated_id_info.keys.length == 0 raise ArgumentError.new("Please make sure that id_info not empty or nil") end [:country, :id_type, :id_number].each do |key| unless updated_id_info[key] && !updated_id_info[key].nil? && !updated_id_info[key].empty? raise ArgumentError.new("Please make sure that #{key.to_s} is included in the id_info") end end @id_info = updated_id_info end
partner_params=(partner_params)
click to toggle source
# File lib/smile-identity-core/id_api.rb, line 34 def partner_params=(partner_params) if partner_params == nil raise ArgumentError.new('Please ensure that you send through partner params') end if !partner_params.is_a?(Hash) raise ArgumentError.new('Partner params needs to be a hash') end [:user_id, :job_id, :job_type].each do |key| unless partner_params[key] && !partner_params[key].nil? && !(partner_params[key].empty? if partner_params[key].is_a?(String)) raise ArgumentError.new("Please make sure that #{key.to_s} is included in the partner params") end end @partner_params = partner_params end
submit_job(partner_params, id_info)
click to toggle source
# File lib/smile-identity-core/id_api.rb, line 20 def submit_job(partner_params, id_info) self.partner_params = symbolize_keys partner_params @timestamp = Time.now.to_i self.id_info = symbolize_keys id_info if @partner_params[:job_type].to_i != 5 raise ArgumentError.new('Please ensure that you are setting your job_type to 5 to query ID Api') end return setup_requests end
Private Instance Methods
configure_json()
click to toggle source
# File lib/smile-identity-core/id_api.rb, line 101 def configure_json body = { timestamp: @timestamp, sec_key: determine_sec_key, partner_id: @partner_id, partner_params: @partner_params } body.merge!(@id_info) JSON.generate(body) end
determine_sec_key()
click to toggle source
# File lib/smile-identity-core/id_api.rb, line 113 def determine_sec_key @sec_key = SmileIdentityCore::Signature.new(@partner_id, @api_key).generate_sec_key(@timestamp)[:sec_key] end
setup_requests()
click to toggle source
# File lib/smile-identity-core/id_api.rb, line 75 def setup_requests url = "#{@url}/id_verification" request = Typhoeus::Request.new( url, method: 'POST', headers: {'Content-Type'=> "application/json"}, body: configure_json ) request.on_complete do |response| if response.success? return response.body elsif response.timed_out? raise "#{response.code.to_s}: #{response.body}" elsif response.code == 0 # Could not get an http response, something's wrong. raise "#{response.code.to_s}: #{response.body}" else # Received a non-successful http response. raise "#{response.code.to_s}: #{response.body}" end end request.run end
symbolize_keys(params)
click to toggle source
# File lib/smile-identity-core/id_api.rb, line 71 def symbolize_keys params (params.is_a?(Hash)) ? Hash[params.map{ |k, v| [k.to_sym, v] }] : params end