class Eloqua::Api::Client

provides single source of setting and calling apis

Public Class Methods

new(access_token:, base_url:, authorization_type: DEFAULT_AUTHORIZATION_TYPE) click to toggle source
# File lib/eloqua/api/client.rb, line 12
def initialize(access_token:, base_url:, authorization_type: DEFAULT_AUTHORIZATION_TYPE)
  self.class.base_uri sub_api_version(url: base_url)
  self.class.headers http_headers(access_token, authorization_type)
end

Public Instance Methods

call(api_endpoint:, method_type: :get, params: {}) click to toggle source
# File lib/eloqua/api/client.rb, line 17
def call(api_endpoint:, method_type: :get, params: {})
  puts api_endpoint
  puts self.class.base_uri
  request_response = self.class.send(method_type, api_endpoint, body: params)
  return request_response.parsed_response if response_successful?(request_response)

  raise error_class(request_response),
        "Code: #{request_response.code}, response: #{request_response.parsed_response}"
end

Private Instance Methods

error_class(response) click to toggle source
# File lib/eloqua/api/client.rb, line 29
def error_class(response)
  case response.code
  when HTTP_BAD_REQUEST_CODE
    BadRequestError
  when HTTP_UNAUTHORIZED_CODE
    UnAuthorizedError
  when HTTP_FORBIDDEN_CODE
    ForbiddenError
  when HTTP_NOT_FOUND_CODE
    NotFoundError
  when HTTP_SERVER_ERROR
    ServerError
  else
    StandardError
  end
end
http_headers(access_token, authorization_type) click to toggle source
# File lib/eloqua/api/client.rb, line 46
def http_headers(access_token, authorization_type)
  {
    'Content-Type' => 'application/json',
    'Authorization' => format("#{authorization_type} %s", access_token),
    'Accept' => 'application/json'
  }
end
response_successful?(response) click to toggle source
# File lib/eloqua/api/client.rb, line 54
def response_successful?(response)
  response.code == 200 || response.code == 201 &&
    (!response.parsed_response.nil? || response.parsed_response != 'Not authenticated.')
end