class Bigid::Bgcheck::Request

Public Class Methods

call(document:, document_type:, group:) click to toggle source
# File lib/bigid/bgcheck/request.rb, line 15
def self.call(document:, document_type:, group:)
  new.call(document: document, document_type: document_type, group: group)
end

Public Instance Methods

call(document:, document_type:, group:) click to toggle source
# File lib/bigid/bgcheck/request.rb, line 6
def call(document:, document_type:, group:)
  res = @connection.post(url: Bigid::Bgcheck::SRV_ENDPOINT,
                         body: payload(document, document_type, group).to_json)

  check_status(res.status)

  parse_response_body(res.body)
end

Private Instance Methods

check_result_code(code) click to toggle source
# File lib/bigid/bgcheck/request.rb, line 38
def check_result_code(code)
  raise Bigid::Bgcheck::InvalidDocumentValueError unless code
  raise Bigid::Bgcheck::NoInfoError if ResultCode.no_info?(code)
end
check_status(status) click to toggle source
# File lib/bigid/bgcheck/request.rb, line 20
def check_status(status)
  raise Bigid::Bgcheck::InternalError unless status
  raise Bigid::Bgcheck::ServerError if status == 500
  raise Bigid::Bgcheck::InvalidCredentialsError if status == 401
  raise Bigid::Bgcheck::BadRequestError if status == 400
end
parse_response_body(body) click to toggle source
# File lib/bigid/bgcheck/request.rb, line 43
def parse_response_body(body)
  body = JSON.parse(body)

  check_result_code(body["ResultCode"])

  Bigid::Bgcheck::Result.new(
    approved: ResultCode.approved?(body["ResultCode"]),
    code: body["ResultCode"],
    score_details: body["ScoreDetails"],
    limit_score: body["LimitScore"],
    message: body["ResultMessage"],
    raw_data: body["RawData"],
    raw_response: body.to_json,
    related_score_details: body["RelatedScoreDetails"],
    score: body["Score"],
    ticket_id: body["TicketId"]
  )
end
payload(document, document_type, group, parameters = {}) click to toggle source
# File lib/bigid/bgcheck/request.rb, line 27
def payload(document, document_type, group, parameters = {})
  login = Bigid.configuration.username
  document_type = document_type.upcase.strip

  raise Bigid::Bgcheck::DocumentNotSupportedError unless DocType.valid?(document_type)

  parameters[:"#{document_type}"] = document

  { Login: login, parameters: parameters, Group: group }
end