rthbound-suitcase 1.7.5 → 1.7.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/lib/suitcase/hotel.rb +8 -2
- data/lib/suitcase/hotel/cancellation.rb +55 -0
- data/lib/suitcase/hotel/helpers.rb +10 -4
- data/lib/suitcase/version.rb +1 -1
- metadata +21 -10
data/lib/suitcase/hotel.rb
CHANGED
|
@@ -11,6 +11,7 @@ require "suitcase/hotel/payment_option"
|
|
|
11
11
|
require "suitcase/hotel/reservation"
|
|
12
12
|
require "suitcase/hotel/room"
|
|
13
13
|
require "suitcase/hotel/surcharge"
|
|
14
|
+
require "suitcase/hotel/cancellation"
|
|
14
15
|
|
|
15
16
|
module Suitcase
|
|
16
17
|
# Public: A Class representing a single Hotel. It provides methods for
|
|
@@ -172,8 +173,13 @@ module Suitcase
|
|
|
172
173
|
if Configuration.cache? and Configuration.cache.cached?(:list, params)
|
|
173
174
|
parsed = Configuration.cache.get_query(:list, params)
|
|
174
175
|
else
|
|
175
|
-
|
|
176
|
-
|
|
176
|
+
# Handle large queries as post request
|
|
177
|
+
if info[:large_query]
|
|
178
|
+
url = url(as_form: true, method: "list", params: params, session: info[:session])
|
|
179
|
+
else
|
|
180
|
+
url = url(method: "list", params: params, session: info[:session])
|
|
181
|
+
end
|
|
182
|
+
parsed = parse_response(url, params, info)
|
|
177
183
|
handle_errors(parsed)
|
|
178
184
|
if Configuration.cache?
|
|
179
185
|
Configuration.cache.save_query(:list, params, parsed)
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
module Suitcase
|
|
2
|
+
class Hotel
|
|
3
|
+
class Cancellation
|
|
4
|
+
extend Helpers
|
|
5
|
+
include Helpers
|
|
6
|
+
|
|
7
|
+
attr_accessor :itinerary_id, :email,
|
|
8
|
+
:confirmation_number,
|
|
9
|
+
:reason, :cancellation_number
|
|
10
|
+
|
|
11
|
+
# Accepts a hash with the itinerary_id, confirmation_number, email
|
|
12
|
+
# and optional reason code (COP ILL DEA OTH)
|
|
13
|
+
def initialize(info)
|
|
14
|
+
info.each do |k, v|
|
|
15
|
+
instance_variable_set("@" + k.to_s, v)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
# Makes the call to EAN and if successful sets the
|
|
20
|
+
# cancellation_number attribute
|
|
21
|
+
def cancel_reservation!
|
|
22
|
+
params = {}
|
|
23
|
+
params["itineraryId"] = itinerary_id
|
|
24
|
+
params["email"] = email
|
|
25
|
+
params["confirmationNumber"] = confirmation_number
|
|
26
|
+
params["reason"] = reason if valid_reason?
|
|
27
|
+
|
|
28
|
+
uri = Cancellation.url(
|
|
29
|
+
method: 'cancel',
|
|
30
|
+
params: params,
|
|
31
|
+
include_key: true,
|
|
32
|
+
include_cid: true,
|
|
33
|
+
secure: true
|
|
34
|
+
)
|
|
35
|
+
|
|
36
|
+
session = Patron::Session.new
|
|
37
|
+
session.timeout = 30000
|
|
38
|
+
session.base_url = "https://" + uri.host
|
|
39
|
+
res = session.post uri.request_uri, {}
|
|
40
|
+
parsed = JSON.parse res.body
|
|
41
|
+
handle_errors(parsed)
|
|
42
|
+
@cancellation_number = parsed["HotelRoomCancellationResponse"]["cancellationNumber"]
|
|
43
|
+
end
|
|
44
|
+
|
|
45
|
+
def reservation_canceled?
|
|
46
|
+
!cancellation_number.nil?
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def valid_reason?
|
|
50
|
+
%w(COP ILL DEA OTH).include?(reason)
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -83,8 +83,14 @@ module Suitcase
|
|
|
83
83
|
# uri - The URI to parse the JSON from.
|
|
84
84
|
#
|
|
85
85
|
# Returns the parsed JSON.
|
|
86
|
-
def parse_response(uri)
|
|
87
|
-
|
|
86
|
+
def parse_response(uri, params = {}, info = {})
|
|
87
|
+
if info[:large_query]
|
|
88
|
+
params["apiKey"] = Suitcase::Configuration.hotel_api_key
|
|
89
|
+
params["cid"] = (Suitcase::Configuration.hotel_cid.to_s ||= '55505')
|
|
90
|
+
response = Net::HTTP.post_form(uri, params)
|
|
91
|
+
else
|
|
92
|
+
response = Net::HTTP.get_response(uri)
|
|
93
|
+
end
|
|
88
94
|
|
|
89
95
|
if response.code.to_i == 403
|
|
90
96
|
if response.body.include?("Forbidden")
|
|
@@ -115,8 +121,8 @@ module Suitcase
|
|
|
115
121
|
|
|
116
122
|
raise e
|
|
117
123
|
end
|
|
118
|
-
|
|
119
|
-
JSON.parse(
|
|
124
|
+
|
|
125
|
+
JSON.parse(response.body)
|
|
120
126
|
end
|
|
121
127
|
|
|
122
128
|
# Internal: Raise the errors returned from the response.
|
data/lib/suitcase/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: rthbound-suitcase
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.7.
|
|
4
|
+
version: 1.7.6
|
|
5
5
|
prerelease:
|
|
6
6
|
platform: ruby
|
|
7
7
|
authors:
|
|
@@ -10,7 +10,7 @@ authors:
|
|
|
10
10
|
autorequire:
|
|
11
11
|
bindir: bin
|
|
12
12
|
cert_chain: []
|
|
13
|
-
date: 2012-09-
|
|
13
|
+
date: 2012-09-13 00:00:00.000000000 Z
|
|
14
14
|
dependencies:
|
|
15
15
|
- !ruby/object:Gem::Dependency
|
|
16
16
|
name: minitest
|
|
@@ -165,6 +165,7 @@ files:
|
|
|
165
165
|
- lib/suitcase/hotel/amenity.rb
|
|
166
166
|
- lib/suitcase/hotel/bed_type.rb
|
|
167
167
|
- lib/suitcase/hotel/cache.rb
|
|
168
|
+
- lib/suitcase/hotel/cancellation.rb
|
|
168
169
|
- lib/suitcase/hotel/ean_exception.rb
|
|
169
170
|
- lib/suitcase/hotel/helpers.rb
|
|
170
171
|
- lib/suitcase/hotel/image.rb
|
|
@@ -204,23 +205,33 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
204
205
|
- - ! '>='
|
|
205
206
|
- !ruby/object:Gem::Version
|
|
206
207
|
version: '0'
|
|
207
|
-
segments:
|
|
208
|
-
- 0
|
|
209
|
-
hash: 3047620281659721395
|
|
210
208
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
211
209
|
none: false
|
|
212
210
|
requirements:
|
|
213
211
|
- - ! '>='
|
|
214
212
|
- !ruby/object:Gem::Version
|
|
215
213
|
version: '0'
|
|
216
|
-
segments:
|
|
217
|
-
- 0
|
|
218
|
-
hash: 3047620281659721395
|
|
219
214
|
requirements: []
|
|
220
215
|
rubyforge_project:
|
|
221
|
-
rubygems_version: 1.8.
|
|
216
|
+
rubygems_version: 1.8.21
|
|
222
217
|
signing_key:
|
|
223
218
|
specification_version: 3
|
|
224
219
|
summary: Locates available hotels and rental cars through Expedia and Hotwire. This
|
|
225
220
|
is a fork of Walter Nelson's gem - suitcase
|
|
226
|
-
test_files:
|
|
221
|
+
test_files:
|
|
222
|
+
- test/car_rentals/car_rental_test.rb
|
|
223
|
+
- test/hotels/amenity_test.rb
|
|
224
|
+
- test/hotels/caching_test.rb
|
|
225
|
+
- test/hotels/ean_exception_test.rb
|
|
226
|
+
- test/hotels/helpers_test.rb
|
|
227
|
+
- test/hotels/hotel_location_test.rb
|
|
228
|
+
- test/hotels/hotel_test.rb
|
|
229
|
+
- test/hotels/image_test.rb
|
|
230
|
+
- test/hotels/payment_option_test.rb
|
|
231
|
+
- test/hotels/reservation_test.rb
|
|
232
|
+
- test/hotels/room_test.rb
|
|
233
|
+
- test/hotels/session_test.rb
|
|
234
|
+
- test/keys.rb
|
|
235
|
+
- test/minitest_helper.rb
|
|
236
|
+
- test/support/fake_response.rb
|
|
237
|
+
has_rdoc:
|