Module: Carquery

Defined in:
lib/carquery.rb,
lib/carquery/errors.rb,
lib/carquery/request.rb,
lib/carquery/version.rb,
lib/carquery/dsl/get_trim.rb,
lib/carquery/dsl/get_makes.rb,
lib/carquery/dsl/get_trims.rb,
lib/carquery/dsl/get_models.rb,
lib/carquery/resources/make.rb,
lib/carquery/resources/trim.rb,
lib/carquery/dsl/get_years_range.rb,
lib/carquery/resources/car_model.rb,
lib/carquery/resources/base_struct.rb

Defined Under Namespace

Classes: BaseStruct, RequestError

Constant Summary collapse

API_URL =
"http://www.carqueryapi.com/api/0.3"
VERSION =
"0.1.1"
Make =
BaseStruct.new :code, :title, :is_common, :country do

  def self.build raw
    code =      get_str raw['make_id']
    title =     get_str raw['make_display']
    is_common = get_boolean raw['make_is_common']
    country =   get_str raw['make_country']

    new code, title, is_common, country
  end
end
Trim =
BaseStruct.new :id, :title, :make_code, :trim, :year, :body, :engine_position,
                      :engine_cc, :engine_cyl, :engine_type, :engine_valves_per_cyl,
                      :engine_power_ps, :engine_power_rpm, :engine_torque_nm, :engine_torque_rpm,
                      :engine_bore_mm, :engine_stroke_mm, :engine_compression, :engine_fuel,
                      :top_speed_kph, :speedup_0_to_100_kph, :drive, :transmission_type,
                      :seats, :doors, :weight_kg, :length_mm, :width_mm, :height_mm,
                      :wheelbase_mm, :lkm_hwy, :lkm_mixed, :lkm_city, :fuel_cap_l, :sold_in_us,
                      :co2, :make_title, :make_country do

  def self.build raw
    id =                    get_i   raw["model_id"]
    title =                 get_str raw["model_name"]
    make_code =             get_str raw["model_make_id"]
    trim =                  get_str raw["model_trim"]
    year =                  get_i   raw["model_year"]
    body =                  get_str raw["model_body"]
    engine_position =       get_str raw["model_engine_position"]
    engine_cc =             get_i   raw["model_engine_cc"]
    engine_cyl =            get_i   raw["model_engine_cyl"]
    engine_type =           get_str raw["model_engine_type"]
    engine_valves_per_cyl = get_i   raw["model_engine_valves_per_cyl"]
    engine_power_ps =       get_i   raw["model_engine_power_ps"]
    engine_power_rpm =      get_i   raw["model_engine_power_rpm"]
    engine_torque_nm =      get_i   raw["model_engine_torque_nm"]
    engine_torque_rpm =     get_i   raw["model_engine_torque_rpm"]
    engine_bore_mm =        get_f   raw["model_engine_bore_mm"]
    engine_stroke_mm =      get_f   raw["model_engine_stroke_mm"]
    engine_compression =    get_f   raw["model_engine_compression"]
    engine_fuel =           get_str raw["model_engine_fuel"]
    top_speed_kph =         get_i   raw["model_top_speed_kph"]
    speedup_0_to_100_kph =  get_f   raw["model_0_to_100_kph"]
    drive =                 get_str raw["model_drive"]
    transmission_type =     get_str raw["model_transmission_type"]
    seats =                 get_i   raw["model_seats"]
    doors =                 get_i   raw["model_doors"]
    weight_kg =             get_i   raw["model_weight_kg"]
    length_mm =             get_i   raw["model_length_mm"]
    width_mm =              get_i   raw["model_width_mm"]
    height_mm =             get_i   raw["model_height_mm"]
    wheelbase_mm =          get_i   raw["model_wheelbase_mm"]
    lkm_hwy =               get_f   raw["model_lkm_hwy"]
    lkm_mixed =             get_f   raw["model_lkm_mixed"]
    lkm_city =              get_f   raw["model_lkm_city"]
    fuel_cap_l =            get_i   raw["model_fuel_cap_l"]
    sold_in_us =            get_boolean raw["model_sold_in_us"]
    co2 =                   get_i   raw["model_co2"]
    make_title =            get_str raw["make_display"]
    make_country =          get_str raw["make_country"]

    new id, title, make_code, trim, year, body, engine_position, engine_cc,
        engine_cyl, engine_type, engine_valves_per_cyl, engine_power_ps,
        engine_power_rpm, engine_torque_nm, engine_torque_rpm, engine_bore_mm,
        engine_stroke_mm, engine_compression, engine_fuel, top_speed_kph,
        speedup_0_to_100_kph, drive, transmission_type, seats, doors, weight_kg,
        length_mm, width_mm, height_mm, wheelbase_mm, lkm_hwy, lkm_mixed, lkm_city,
        fuel_cap_l, sold_in_us, co2, make_title, make_country
  end
