class AutoRiaApi::Base

Constants

DEFAULT_URL

Attributes

api_key[RW]
default_url[R]

Public Class Methods

new(api_key:, url: nil) click to toggle source
# File lib/auto_ria_api.rb, line 12
def initialize(api_key:, url: nil)
  raise ArgumentError, 'API key should not be empty' if blank?(api_key)

  @api_key = api_key
  @default_url = url || DEFAULT_URL
end

Public Instance Methods

average_price(params) click to toggle source
# File lib/auto_ria_api.rb, line 82
def average_price(params)
  request "/auto/average_price", params
end
carcasses(type:, options: {}) click to toggle source
# File lib/auto_ria_api.rb, line 23
def carcasses(type:, options: {})
  raise ArgumentError, '`type` should not be empty' if blank?(type)
  return request '/auto/bodystyles' if options[:all]

  group = '/_group' if options[:grouped]
  request "/auto/categories/#{type}/bodystyles#{group}"
end
cities(region:) click to toggle source
# File lib/auto_ria_api.rb, line 50
def cities(region:)
  raise ArgumentError, '`region` should not be empty' if blank?(region)

  request "/auto/states/#{region}/cities"
end
colors() click to toggle source
# File lib/auto_ria_api.rb, line 72
def colors
  request '/auto/colors'
end
driver_types(type:) click to toggle source
# File lib/auto_ria_api.rb, line 62
def driver_types(type:)
  raise ArgumentError, '`type` should not be empty' if blank?(type)

  request "/auto/categories/#{type}/driverTypes"
end
fuels() click to toggle source
# File lib/auto_ria_api.rb, line 68
def fuels
  request '/auto/type'
end
gearboxes(type:) click to toggle source
# File lib/auto_ria_api.rb, line 56
def gearboxes(type:)
  raise ArgumentError, '`type` should not be empty' if blank?(type)

  request "/auto/categories/#{type}/gearboxes"
end
info(car_id:) click to toggle source
# File lib/auto_ria_api.rb, line 90
def info(car_id:)
  raise ArgumentError, '`car_id` should not be empty' if blank?(car_id)

  request '/auto/info', auto_id: car_id
end
marks(type:) click to toggle source
# File lib/auto_ria_api.rb, line 31
def marks(type:)
  raise ArgumentError, '`type` should not be empty' if blank?(type)

  request "/auto/categories/#{type}/marks"
end
models(type:, mark:, options: {}) click to toggle source
# File lib/auto_ria_api.rb, line 37
def models(type:, mark:, options: {})
  raise ArgumentError, '`type` should not be empty' if blank?(type)
  raise ArgumentError, '`mark` should not be empty' if blank?(mark)
  return request '/auto/models' if options[:all]

  group = options[:grouped] ? '/_group' : ''
  request "/auto/categories/#{type}/marks/#{mark}/models" + group
end
options(type:) click to toggle source
# File lib/auto_ria_api.rb, line 76
def options(type:)
  raise ArgumentError, '`type` should not be empty' if blank?(type)

  request "/auto/categories/#{type}/auto_options"
end
photos(car_id:) click to toggle source
# File lib/auto_ria_api.rb, line 96
def photos(car_id:)
  raise ArgumentError, '`car_id` should not be empty' if blank?(car_id)

  request "/auto/fotos/#{car_id}", auto_id: car_id
end
regions() click to toggle source
# File lib/auto_ria_api.rb, line 46
def regions
  request '/auto/states'
end
types() click to toggle source
# File lib/auto_ria_api.rb, line 19
def types
  request '/auto/categories'
end

Private Instance Methods

blank?(arg) click to toggle source
# File lib/auto_ria_api.rb, line 119
def blank?(arg)
  respond_to?(:empty?) ? arg.empty? : !arg
end
parsed(response) { |res| ... } click to toggle source
# File lib/auto_ria_api.rb, line 111
def parsed(response)
  res = JSON.parse(response.body)
  raise ResponseError, res.dig('error').to_s if res.is_a?(Hash) && res.has_key?('error')

  yield res if block_given?
  res
end
request(url, params = {}, method = :get_response) click to toggle source
# File lib/auto_ria_api.rb, line 104
def request(url, params = {}, method = :get_response)
  uri = URI(default_url + url)
  uri.query = URI.encode_www_form(params.merge(api_key: api_key))
  response = Net::HTTP.public_send(method, uri)
  parsed response
end