suitcase 1.1.3 → 1.1.4

Sign up to get free protection for your applications and to get access to all the features.
data/Rakefile CHANGED
@@ -1 +1,6 @@
1
1
  require "bundler/gem_tasks"
2
+ # require 'suitcase'
3
+
4
+ task :install_nodoc => [:build] do
5
+ system "gem install pkg/suitcase-#{Suitcase::VERSION}.gem --no-ri --no-rdoc"
6
+ end
@@ -1,35 +1,7 @@
1
1
  module Suitcase
2
- class PaymentOption
3
- attr_accessor :code, :name
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
- params[:amenities].each do |amenity|
89
- amenities += AMENITIES[amenity].to_s + ","
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
- split(hit(url(:list, true, true, params))).each do |hotel_data|
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, image_urls: (parsed["HotelInformationResponse"]["HotelImages"]["HotelImage"].map { |x| x["url"] } unless !parsed["HotelInformationResponse"]["HotelImages"]["HotelImage"]) }
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,10 @@
1
+ module Suitcase
2
+ class PaymentOption
3
+ attr_accessor :code, :name
4
+
5
+ def initialize(code, name)
6
+ @code = code
7
+ @name = name
8
+ end
9
+ end
10
+ end
@@ -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
@@ -1,3 +1,3 @@
1
1
  module Suitcase
2
- VERSION = "1.1.3"
2
+ VERSION = "1.1.4"
3
3
  end
data/lib/suitcase.rb CHANGED
@@ -1,4 +1,6 @@
1
1
  require 'json'
2
2
  require 'net/http'
3
3
  require 'suitcase/version'
4
- require 'suitcase/hotel'
4
+ require 'suitcase/hotel/room'
5
+ require 'suitcase/hotel/payment_option'
6
+ require 'suitcase/hotel/hotel'
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.3
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: &14206260 !ruby/object:Gem::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: *14206260
24
+ version_requirements: *19469920
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: cucumber
27
- requirement: &14205820 !ruby/object:Gem::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: *14205820
35
+ version_requirements: *19013180
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: rake
38
- requirement: &14205280 !ruby/object:Gem::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: *14205280
46
+ version_requirements: *19012500
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: json
49
- requirement: &14204520 !ruby/object:Gem::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: *14204520
57
+ version_requirements: *19011800
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: nokogiri
60
- requirement: &14203920 !ruby/object:Gem::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: *14203920
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: -1114543209973713619
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: -1114543209973713619
118
+ hash: -2225854137888015494
117
119
  requirements: []
118
120
  rubyforge_project: suitcase
119
121
  rubygems_version: 1.8.10