suitcase 1.1.3 → 1.1.4

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