suitcase 1.6.6 → 1.6.7

Sign up to get free protection for your applications and to get access to all the features.
@@ -9,7 +9,8 @@ module Suitcase
9
9
  :room_type_description, :price_breakdown, :total_price,
10
10
  :average_nightly_rate, :promo, :arrival, :departure, :rooms,
11
11
  :bed_types, :cancellation_policy, :non_refundable,
12
- :deposit_required, :surcharges, :raw
12
+ :guarantee_required, :deposit_required, :surcharges,
13
+ :rate_description, :raw
13
14
 
14
15
  extend Helpers
15
16
 
@@ -35,7 +36,8 @@ module Suitcase
35
36
  params["arrivalDate"] = @arrival
36
37
  params["departureDate"] = @departure
37
38
  params["supplierType"] = @supplier_type
38
- params["rateKey"] = @rate_key
39
+ # Only submit the rateKey if it is a merchant hotel
40
+ params["rateKey"] = @rate_key if @supplier_type == "E"
39
41
  params["rateTypeCode"] = @room_type_code
40
42
  params["rateCode"] = @rate_code
41
43
  params["roomTypeCode"] = @room_type_code
@@ -64,8 +66,8 @@ module Suitcase
64
66
  params["room#{index}"] = "#{room[:adults].to_s},#{room[:children_ages].join(",")}"
65
67
  params["room#{index}FirstName"] = room[:first_name] || params["firstName"] # defaults to the billing
66
68
  params["room#{index}LastName"] = room[:last_name] || params["lastName"] # person's name
67
- params["room#{index}BedTypeId"] = room[:bed_type].id
68
- params["room#{index}SmokingPreference"] = room[:smoking_preference] or "E"
69
+ params["room#{index}BedTypeId"] = room[:bed_type].id if @supplier_type == "E"
70
+ params["room#{index}SmokingPreference"] = room[:smoking_preference] || "E"
69
71
  end
70
72
  params["stateProvinceCode"] = info[:province]
71
73
  params["countryCode"] = info[:country]
@@ -78,11 +80,18 @@ module Suitcase
78
80
  res = session.post uri.request_uri, {}
79
81
  parsed = JSON.parse res.body
80
82
 
81
-
82
- r = Reservation.new(itinerary_id: parsed["HotelRoomReservationResponse"]["itineraryId"],
83
- confirmation_numbers: parsed["HotelRoomReservationResponse"]["confirmationNumbers"],
84
- surcharges: [parsed["HotelRoomReservationResponse"]["RateInfo"]["ChargeableRateInfo"]["Surcharges"]["Surcharge"]].flatten.map { |s| Surcharge.parse(s) }
85
- )
83
+ reservation_res = parsed["HotelRoomReservationResponse"]
84
+ surcharges = if @supplier_type == "E"
85
+ [reservation_res["RateInfo"]["ChargeableRateInfo"]["Surcharges"]["Surcharge"]].
86
+ flatten.map { |s| Surcharge.parse(s) }
87
+ else
88
+ []
89
+ end
90
+ r = Reservation.new(
91
+ itinerary_id: reservation_res["itineraryId"],
92
+ confirmation_numbers: reservation_res["confirmationNumbers"],
93
+ surcharges: surcharges
94
+ )
86
95
  r.raw = parsed
87
96
  r
88
97
  end
@@ -97,6 +106,18 @@ module Suitcase
97
106
  @max_nightly_rate
98
107
  end
99
108
  end
109
+
110
+ # Public: The description of the displayed rate.
111
+ #
112
+ # Returns the rate description based on the `rate_change` attribute.
113
+ def room_rate_description
114
+ if @rate_change
115
+ "rate changes during the dates requested and the single nightly rate displayed is the highest nightly rate of the dates requested without taxes and fees."
116
+ else
117
+ "highest single night rate during the dates selected without taxes or fees"
118
+ end
119
+ end
100
120
  end
101
121
  end
102
122
  end
123
+
@@ -323,24 +323,30 @@ module Suitcase
323
323
  Configuration.cache.save_query(:avail, params, parsed)
324
324
  end
325
325
  end
