suitcase 1.1.4 → 1.1.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/Gemfile +0 -1
- data/lib/suitcase/hotel/hotel.rb +20 -12
- data/lib/suitcase/hotel/room.rb +1 -1
- data/lib/suitcase/version.rb +1 -1
- data/suitcase.gemspec +1 -2
- metadata +14 -25
data/Gemfile
CHANGED
data/lib/suitcase/hotel/hotel.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
module Suitcase
|
2
2
|
class EANException < Exception
|
3
|
-
def initialize
|
4
|
-
super(
|
3
|
+
def initialize(message)
|
4
|
+
super(message)
|
5
5
|
end
|
6
6
|
end
|
7
7
|
|
@@ -15,8 +15,6 @@ module Suitcase
|
|
15
15
|
pets: 7,
|
16
16
|
wheelchair_accessible: 8,
|
17
17
|
kitchen: 9 }
|
18
|
-
EXCEPTIONS = { -1 => EANException
|
19
|
-
}
|
20
18
|
|
21
19
|
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
|
22
20
|
|
@@ -26,8 +24,8 @@ module Suitcase
|
|
26
24
|
end
|
27
25
|
end
|
28
26
|
|
29
|
-
def self.url(action, include_key, include_cid, params)
|
30
|
-
url = "http://api.ean.com/ean-services/rs/hotel/v3/" + action.to_s + "?"
|
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 + "?"
|
31
29
|
include_key ? params["apiKey"] = Suitcase::Hotel::API_KEY : nil
|
32
30
|
include_cid ? params["cid"] = "55505" : nil
|
33
31
|
params.each do |k, v|
|
@@ -78,6 +76,10 @@ module Suitcase
|
|
78
76
|
Net::HTTP.get_response(url).body
|
79
77
|
end
|
80
78
|
|
79
|
+
def self.shove(url, params)
|
80
|
+
Net::HTTP.post_form(url, params).body
|
81
|
+
end
|
82
|
+
|
81
83
|
def self.parse_hotel_information(json)
|
82
84
|
parsed = JSON.parse json
|
83
85
|
handle_errors(parsed)
|
@@ -90,14 +92,20 @@ module Suitcase
|
|
90
92
|
end
|
91
93
|
|
92
94
|
def self.images(parsed)
|
93
|
-
p parsed
|
94
95
|
return nil
|
95
96
|
end
|
96
97
|
|
98
|
+
# Bleghh. so ugly. #needsfixing
|
97
99
|
def self.handle_errors(info)
|
98
|
-
|
99
|
-
|
100
|
-
|
100
|
+
if info["HotelRoomAvailabilityResponse"] && info["HotelRoomAvailabilityResponse"]["EanWsError"]
|
101
|
+
message = info["HotelRoomAvailabilityResponse"]["EanWsError"]["presentationMessage"]
|
102
|
+
elsif info["HotelListResponse"] && info["HotelListResponse"]["EanWsError"]
|
103
|
+
message = info["HotelListResponse"]["EanWsError"]["presentationMessage"]
|
104
|
+
elsif info["HotelInformationResponse"] && info["HotelInformationResponse"]["EanWsError"]
|
105
|
+
message = info["HotelInformationResponse"]["EanWsError"]["presentationMessage"]
|
106
|
+
end
|
107
|
+
raise EANException.new(message) if message
|
108
|
+
end
|
101
109
|
|
102
110
|
def self.split(data)
|
103
111
|
parsed = JSON.parse(data)
|
@@ -106,7 +114,7 @@ module Suitcase
|
|
106
114
|
end
|
107
115
|
|
108
116
|
def rooms(info)
|
109
|
-
params = info
|
117
|
+
params = { rooms: [{children: 0, ages: []}] }.merge(info)
|
110
118
|
params[:rooms].each_with_index do |room, n|
|
111
119
|
params["room#{n+1}"] = (room[:children] == 0 ? "" : room[:children].to_s + ",").to_s + room[:ages].join(",").to_s
|
112
120
|
end
|
@@ -116,6 +124,7 @@ module Suitcase
|
|
116
124
|
params.delete(:departure)
|
117
125
|
params["hotelId"] = @id
|
118
126
|
parsed = JSON.parse(Hotel.hit(Hotel.url(:avail, true, true, params)))
|
127
|
+
Hotel.handle_errors(parsed)
|
119
128
|
hotel_id = parsed["HotelRoomAvailabilityResponse"]["hotelId"]
|
120
129
|
rate_key = parsed["HotelRoomAvailabilityResponse"]["rateKey"]
|
121
130
|
supplier_type = parsed["HotelRoomAvailabilityResponse"]["HotelRoomResponse"][0]["supplierType"]
|
@@ -126,7 +135,6 @@ module Suitcase
|
|
126
135
|
options = []
|
127
136
|
types_raw = JSON.parse Hotel.hit(Hotel.url(:paymentInfo, true, true, {}))
|
128
137
|
types_raw["HotelPaymentResponse"].each do |raw|
|
129
|
-
p raw
|
130
138
|
types = raw[0] != "PaymentType" ? [] : raw[1]
|
131
139
|
types.each do |type|
|
132
140
|
options.push PaymentOption.new(type["code"], type["name"])
|
data/lib/suitcase/hotel/room.rb
CHANGED
@@ -20,7 +20,7 @@ module Suitcase
|
|
20
20
|
params["rateTypeCode"] = info[:room_type_code]
|
21
21
|
params["rateCode"] = info[:rate_code]
|
22
22
|
params.delete(:rate_code)
|
23
|
-
p Hotel.
|
23
|
+
p Hotel.shove(Hotel.url(:res, true, true, {}, :post, true), params)
|
24
24
|
end
|
25
25
|
end
|
26
26
|
end
|
data/lib/suitcase/version.rb
CHANGED
data/suitcase.gemspec
CHANGED
@@ -9,7 +9,7 @@ Gem::Specification.new do |s|
|
|
9
9
|
s.email = ["walter.john.nelson@gmail.com"]
|
10
10
|
s.homepage = "http://github.com/thoughtfusion/suitcase"
|
11
11
|
s.summary = %q{Locates available hotels, rental cars, and flights}
|
12
|
-
s.description = %q{Suitcase utilizes the EAN API for locating
|
12
|
+
s.description = %q{Suitcase utilizes the EAN (Expedia.com) API for locating info about hotels, rental cars, and flights.}
|
13
13
|
|
14
14
|
s.rubyforge_project = "suitcase"
|
15
15
|
|
@@ -22,5 +22,4 @@ Gem::Specification.new do |s|
|
|
22
22
|
s.add_development_dependency "cucumber"
|
23
23
|
s.add_development_dependency "rake"
|
24
24
|
s.add_runtime_dependency "json"
|
25
|
-
s.add_runtime_dependency "nokogiri"
|
26
25
|
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.1.
|
4
|
+
version: 1.1.6
|
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-26 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: &
|
16
|
+
requirement: &15869360 !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: *15869360
|
25
25
|
- !ruby/object:Gem::Dependency
|
26
26
|
name: cucumber
|
27
|
-
requirement: &
|
27
|
+
requirement: &15868940 !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: *15868940
|
36
36
|
- !ruby/object:Gem::Dependency
|
37
37
|
name: rake
|
38
|
-
requirement: &
|
38
|
+
requirement: &15868520 !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: *15868520
|
47
47
|
- !ruby/object:Gem::Dependency
|
48
48
|
name: json
|
49
|
-
requirement: &
|
49
|
+
requirement: &15867980 !ruby/object:Gem::Requirement
|
50
50
|
none: false
|
51
51
|
requirements:
|
52
52
|
- - ! '>='
|
@@ -54,20 +54,9 @@ dependencies:
|
|
54
54
|
version: '0'
|
55
55
|
type: :runtime
|
56
56
|
prerelease: false
|
57
|
-
version_requirements: *
|
58
|
-
|
59
|
-
|
60
|
-
requirement: &19011140 !ruby/object:Gem::Requirement
|
61
|
-
none: false
|
62
|
-
requirements:
|
63
|
-
- - ! '>='
|
64
|
-
- !ruby/object:Gem::Version
|
65
|
-
version: '0'
|
66
|
-
type: :runtime
|
67
|
-
prerelease: false
|
68
|
-
version_requirements: *19011140
|
69
|
-
description: Suitcase utilizes the EAN API for locating available hotels, rental cars,
|
70
|
-
and flights.
|
57
|
+
version_requirements: *15867980
|
58
|
+
description: Suitcase utilizes the EAN (Expedia.com) API for locating info about hotels,
|
59
|
+
rental cars, and flights.
|
71
60
|
email:
|
72
61
|
- walter.john.nelson@gmail.com
|
73
62
|
executables: []
|
@@ -106,7 +95,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
106
95
|
version: '0'
|
107
96
|
segments:
|
108
97
|
- 0
|
109
|
-
hash:
|
98
|
+
hash: 2512264335440945833
|
110
99
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
111
100
|
none: false
|
112
101
|
requirements:
|
@@ -115,7 +104,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
115
104
|
version: '0'
|
116
105
|
segments:
|
117
106
|
- 0
|
118
|
-
hash:
|
107
|
+
hash: 2512264335440945833
|
119
108
|
requirements: []
|
120
109
|
rubyforge_project: suitcase
|
121
110
|
rubygems_version: 1.8.10
|