Class: Suitcase::CarRental
- Inherits:
-
Object
- Object
- Suitcase::CarRental
- Defined in:
- lib/suitcase/car_rental.rb
Instance Attribute Summary collapse
-
#possible_features ⇒ Object
Returns the value of attribute possible_features.
-
#possible_models ⇒ Object
Returns the value of attribute possible_models.
-
#seating ⇒ Object
Returns the value of attribute seating.
-
#type_code ⇒ Object
Returns the value of attribute type_code.
-
#type_name ⇒ Object
Returns the value of attribute type_name.
Class Method Summary collapse
- .build_url(info) ⇒ Object
- .find(info) ⇒ Object
- .parameterize(info) ⇒ Object
- .parse_errors(parsed) ⇒ Object
- .parse_json(uri) ⇒ Object
Instance Method Summary collapse
-
#initialize(data) ⇒ CarRental
constructor
A new instance of CarRental.
Constructor Details
#initialize(data) ⇒ CarRental
Returns a new instance of CarRental.
5 6 7 8 9 10 11 |
# File 'lib/suitcase/car_rental.rb', line 5 def initialize(data) @seating = data["CarTypeSeating"] @type_name = data["CarTypeName"] @type_code = data["CarTypeCode"] @possible_features = data["PossibleFeatures"].split(", ") @possible_models = data["PossibleModels"].split(", ") end |
Instance Attribute Details
#possible_features ⇒ Object
Returns the value of attribute possible_features.
3 4 5 |
# File 'lib/suitcase/car_rental.rb', line 3 def possible_features @possible_features end |
#possible_models ⇒ Object
Returns the value of attribute possible_models.
3 4 5 |
# File 'lib/suitcase/car_rental.rb', line 3 def possible_models @possible_models end |
#seating ⇒ Object
Returns the value of attribute seating.
3 4 5 |
# File 'lib/suitcase/car_rental.rb', line 3 def seating @seating end |
#type_code ⇒ Object
Returns the value of attribute type_code.
3 4 5 |
# File 'lib/suitcase/car_rental.rb', line 3 def type_code @type_code end |
#type_name ⇒ Object
Returns the value of attribute type_name.
3 4 5 |
# File 'lib/suitcase/car_rental.rb', line 3 def type_name @type_name end |
Class Method Details
.build_url(info) ⇒ Object
23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 |
# File 'lib/suitcase/car_rental.rb', line 23 def build_url(info) base_url = "http://api.hotwire.com/v1/search/car" info["apikey"] = Configuration.hotwire_api_key info["format"] = "JSON" if Configuration.use_hotwire_linkshare_id? info["linkshareid"] = Configuration.hotwire_linkshare_id end info["dest"] = info.delete(:destination) info["startdate"] = info.delete(:start_date) info["enddate"] = info.delete(:end_date) info["pickuptime"] = info.delete(:pickup_time) info["dropofftime"] = info.delete(:dropoff_time) base_url += "?" + parameterize(info) URI.parse(URI.escape(base_url)) end |
.find(info) ⇒ Object
14 15 16 17 18 19 20 21 |
# File 'lib/suitcase/car_rental.rb', line 14 def find(info) parsed = parse_json(build_url(info)) parse_errors(parsed) parsed["MetaData"]["CarMetaData"]["CarTypes"].map do |data| CarRental.new(data) end end |
.parameterize(info) ⇒ Object
40 41 42 |
# File 'lib/suitcase/car_rental.rb', line 40 def parameterize(info) info.map { |key, value| "#{key}=#{value}" }.join("&") end |
.parse_errors(parsed) ⇒ Object
50 51 52 53 54 |
# File 'lib/suitcase/car_rental.rb', line 50 def parse_errors(parsed) if parsed["Errors"] && !parsed["Errors"].empty? parsed["Errors"].each { |e| raise e } end end |
.parse_json(uri) ⇒ Object
44 45 46 47 48 |
# File 'lib/suitcase/car_rental.rb', line 44 def parse_json(uri) response = Net::HTTP.get_response(uri) raise "Data not valid." if response.code != "200" JSON.parse(response.body) end |