suitcase 1.2.6 → 1.2.7

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/README.md CHANGED
@@ -1,7 +1,7 @@
1
1
  Suitcase
2
2
  ========
3
3
 
4
- Suitcase is a Ruby library that utilizes the EAN (Expedia.com) API for locating available hotels, rental cars, and flights.
4
+ Ruby library that utilizes the EAN (Expedia.com) API for locating available hotels (and maybe rental cars and flights someday, too).
5
5
 
6
6
  Installation
7
7
  ------------
@@ -22,14 +22,14 @@ module Suitcase
22
22
  extend Suitcase::Helpers
23
23
 
24
24
  AMENITIES = { pool: 1,
25
- fitness_center: 2,
26
- restaurant: 3,
27
- children_activities: 4,
28
- breakfast: 5,
29
- meeting_facilities: 6,
30
- pets: 7,
31
- wheelchair_accessible: 8,
32
- kitchen: 9 }
25
+ fitness_center: 2,
26
+ restaurant: 3,
27
+ children_activities: 4,
28
+ breakfast: 5,
29
+ meeting_facilities: 6,
30
+ pets: 7,
31
+ wheelchair_accessible: 8,
32
+ kitchen: 9 }
33
33
 
34
34
  attr_accessor :id, :name, :address, :city, :province, :amenities, :country_code, :high_rate, :low_rate, :longitude, :latitude, :rating, :postal_code, :supplier_type, :images, :nightly_rate_total, :airport_code, :property_category, :confidence_rating, :amenity_mask, :location_description, :short_description, :hotel_in_destination, :proximity_distance, :property_description, :number_of_floors, :number_of_rooms, :deep_link, :tripadvisor_rating
35
35
 
@@ -52,7 +52,7 @@ module Suitcase
52
52
  # an Array of Hotels.
53
53
  def self.find(info)
54
54
  if info[:ids]
55
- info[:ids].map { |id| find_by_id(id, info[:session]) }
55
+ find_by_ids(info[:ids], info[:session])
56
56
  elsif info[:id]
57
57
  find_by_id(info[:id], info[:session])
58
58
  else
@@ -73,6 +73,7 @@ module Suitcase
73
73
  else
74
74
  url = url(:method => "info", :params => params, :session => session)
75
75
  raw = parse_response(url)
76
+ handle_errors(raw)
76
77
  Configuration.cache.save_query(:info, params, raw) if Configuration.cache?
77
78
  end
78
79
  hotel_data = parse_information(raw)
@@ -80,6 +81,24 @@ module Suitcase
80
81
  Hotel.new(hotel_data)
81
82
  end
82
83
 
84
+ def self.find_by_ids(ids, session)
85
+ params = { hotelIdList: ids.join(",") }
86
+ if Configuration.cache? and Configuration.cache.cached?(:list, params)
87
+ raw = Configuration.cache.get_query(:list, params)
88
+ else
89
+ url = url(:method => "list", :params => params, :session => session)
90
+ raw = parse_response(url)
91
+ handle_errors(raw)
92
+ Configuration.cache.save_query(:list, params, raw) if Configuration.cache?
93
+ end
94
+ hotels = []
95
+ split(raw).each do |hotel_data|
96
+ hotels.push Hotel.new(parse_information(hotel_data))
97
+ end
98
+ update_session(raw, session)
99
+ hotels
100
+ end
101
+
83
102
  # Public: Find a hotel by info other than it's id.
84
103
  #
85
104
  # info - a Hash of options described in the Hotel
@@ -92,7 +111,7 @@ module Suitcase
92
111
  params.delete(:results)
93
112
  params["destinationString"] = params[:location]
94
113
  params.delete(:location)
95
- amenities = params[:amenities] ? params[:amenities].map { |amenity| old + AMENITIES[amenity] }.join(",") : nil
114
+ amenities = params[:amenities] ? params[:amenities].map { |amenity| AMENITIES[amenity] }.join(",") : nil
96
115
  params["minRate"] = params[:min_rate] if params[:min_rate]
