suitcase 1.1.4 → 1.1.6

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile CHANGED
@@ -1,4 +1,3 @@
1
1
  source "http://rubygems.org"
2
2
 
3
- # Specify your gem's dependencies in suitcase.gemspec
4
3
  gemspec
@@ -1,7 +1,7 @@
1
1
  module Suitcase
2
2
  class EANException < Exception
3
- def initialize
4
- super("TravelNow.com cannot service this request")
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
- 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"]
100
- end
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"])
@@ -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.hit(Hotel.url(:res, true, true, params))
23
+ p Hotel.shove(Hotel.url(:res, true, true, {}, :post, true), params)
24
24
  end
25
25
  end
26
26
  end
@@ -1,3 +1,3 @@
1
1
  module Suitcase
2
- VERSION = "1.1.4"
2
+ VERSION = "1.1.6"
3
3
  end
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 available hotels, rental cars, and flights.}
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
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-24 00:00:00.000000000 Z
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: &19469920 !ruby/object:Gem::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: *19469920
24
+ version_requirements: *15869360
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: cucumber
27
- requirement: &19013180 !ruby/object:Gem::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: *19013180
35
+ version_requirements: *15868940
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &19012500 !ruby/object:Gem::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: *19012500
46
+ version_requirements: *15868520
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: json
49
- requirement: &19011800 !ruby/object:Gem::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: *19011800
58
- - !ruby/object:Gem::Dependency
59
- name: nokogiri
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: -2225854137888015494
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: -2225854137888015494
107
+ hash: 2512264335440945833
119
108
  requirements: []
120
109
  rubyforge_project: suitcase
121
110
  rubygems_version: 1.8.10