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 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