suitcase 1.1.3 → 1.1.4
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/Rakefile +5 -0
- data/lib/suitcase/{hotel.rb → hotel/hotel.rb} +27 -40
- data/lib/suitcase/hotel/payment_option.rb +10 -0
- data/lib/suitcase/hotel/room.rb +26 -0
- data/lib/suitcase/version.rb +1 -1
- data/lib/suitcase.rb +3 -1
- metadata +16 -14
data/Rakefile
CHANGED
@@ -1,35 +1,7 @@
|
|
1
1
|
module Suitcase
|
2
|
-
class
|
3
|
-
|
4
|
-
|
5
|
-
def initialize(code, name)
|
6
|
-
@code = code
|
7
|
-
@name = name
|
8
|
-
end
|
9
|
-
end
|
10
|
-
|
11
|
-
class Room
|
12
|
-
attr_accessor :rate_key, :hotel_id, :supplier_type
|
13
|
-
|
14
|
-
def initialize(rate_key, hotel_id, supplier_type)
|
15
|
-
@rate_key = rate_key
|
16
|
-
@hotel_id = hotel_id
|
17
|
-
@supplier_type = supplier_type
|
18
|
-
end
|
19
|
-
|
20
|
-
def reserve!(info)
|
21
|
-
params = info
|
22
|
-
params["hotelId"] = @id
|
23
|
-
params["arrivalDate"] = info[:arrival]
|
24
|
-
params["departureDate"] = info[:departure]
|
25
|
-
params.delete(:arrival)
|
26
|
-
params.delete(:departure)
|
27
|
-
params["supplierType"] = supplier_type
|
28
|
-
params["rateKey"] = @rate_key
|
29
|
-
params["rateTypeCode"] = info[:room_type_code]
|
30
|
-
params["rateCode"] = info[:rate_code]
|
31
|
-
params.delete(:rate_code)
|
32
|
-
p Hotel.hit(Hotel.url(:res, true, true, params))
|
2
|
+
class EANException < Exception
|
3
|
+
def initialize
|
4
|
+
super("TravelNow.com cannot service this request")
|
33
5
|
end
|
34
6
|
end
|
35
7
|
|
@@ -43,6 +15,8 @@ module Suitcase
|
|
43
15
|
pets: 7,
|
44
16
|
wheelchair_accessible: 8,
|
45
17
|
kitchen: 9 }
|
18
|
+
EXCEPTIONS = { -1 => EANException
|
19
|
+
}
|
46
20
|
|
47
21
|
attr_accessor :id, :name, :address, :city, :min_rate, :max_rate, :amenities, :country_code, :high_rate, :low_rate, :longitude, :latitude, :rating, :postal_code, :supplier_type, :image_urls
|
48
22
|
|
@@ -84,19 +58,17 @@ module Suitcase
|
|
84
58
|
params["destinationString"] = params[:location]
|
85
59
|
params.delete(:location)
|
86
60
|
if params[:amenities]
|
87
|
-
amenities
|
88
|
-
|
89
|
-
|
90
|
-
end
|
91
|
-
if amenities =~ /^(.+),$/
|
92
|
-
amenities = $1
|
93
|
-
end
|
61
|
+
params[:amenities].inject("") { |old, new| old + AMENITIES[new].to_s + "," }
|
62
|
+
amenities =~ /^(.+),$/
|
63
|
+
amenities = $1
|
94
64
|
end
|
95
65
|
params["minRate"] = params[:min_rate] if params[:min_rate]
|
96
66
|
params["maxRate"] = params[:max_rate] if params[:max_rate]
|
97
67
|
params[:amenities] = amenities
|
98
68
|
hotels = []
|
99
|
-
|
69
|
+
raw = hit(url(:list, true, true, params))
|
70
|
+
handle_errors(JSON.parse raw)
|
71
|
+
split(raw).each do |hotel_data|
|
100
72
|
hotels.push Hotel.new(parse_hotel_information(hotel_data.to_json))
|
101
73
|
end
|
102
74
|
hotels
|
@@ -108,8 +80,23 @@ module Suitcase
|
|
108
80
|
|
109
81
|
def self.parse_hotel_information(json)
|
110
82
|
parsed = JSON.parse json
|
83
|
+
handle_errors(parsed)
|
111
84
|
summary = parsed["hotelId"] ? parsed : parsed["HotelInformationResponse"]["HotelSummary"]
|
112
|
-
{ id: summary["hotelId"], name: summary["name"], address: summary["address1"], city: summary["city"], postal_code: summary["postalCode"], country_code: summary["countryCode"], rating: summary["hotelRating"], high_rate: summary["highRate"], low_rate: summary["lowRate"], latitude: summary["latitude"].to_f, longitude: summary["longitude"].to_f
|
85
|
+
parsed_info = { id: summary["hotelId"], name: summary["name"], address: summary["address1"], city: summary["city"], postal_code: summary["postalCode"], country_code: summary["countryCode"], rating: summary["hotelRating"], high_rate: summary["highRate"], low_rate: summary["lowRate"], latitude: summary["latitude"].to_f, longitude: summary["longitude"].to_f }
|
86
|
+
if images(parsed)
|
87
|
+
parsed_info[:image_urls] = images(parsed)
|
88
|
+
end
|
89
|
+
parsed_info
|
90
|
+
end
|
91
|
+
|
92
|
+
def self.images(parsed)
|
93
|
+
p parsed
|
94
|
+
return nil
|
95
|
+
end
|
96
|
+
|
97
|
+
def self.handle_errors(info)
|
98
|
+
raise EXCEPTIONS[info["HotelListResponse"]["EanWsError"]["exceptionConditionId"]] if info["HotelListResponse"] && info["HotelListResponse"]["EanWsError"]
|
99
|
+
raise EXCEPTIONS[info["HotelInformationResponse"]["EanWsError"]["exceptionConditionId"]] if info["HotelInformationResponse"] && info["HotelInformationResponse"]["EanWsError"]
|
113
100
|
end
|
114
101
|
|
115
102
|
def self.split(data)
|
@@ -0,0 +1,26 @@
|
|
1
|
+
module Suitcase
|
2
|
+
class Room
|
3
|
+
attr_accessor :rate_key, :hotel_id, :supplier_type
|
4
|
+
|
5
|
+
def initialize(rate_key, hotel_id, supplier_type)
|
6
|
+
@rate_key = rate_key
|
7
|
+
@hotel_id = hotel_id
|
8
|
+
@supplier_type = supplier_type
|
9
|
+
end
|
10
|
+
|
11
|
+
def reserve!(info)
|
12
|
+
params = info
|
13
|
+
params["hotelId"] = @id
|
14
|
+
params["arrivalDate"] = info[:arrival]
|
15
|
+
params["departureDate"] = info[:departure]
|
16
|
+
params.delete(:arrival)
|
17
|
+
params.delete(:departure)
|
18
|
+
params["supplierType"] = supplier_type
|
19
|
+
params["rateKey"] = @rate_key
|
20
|
+
params["rateTypeCode"] = info[:room_type_code]
|
21
|
+
params["rateCode"] = info[:rate_code]
|
22
|
+
params.delete(:rate_code)
|
23
|
+
p Hotel.hit(Hotel.url(:res, true, true, params))
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
data/lib/suitcase/version.rb
CHANGED
data/lib/suitcase.rb
CHANGED
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.1.
|
4
|
+
version: 1.1.4
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -13,7 +13,7 @@ date: 2011-12-24 00:00:00.000000000 Z
|
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &19469920 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ! '>='
|
@@ -21,10 +21,10 @@ dependencies:
|
|
21
21
|
version: '0'
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements: *
|
24
|
+
version_requirements: *19469920
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: cucumber
|
27
|
-
requirement: &
|
27
|
+
requirement: &19013180 !ruby/object:Gem::Requirement
|
28
28
|
none: false
|
29
29
|
requirements:
|
30
30
|
- - ! '>='
|
@@ -32,10 +32,10 @@ dependencies:
|
|
32
32
|
version: '0'
|
33
33
|
type: :development
|
34
34
|
prerelease: false
|
35
|
-
version_requirements: *
|
35
|
+
version_requirements: *19013180
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &19012500 !ruby/object:Gem::Requirement
|
39
39
|
none: false
|
40
40
|
requirements:
|
41
41
|
- - ! '>='
|
@@ -43,10 +43,10 @@ dependencies:
|
|
43
43
|
version: '0'
|
44
44
|
type: :development
|
45
45
|
prerelease: false
|
46
|
-
version_requirements: *
|
46
|
+
version_requirements: *19012500
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: json
|
49
|
-
requirement: &
|
49
|
+
requirement: &19011800 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,10 +54,10 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *19011800
|
58
58
|
- !ruby/object:Gem::Dependency
|
59
59
|
name: nokogiri
|
60
|
-
requirement: &
|
60
|
+
requirement: &19011140 !ruby/object:Gem::Requirement
|
61
61
|
none: false
|
62
62
|
requirements:
|
63
63
|
- - ! '>='
|
@@ -65,7 +65,7 @@ dependencies:
|
|
65
65
|
version: '0'
|
66
66
|
type: :runtime
|
67
67
|
prerelease: false
|
68
|
-
version_requirements: *
|
68
|
+
version_requirements: *19011140
|
69
69
|
description: Suitcase utilizes the EAN API for locating available hotels, rental cars,
|
70
70
|
and flights.
|
71
71
|
email:
|
@@ -83,7 +83,9 @@ files:
|
|
83
83
|
- lib/suitcase.rb
|
84
84
|
- lib/suitcase/airport_codes.rb
|
85
85
|
- lib/suitcase/country_codes.rb
|
86
|
-
- lib/suitcase/hotel.rb
|
86
|
+
- lib/suitcase/hotel/hotel.rb
|
87
|
+
- lib/suitcase/hotel/payment_option.rb
|
88
|
+
- lib/suitcase/hotel/room.rb
|
87
89
|
- lib/suitcase/version.rb
|
88
90
|
- spec/api_key.rb
|
89
91
|
- spec/data_helpers_spec.rb
|
@@ -104,7 +106,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
106
|
version: '0'
|
105
107
|
segments:
|
106
108
|
- 0
|
107
|
-
hash: -
|
109
|
+
hash: -2225854137888015494
|
108
110
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
111
|
none: false
|
110
112
|
requirements:
|
@@ -113,7 +115,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
113
115
|
version: '0'
|
114
116
|
segments:
|
115
117
|
- 0
|
116
|
-
hash: -
|
118
|
+
hash: -2225854137888015494
|
117
119
|
requirements: []
|
118
120
|
rubyforge_project: suitcase
|
119
121
|
rubygems_version: 1.8.10
|