class Virgil::SDK::Client::HTTP::BaseConnection

Base API service connection class.

Constants

ERRORS

Attributes

access_token[RW]
base_url[RW]

Public Class Methods

new(access_token, base_url) click to toggle source

Constructs new BaseConnection object.

# File lib/virgil/sdk/client/http/base_connection.rb, line 52
def initialize(access_token, base_url)
  self.access_token = access_token
  self.base_url = base_url
end

Public Instance Methods

send_request(request) click to toggle source

Sends http request to the endpoint.

Args:

request: HTTP::Request object containing sending request data.

Returns:

Deserialized ruby object from the json response.

Raises:

HTTPError with error message decoded from errors dictionary.
# File lib/virgil/sdk/client/http/base_connection.rb, line 67
def send_request(request)
  response = faraday_connection.run_request(
      request.method,
      request.endpoint,
      request.body,
      request.headers
  )
  return response.body if response.success?

  raise ApiError.new(error_message(response))

end

Private Instance Methods

error_message(response) click to toggle source
# File lib/virgil/sdk/client/http/base_connection.rb, line 95
def error_message(response)
  error_message = nil
  error_body = response.body
  if error_body
    error_body = JSON.parse(error_body) unless error_body.is_a? Hash
    error_code = error_body['code'] ||
        (error_body['error'] && error_body['error']['code'])
    error_message = self.class::ERRORS[error_code] || error_code
  end
  # token = attempt.confirm(emailConfirmation)
  error_message = "Error code is #{response.status}" unless error_message
  error_message
end
faraday_connection() click to toggle source
# File lib/virgil/sdk/client/http/base_connection.rb, line 82
def faraday_connection
  @faraday_connection ||= Faraday.new(url: base_url) do |connection|
    if access_token
      connection.authorization :VIRGIL, access_token
    end
    connection.request :json
    connection.response :json, :content_type => /\bjson$/
    connection.response :follow_redirects
    connection.adapter Faraday.default_adapter
  end
end