Module: Creditario::API::Request

Defined in:
lib/creditario/api/request.rb

Overview

Creditario::API::Request

Modulo encargado de ejecutar los requests HTTP de cualquier tipo a la API de creditar.io

Class Method Summary collapse

Class Method Details

.request(method, path, params = {}) ⇒ Object

Ejecuta un request HTTP a la API de creditar.io

Los símbolos aceptados en el parámetro method son:

  • :get

  • :post

  • :delete

  • :patch

  • :multipart



31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
# File 'lib/creditario/api/request.rb', line 31

def request(method, path, params = {})
  uri = URI(Creditario::Client.api_base + path)
  request = request_from_method(method, uri, params)

  request["User-Agent"] = "creditario-client gem v#{Creditario::Client::VERSION}"
  request["Accept"] = "application/vnd.creditar.v#{Creditario::Client.api_version}+json"

  response = Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == "https") do |http|
    http.request(request)
  end

  handle_errored_responses(response)

  return response if response.code == "204" && response.body.nil?
  response_body = handle_responses(response)

  Oj.load(response_body)
rescue Oj::ParseError => ex
  raise Exceptions::InvalidResponseBodyError, ex.message
rescue Net::OpenTimeout => ex
  raise Exceptions::APIBusyError, ex.message
rescue Errno::ECONNREFUSED => ex
  raise Exceptions::APINotReachableError, ex.message
end