97
116
  params["maxRate"] = params[:max_rate] if params[:max_rate]
98
117
  params[:amenities] = amenities if amenities
@@ -150,7 +169,7 @@ module Suitcase
150
169
  message = info["HotelInformationResponse"]["EanWsError"]["presentationMessage"]
151
170
  end
152
171
  raise EANException.new(message) if message
153
- end
172
+ end
154
173
 
155
174
  def self.split(parsed)
156
175
  hotels = parsed["HotelListResponse"]["HotelList"]
@@ -1,3 +1,3 @@
1
1
  module Suitcase
2
- VERSION = "1.2.6"
2
+ VERSION = "1.2.7"
3
3
  end
data/suitcase.gemspec CHANGED
@@ -8,8 +8,8 @@ Gem::Specification.new do |s|
8
8
  s.authors = ["Walter Nelson"]
9
9
  s.email = ["walter.john.nelson@gmail.com"]
10
10
  s.homepage = "http://github.com/thoughtfusion/suitcase"
11
- s.summary = %q{Locates 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.}
11
+ s.summary = %q{Locates available hotels with the Expedia API}
12
+ s.description = %q{Ruby library that utilizes the EAN (Expedia.com) API for locating available hotels (and maybe rental cars and flights someday, too).}
13
13
 
14
14
  s.rubyforge_project = "suitcase"
15
15
 
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.2.6
4
+ version: 1.2.7
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2012-01-15 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &22060760 !ruby/object:Gem::Requirement
16
+ requirement: &16751760 !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: *22060760
24
+ version_requirements: *16751760
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &22059980 !ruby/object:Gem::Requirement
27
+ requirement: &16751320 !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: *22059980
35
+ version_requirements: *16751320
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: factory_girl
38
- requirement: &22058860 !ruby/object:Gem::Requirement
38
+ requirement: &16750760 !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: *22058860
46
+ version_requirements: *16750760
47
47
  - !ruby/object:Gem::Dependency
48
48
  name: json
49
- requirement: &22058320 !ruby/object:Gem::Requirement
49
+ requirement: &16750320 !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: *22058320
57
+ version_requirements: *16750320
58
58
  - !ruby/object:Gem::Dependency
59
59
  name: patron
60
- requirement: &22057560 !ruby/object:Gem::Requirement
60
+ requirement: &16749760 !ruby/object:Gem::Requirement
61
61
  none: false
62
62
  requirements:
63
63
  - - ! '>='
@@ -65,9 +65,9 @@ dependencies:
65
65
  version: '0'
66
66
  type: :runtime
67
67
  prerelease: false
68
- version_requirements: *22057560
69
- description: Suitcase utilizes the EAN (Expedia.com) API for locating info about hotels,
70
- rental cars, and flights.
68
+ version_requirements: *16749760
69
+ description: Ruby library that utilizes the EAN (Expedia.com) API for locating available
70
+ hotels (and maybe rental cars and flights someday, too).
71
71
  email:
72
72
  - walter.john.nelson@gmail.com
73
73
  executables: []
@@ -120,7 +120,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
120
120
  version: '0'
121
121
  segments:
122
122
  - 0
123
- hash: -2601824217631768176
123
+ hash: -2177735995865373908
124
124
  required_rubygems_version: !ruby/object:Gem::Requirement
125
125
  none: false
126
126
  requirements:
@@ -129,13 +129,13 @@ required_rubygems_version: !ruby/object:Gem::Requirement
129
129
  version: '0'
130
130
  segments:
131
131
  - 0
132
- hash: -2601824217631768176
132
+ hash: -2177735995865373908
133
133
  requirements: []
134
134
  rubyforge_project: suitcase
135
135
  rubygems_version: 1.8.10
136
136
  signing_key:
137
137
  specification_version: 3
138
- summary: Locates available hotels, rental cars, and flights
138
+ summary: Locates available hotels with the Expedia API
139
139
  test_files:
140
140
  - spec/caching_spec.rb
141
141
  - spec/helpers_spec.rb