326
- hotel_id = parsed["HotelRoomAvailabilityResponse"]["hotelId"]
327
- rate_key = parsed["HotelRoomAvailabilityResponse"]["rateKey"]
328
- supplier_type = parsed["HotelRoomAvailabilityResponse"]["HotelRoomResponse"][0]["supplierType"]
326
+ res = parsed["HotelRoomAvailabilityResponse"]
327
+ hotel_room_res = [res["HotelRoomResponse"]].flatten
328
+ hotel_id = res["hotelId"]
329
+ rate_key = res["rateKey"]
330
+ supplier_type = hotel_room_res[0]["supplierType"]
329
331
  Hotel.update_session(parsed, info[:session])
330
332
 
331
- parsed["HotelRoomAvailabilityResponse"]["HotelRoomResponse"].map do |raw_data|
333
+ hotel_room_res.map do |raw_data|
332
334
  room_data = {}
333
335
  room_data[:non_refundable] = raw_data["nonRefundable"]
334
336
  room_data[:deposit_required] = raw_data["depositRequired"]
337
+ room_data[:guarantee_only] = raw_data["guaranteeRequired"]
335
338
  room_data[:cancellation_policy] = raw_data["cancellationPolicy"]
336
339
  room_data[:rate_code] = raw_data["rateCode"]
337
340
  room_data[:room_type_code] = raw_data["roomTypeCode"]
338
341
  room_data[:room_type_description] = raw_data["roomTypeDescription"]
342
+ room_data[:rate_description] = raw_data["rateDescription"]
339
343
  room_data[:promo] = raw_data["RateInfo"]["@promo"].to_b
340
344
  room_data[:price_breakdown] = raw_data["RateInfo"]["ChargeableRateInfo"]["NightlyRatesPerRoom"]["NightlyRate"].map do |raw|
341
345
  NightlyRate.new(raw)
342
346
  end if raw_data["RateInfo"]["ChargeableRateInfo"] && raw_data["RateInfo"]["ChargeableRateInfo"]["NightlyRatesPerRoom"] && raw_data["RateInfo"]["ChargeableRateInfo"]["NightlyRatesPerRoom"]["NightlyRate"].is_a?(Array)
343
347
  room_data[:total_price] = raw_data["RateInfo"]["ChargeableRateInfo"]["@total"]
348
+ room_data[:max_nightly_rate] = raw_data["RateInfo"]["ChargeableRateInfo"]["@maxNightlyRate"]
349
+ room_data[:rate_change] = raw_data["rateChange"]
344
350
  room_data[:nightly_rate_total] = raw_data["RateInfo"]["ChargeableRateInfo"]["@nightlyRateTotal"]
345
351
  room_data[:average_nightly_rate] = raw_data["RateInfo"]["ChargeableRateInfo"]["@averageRate"]
346
352
  room_data[:arrival] = info[:arrival]
@@ -1,3 +1,3 @@
1
1
  module Suitcase
2
- VERSION = "1.6.6"
2
+ VERSION = "1.6.7"
3
3
  end
@@ -39,7 +39,6 @@ describe Suitcase::Hotel::Room do
39
39
 
40
40
  it "returns a Suitcase::Reservation" do
41
41
  reservation = @room.reserve!(@info)
42
- binding.pry
43
42
  reservation.must_be_kind_of(Suitcase::Hotel::Reservation)
44
43
  end
45
44
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: suitcase
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.6.6
4
+ version: 1.6.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2012-06-26 00:00:00.000000000 Z
12
+ date: 2012-07-12 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: minitest
@@ -203,15 +203,21 @@ required_ruby_version: !ruby/object:Gem::Requirement
203
203
  - - ! '>='
204
204
  - !ruby/object:Gem::Version
205
205
  version: '0'
206
+ segments:
207
+ - 0
208
+ hash: 1258883948376164129
206
209
  required_rubygems_version: !ruby/object:Gem::Requirement
207
210
  none: false
208
211
  requirements:
209
212
  - - ! '>='
210
213
  - !ruby/object:Gem::Version
211
214
  version: '0'
215
+ segments:
216
+ - 0
217
+ hash: 1258883948376164129
212
218
  requirements: []
213
219
  rubyforge_project:
214
- rubygems_version: 1.8.19
220
+ rubygems_version: 1.8.24
215
221
  signing_key:
216
222
  specification_version: 3
217
223
  summary: Locates available hotels and rental cars through Expedia and Hotwire
@@ -231,4 +237,3 @@ test_files:
231
237
  - test/keys.rb
232
238
  - test/minitest_helper.rb
233
239
  - test/support/fake_response.rb
234
- has_rdoc: