class Biro::Bvs::Request

Public Instance Methods

development_url() click to toggle source
# File lib/biro/gateways/bvs/request.rb, line 10
def development_url
  "https://bvsntt.bvsnet.com.br/cgi-bin/db2www/netpo028.mbr/string?consulta="
end
find(document, options = {}) click to toggle source
# File lib/biro/gateways/bvs/request.rb, line 18
def find(document, options = {})
  bvs_results = {}

  bvs_results[:score] = score(document) if options.keys.include?(:score)
  bvs_results[:debits] = debits(document) if options.keys.include?(:debits)

  get_response(bvs_results)
end
production_url() click to toggle source
# File lib/biro/gateways/bvs/request.rb, line 6
def production_url
  "https://www.bvsnet.com.br/cgi-bin/db2www/netpo028.mbr/string?consulta="
end
required_params() click to toggle source
# File lib/biro/gateways/bvs/request.rb, line 14
def required_params
  [:username, :password]
end

Private Instance Methods

auth_error?(response) click to toggle source
# File lib/biro/gateways/bvs/request.rb, line 43
def auth_error?(response)
  response.score_error_message == "DOCUMENTO INVALIDO" || response.debits_error_message == "DOCUMENTO INVALIDO"
end
debits(document) click to toggle source
# File lib/biro/gateways/bvs/request.rb, line 59
def debits(document)
  params = DebitsRequestBuilder.new(document, @username, @password).build

  begin
    response = RestClient::Request.execute(url: url + URI.encode(params), method: :get, verify_ssl: false)
    return response
  rescue => e
    Biro.log(:warn, "Unable to process BVS debits request")
    raise StandardError.new("Error at BVS debits request: #{e.message}")
  end
end
document_error?(response) click to toggle source
# File lib/biro/gateways/bvs/request.rb, line 39
def document_error?(response)
  response.score_error_message == "SENHA INVALIDA" || response.debits_error_message == "SENHA INVALIDA"
end
get_response(result) click to toggle source
# File lib/biro/gateways/bvs/request.rb, line 29
def get_response(result)
  response = Response.new result

  raise DocumentNotFoundError.new("BVS Error: Document not found - SCORE: #{response.score_error_message} - DEBITS: #{response.debits_error_message}" ) if auth_error?(response)
  raise AuthenticationError.new("BVS Error: Invalid user or password - SCORE: #{response.score_error_message} - DEBITS: #{response.debits_error_message}" ) if document_error?(response)
  raise StandardError.new("Error at BVS Request: SCORE: #{response.score_error_message} - DEBITS: #{response.debits_error_message}" ) unless response.score_error_message.blank? && response.debits_error_message.blank?

  response
end
score(document) click to toggle source
# File lib/biro/gateways/bvs/request.rb, line 47
def score(document)
  params = ScoreRequestBuilder.new(document, @username, @password).build

  begin
    response = RestClient::Request.execute(url: url + URI.encode(params), method: :get, verify_ssl: false)
    return response
  rescue => e
    Biro.log(:warn, "Unable to process BVS score request")
    raise StandardError.new("Error at BVS score request: #{e.message}")
  end
end