class EasyMeli::ApiClient

Constants

API_ROOT_URL

Attributes

access_token[R]
logger[R]

Public Class Methods

new(access_token = nil, logger: nil) click to toggle source
# File lib/easy_meli/api_client.rb, line 13
def initialize(access_token = nil, logger: nil)
  @logger = logger
  @access_token = access_token
end

Public Instance Methods

delete(path, query: {}) click to toggle source
# File lib/easy_meli/api_client.rb, line 30
def delete(path, query: {})
  send_request(:delete, path, query: query)
end
get(path, query: {}) click to toggle source
# File lib/easy_meli/api_client.rb, line 18
def get(path, query: {})
  send_request(:get, path, query: query)
end
post(path, query: {}, body: {}) click to toggle source
# File lib/easy_meli/api_client.rb, line 22
def post(path, query: {}, body: {})
  send_request(:post, path, query: query, body: body)
end
put(path, query: {}, body: {}) click to toggle source
# File lib/easy_meli/api_client.rb, line 26
def put(path, query: {}, body: {})
  send_request(:put, path, query: query, body: body)
end

Private Instance Methods

authorization_header() click to toggle source
# File lib/easy_meli/api_client.rb, line 65
def authorization_header
  return {} unless access_token

  { Authorization: "Bearer #{access_token}" }
end
check_for_errors(response) click to toggle source
# File lib/easy_meli/api_client.rb, line 55
def check_for_errors(response)
  return unless response.parsed_response.is_a?(Hash) && !response.body.nil?

  exception = EasyMeli::ErrorParser.error_class(response)

  if exception
    raise exception.new(response)
  end
end
check_status(response) click to toggle source
# File lib/easy_meli/api_client.rb, line 47
def check_status(response)
  exception = EasyMeli::ErrorParser.status_error_class(response)

  if exception
    raise exception.new(response)
  end
end
send_request(verb, path = '', params = {}) click to toggle source
# File lib/easy_meli/api_client.rb, line 36
def send_request(verb, path = '', params = {})
  query = params[:query] || params['query'] || {}
  params[:headers] = EasyMeli::DEFAULT_HEADERS.merge(authorization_header)

  self.class.send(verb, path, params.merge(query)).tap do |response|
    logger&.log response
    check_status(response)
    check_for_errors(response)
  end
end