class BalihooLpcClient::Request::ApiBase

Attributes

params[RW]

Public Class Methods

new(api:, params:) click to toggle source
Calls superclass method
# File lib/balihoo_lpc_client/request/api_base.rb, line 6
def initialize(api:, params:)
  super(api: api)
  self.params = params
end

Private Instance Methods

handle_response(response:, klass:, mappable: true) click to toggle source
# File lib/balihoo_lpc_client/request/api_base.rb, line 46
def handle_response(response:, klass:, mappable: true)
  if multiple_locations?
    multiple_locations(response: response, klass: klass, mappable: mappable)
  else
    single_location(response: response, klass: klass, mappable: mappable)
  end
end
locations_expected?() click to toggle source
# File lib/balihoo_lpc_client/request/api_base.rb, line 21
def locations_expected?
  config.location_key.nil? || config.location_key.strip.empty?
end
multiple_locations(response:, klass:, mappable:) click to toggle source
# File lib/balihoo_lpc_client/request/api_base.rb, line 54
def multiple_locations(response:, klass:, mappable:)
  response.inject({}) do |h, pair|
    if mappable
      h.merge({ pair[0] => pair[1].map { |v| klass.new(v) } })
    else
      h.merge({ pair[0] => klass.new(pair[1]) })
    end
  end
end
multiple_locations?() click to toggle source
# File lib/balihoo_lpc_client/request/api_base.rb, line 13
def multiple_locations?
  if locations_expected?
    params[:locations].count > 1
  else
    false
  end
end
opts() click to toggle source
# File lib/balihoo_lpc_client/request/api_base.rb, line 25
def opts
  {
    headers: {
      'X-ClientId' => config.client_id,
      'X-ClientApiKey' => config.client_api_key
    },
    query: sanitized_params
  }
end
sanitized_params() click to toggle source
# File lib/balihoo_lpc_client/request/api_base.rb, line 35
def sanitized_params
  if locations_expected?
    sanitized = params.dup
    sanitized[:locations] = sanitized[:locations].join(?,)
    sanitized
  else
    params.delete(:locations)
    params
  end
end
single_location(response:, klass:, mappable:) click to toggle source
# File lib/balihoo_lpc_client/request/api_base.rb, line 64
def single_location(response:, klass:, mappable:)
  if mappable
    response.map do |result|
      klass.new result
    end
  else
    klass.new response
  end
end