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
-
.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.
-
.get_models(make_code, params = {}) ⇒ Object
(also: 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.
-
.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”, …>.
-
.get_trims(params = {}) ⇒ Object
Returns trim data for models meeting specified criteria.
-
.get_years_range ⇒ Object
Returns range of available years from the CarQuery database.
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_range ⇒ Object
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 |