end
CarModel =
BaseStruct.new :title do

  def self.build raw
    title = get_str raw['model_name']
    new title
  end
end

Class Method Summary collapse

Class Method Details

.get_makes(params = {}) ⇒ Object

Returns auto makes Optional params:

@year       [optional] - all makes which produced a model in the specified year
@sold_in_us [optional] - setting it to “1″ will restrict results to models sold in the USA.

Usage:

Carquery.get_makes year: 2009 => [#<struct Carquery::Make code="abarth", title="Abarth", is_common=false, country="Italy">, ...]


9
10
11
12
# File 'lib/carquery/dsl/get_makes.rb', line 9

def self.get_makes params={}
  response = request 'getMakes', params
  response['Makes'].map {|make| Make.build make }
end

.get_models(make_code, params = {}) ⇒ Object Also known as: get_models_for

Returns car models by the manufacturer Input: auto make code Optional params:

@year       [optional]  - omitting it will retrieve all model names ever produced by the manufacturer.
@sold_in_us [optional]  - setting it to “1″ will restrict results to models sold in the USA.
@body       [optional]  - including it will restrict results to models of the specified body type (SUV, Sedan, etc)

Usage:

Carquery.get_models_for 'volvo', year: 2010 => [#<struct Carquery::CarModel title="120">, ...]


13
14
15
16
17
# File 'lib/carquery/dsl/get_models.rb', line 13

def get_models make_code, params={}
  params.merge! make: make_code
  response = request 'getModels', params
  response['Models'].map {|make| CarModel.build make }
end

.get_trim(id) ⇒ Object

Returns car model trim by specified id Input: auto make code Optional params: none Usage:

Carquery.get_trim 12343 => #<struct Carquery::Trim id=12343, title="Tempra", make_code="fiat", trim="1.6", ...>


10
11
12
13
# File 'lib/carquery/dsl/get_trim.rb', line 10

def get_trim id
  response = request 'getModel', model: id
  Trim.build response
end

.get_trims(params = {}) ⇒ Object

Returns trim data for models meeting specified criteria. Optional params:

@make             - Make code
@model            - Model Name
@body             - Coupe, Sedan, SUV, Pickup, Crossover, Minivan, etc.
@doors            - number of doors
@drive            - Front, Rear, AWD, 4WD, etc
@engine_position  - Front, Middle, Rear
@engine_type      - V, in-line, etc
@fuel_type        - Gasoline, Diesel, etc
@full_results     - 1 by default. Set to 0 to include only basic year / make /model / trim data (improves load times)
@keyword          - Keyword search. Searches year, make, model, and trim values
@min_cylinders    - Minimum Number of cylinders
@min_lkm_hwy      - Maximum fuel efficiency (highway, l/100km)
@min_power        - Minimum engine power (PS)
@min_top_speed    - Minimum Top Speed (km/h)
@min_torque       - Minimum Torque (nm)
@min_weight       - Minimum Weight (kg)
@min_year         - Earliest Model Year
@max_cylinders    - Maximum Number of cylinders
@max_lkm_hwy      - Minimum fuel efficiency (highway, l/100km)
@max_power        - Minimum engine power (HP)
@max_top_speed    - Maximum Top Speed (km/h)
@max_torque       - Maximum Torque (nm)
@max_weight       - Maximum Weight (kg)
@max_year         - Latest Model Year
@seats            - Number of Seats
@sold_in_us       - 1(sold in US), 0(not sold in US)
@year             - Model Year

Usage:

Carquery.get_trims 'volvo', year: 2010 => [#<struct Carquery::Trim id=12343, title="Tempra", make_code="fiat", ...>, ...]

Notes:

Results are sorted by year, make, model, and trim. Results are limited to 500 records.


38
39
40
41
# File 'lib/carquery/dsl/get_trims.rb', line 38

def get_trims params={}
  response = request 'getTrims', params
  response['Trims'].map {|make| Trim.build make }
end

.get_years_rangeObject

Returns range of available years from the CarQuery database. Input: none Usage:

Carquery.get_years_range => 1941..2012


9
10
11
12
13
14
# File 'lib/carquery/dsl/get_years_range.rb', line 9

def get_years_range
  response = request 'getYears'
  min = response["Years"]["min_year"].to_i
  max = response["Years"]["max_year"].to_i
  min..max
end