suitcase 1.1.6 → 1.1.7
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/helpers.rb +15 -0
- data/lib/suitcase/hotel/hotel.rb +14 -32
- data/lib/suitcase/version.rb +1 -1
- data/lib/suitcase.rb +1 -0
- metadata +13 -12
@@ -0,0 +1,15 @@
|
|
1
|
+
module Suitcase
|
2
|
+
module Helpers
|
3
|
+
def url(method, params, include_key=true, include_cid=true, secure=false, as_form=false)
|
4
|
+
params["apiKey"] = Suitcase::Hotel::API_KEY if include_key
|
5
|
+
params["cid"] = Suitcase::Hotel::API_KEY if include_cid
|
6
|
+
url = "http#{secure ? "s" : ""}://api.ean.com/ean-services/rs/hotel/v3/#{method.to_s}#{as_form ? "" : "?"}"
|
7
|
+
url += params.map { |key, value| "#{key}=#{value}"}.join("&")
|
8
|
+
URI.parse(URI.escape(url))
|
9
|
+
end
|
10
|
+
|
11
|
+
def parse_response(uri)
|
12
|
+
JSON.parse(Net::HTTP.get_response(uri).body)
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/suitcase/hotel/hotel.rb
CHANGED
@@ -6,6 +6,8 @@ module Suitcase
|
|
6
6
|
end
|
7
7
|
|
8
8
|
class Hotel
|
9
|
+
extend Suitcase::Helpers
|
10
|
+
|
9
11
|
AMENITIES = { pool: 1,
|
10
12
|
fitness_center: 2,
|
11
13
|
restaurant: 3,
|
@@ -24,19 +26,6 @@ module Suitcase
|
|
24
26
|
end
|
25
27
|
end
|
26
28
|
|
27
|
-
def self.url(action, include_key, include_cid, params, method=:get, secure=false)
|
28
|
-
url = "http#{secure ? "s" : "" }://api.ean.com/ean-services/rs/hotel/v3/" + action.to_s + "?"
|
29
|
-
include_key ? params["apiKey"] = Suitcase::Hotel::API_KEY : nil
|
30
|
-
include_cid ? params["cid"] = "55505" : nil
|
31
|
-
params.each do |k, v|
|
32
|
-
url += k.to_s + "=" + v.to_s + "&"
|
33
|
-
end
|
34
|
-
if url =~ /^(.+)&$/
|
35
|
-
url = $1
|
36
|
-
end
|
37
|
-
URI.parse URI.escape(url)
|
38
|
-
end
|
39
|
-
|
40
29
|
def self.find(info)
|
41
30
|
if info[:id]
|
42
31
|
find_by_id(info[:id])
|
@@ -46,7 +35,10 @@ module Suitcase
|
|
46
35
|
end
|
47
36
|
|
48
37
|
def self.find_by_id(id)
|
49
|
-
|
38
|
+
url = url(:info, { hotelId: id })
|
39
|
+
raw = parse_response(url)
|
40
|
+
hotel_data = parse_information(raw)
|
41
|
+
Hotel.new(hotel_data)
|
50
42
|
end
|
51
43
|
|
52
44
|
def self.find_by_info(info)
|
@@ -64,24 +56,15 @@ module Suitcase
|
|
64
56
|
params["maxRate"] = params[:max_rate] if params[:max_rate]
|
65
57
|
params[:amenities] = amenities
|
66
58
|
hotels = []
|
67
|
-
|
68
|
-
handle_errors(
|
69
|
-
split(
|
70
|
-
hotels.push Hotel.new(
|
59
|
+
parsed = parse_response(url(:list, params))
|
60
|
+
handle_errors(parsed)
|
61
|
+
split(parsed).each do |hotel_data|
|
62
|
+
hotels.push Hotel.new(parse_information(hotel_data))
|
71
63
|
end
|
72
64
|
hotels
|
73
65
|
end
|
74
66
|
|
75
|
-
def self.
|
76
|
-
Net::HTTP.get_response(url).body
|
77
|
-
end
|
78
|
-
|
79
|
-
def self.shove(url, params)
|
80
|
-
Net::HTTP.post_form(url, params).body
|
81
|
-
end
|
82
|
-
|
83
|
-
def self.parse_hotel_information(json)
|
84
|
-
parsed = JSON.parse json
|
67
|
+
def self.parse_information(parsed)
|
85
68
|
handle_errors(parsed)
|
86
69
|
summary = parsed["hotelId"] ? parsed : parsed["HotelInformationResponse"]["HotelSummary"]
|
87
70
|
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 }
|
@@ -107,8 +90,7 @@ module Suitcase
|
|
107
90
|
raise EANException.new(message) if message
|
108
91
|
end
|
109
92
|
|
110
|
-
def self.split(
|
111
|
-
parsed = JSON.parse(data)
|
93
|
+
def self.split(parsed)
|
112
94
|
hotels = parsed["HotelListResponse"]["HotelList"]
|
113
95
|
hotels["HotelSummary"]
|
114
96
|
end
|
@@ -123,7 +105,7 @@ module Suitcase
|
|
123
105
|
params.delete(:arrival)
|
124
106
|
params.delete(:departure)
|
125
107
|
params["hotelId"] = @id
|
126
|
-
parsed =
|
108
|
+
parsed = Hotel.parse_response(Hotel.url(:avail, params))
|
127
109
|
Hotel.handle_errors(parsed)
|
128
110
|
hotel_id = parsed["HotelRoomAvailabilityResponse"]["hotelId"]
|
129
111
|
rate_key = parsed["HotelRoomAvailabilityResponse"]["rateKey"]
|
@@ -133,7 +115,7 @@ module Suitcase
|
|
133
115
|
|
134
116
|
def payment_options
|
135
117
|
options = []
|
136
|
-
types_raw = JSON.parse Hotel.hit(
|
118
|
+
types_raw = JSON.parse Hotel.hit(url(:paymentInfo, true, true, {}))
|
137
119
|
types_raw["HotelPaymentResponse"].each do |raw|
|
138
120
|
types = raw[0] != "PaymentType" ? [] : raw[1]
|
139
121
|
types.each do |type|
|
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.7
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2011-12-
|
12
|
+
date: 2011-12-27 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &13140540 !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: *13140540
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: cucumber
|
27
|
-
requirement: &
|
27
|
+
requirement: &13140060 !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: *13140060
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &13139260 !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: *13139260
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: json
|
49
|
-
requirement: &
|
49
|
+
requirement: &13138520 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,7 +54,7 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
57
|
+
version_requirements: *13138520
|
58
58
|
description: Suitcase utilizes the EAN (Expedia.com) API for locating info about hotels,
|
59
59
|
rental cars, and flights.
|
60
60
|
email:
|
@@ -72,6 +72,7 @@ files:
|
|
72
72
|
- lib/suitcase.rb
|
73
73
|
- lib/suitcase/airport_codes.rb
|
74
74
|
- lib/suitcase/country_codes.rb
|
75
|
+
- lib/suitcase/helpers.rb
|
75
76
|
- lib/suitcase/hotel/hotel.rb
|
76
77
|
- lib/suitcase/hotel/payment_option.rb
|
77
78
|
- lib/suitcase/hotel/room.rb
|
@@ -95,7 +96,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
95
96
|
version: '0'
|
96
97
|
segments:
|
97
98
|
- 0
|
98
|
-
hash:
|
99
|
+
hash: -3208530258623277301
|
99
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
100
101
|
none: false
|
101
102
|
requirements:
|
@@ -104,7 +105,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
104
105
|
version: '0'
|
105
106
|
segments:
|
106
107
|
- 0
|
107
|
-
hash:
|
108
|
+
hash: -3208530258623277301
|
108
109
|
requirements: []
|
109
110
|
rubyforge_project: suitcase
|
110
111
|
rubygems_version: 1.8.10
|