class CircuitApi::Utils::Connection

Constants

RESPONSE_SUCCESS_CODES

Attributes

action_url[R]
body[R]
client[R]

Public Class Methods

new(client, action_url, body = nil) click to toggle source
# File lib/circuit_api/utils/connection.rb, line 8
def initialize(client, action_url, body = nil)
  @client = client
  @action_url = action_url
  @body = body
end

Public Instance Methods

delete() click to toggle source
# File lib/circuit_api/utils/connection.rb, line 26
def delete
  perform_query(:delete)
end
get() click to toggle source
# File lib/circuit_api/utils/connection.rb, line 14
def get
  perform_query(:get)
end
post() click to toggle source
# File lib/circuit_api/utils/connection.rb, line 18
def post
  perform_query(:post)
end
put() click to toggle source
# File lib/circuit_api/utils/connection.rb, line 22
def put
  perform_query(:put)
end

Private Instance Methods

headers() click to toggle source
# File lib/circuit_api/utils/connection.rb, line 41
def headers
  {
    'Authorization' => "Bearer #{client.token}",
    'Content-Type' => 'application/json; charset=utf-8'
  }
end
http_client() click to toggle source
# File lib/circuit_api/utils/connection.rb, line 32
def http_client
  @http_client ||= Net::HTTP.new(uri.hostname, uri.port)
    .tap { |h| h.use_ssl = true }
end
perform_query(verb) click to toggle source
# File lib/circuit_api/utils/connection.rb, line 48
def perform_query(verb)
  response = http_client.send_request(
    verb.to_s.upcase,
    uri.path,
    CircuitApi::Utils::Object.blank?(body) ? '' : body.to_json,
    headers
  )

  raise_error(response) unless RESPONSE_SUCCESS_CODES.include?(response.code.to_i)

  CircuitApi::Utils::Object.blank?(response.body) ? {} : JSON.parse(response.body)
end
raise_error(response) click to toggle source
# File lib/circuit_api/utils/connection.rb, line 61
def raise_error(response)
  error_class = case response.code.to_i
  when 400
    CircuitApi::BadRequest
  when 401
    CircuitApi::Unauthorized
  when 500
    CircuitApi::InternalServerError
  when 503
    CircuitApi::ServiceUnavailable
  else
    CircuitApi::HttpError
  end

  raise error_class.new(response.code, response.body, uri)
end
uri() click to toggle source
# File lib/circuit_api/utils/connection.rb, line 37
def uri
  @uri ||= URI.join(client.api_url, action_url)
end