Skip to content

Ruby library that utilizes the EAN (Expedia.com) API for locating available hotels and the Hotwire API for locating rental cars.

Notifications You must be signed in to change notification settings

terriblelabs/suitcase

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Suitcase

Ruby library that utilizes the EAN (Expedia.com) API for locating available hotels through their version 3 API. It also uses the Hotwire API to search for rental cars.

Installation

Suitcase is a Ruby gem, meaning it can be installed via a simple gem install suitcase. It can also be added to a project's Gemfile with the following line: gem 'suitcase' (or gem 'suitcase', git: "git://github.com/thoughtfusion/suitcase.git", branch: "develop" for the latest updates).

Usage

Hotels

First, configure the library:

Suitcase.configure do |config|
  config.hotel_api_key = "..." # set the Hotel API key from developer.ean.com
  config.hotel_cid = "..." # set the CID from developer.ean.com
  config.cache = Hash.new # set the caching mechanism (see below)
end

Full example:

# Find Hotels in Boston
hotels = Suitcase::Hotel.find(location: "Boston, MA")
# Pick a specific hotel
hotel = hotels[1]
# Get the rooms for a specific date
rooms = hotel.rooms(arrival: "7/1/2013", departure: "7/8/2013", rooms: [{ adults: 1, children_ages: [2, 3] }, { adults: 1, children_ages: [4] }])
# Find a payment option that is compatible with USD
payment_option = Suitcase::Hotel::PaymentOption.find(currency_code: "USD")
# Pick a specific room
room = rooms.first
# Set the bed type on each of the rooms to be ordered
room.rooms.each { |r| r[:bed_type] = room.bed_types.first }
# Reserve the room, with the reservation_hash described on 'User flow'
room.reserve!(reservation_hash)

Caching requests

You can setup a cache to store all API requests that do not contain secure information (i.e. anything but booking requests). A cache needs to be able store deeply nested Hashes and have a method called #[] to access them. An example of setting the cache is given above. Check the examples/hash_adapter.rb for a trivial example of the required methods. A Redis adapter is also in the examples directory.

Using the downloadable images

EAN provides a downloadable image "database" that doesn't require using the image URLs fetched by the API.For example usage of this database, check out examples/hotel_image_db.rb.

Car rentals

Add the required configuration options:

# Or add to your existing configure block
Suitcase.configure do |config|
  config.hotwire_api_key = "..." # set the Hotwire API key
  config.hotwire_linkshare_id = "..." # optionally set the Hotwire linkshare ID
end

Example usage:

# Find all rental cars from the specified dates/times at LAX
rentals = Suitcase::CarRental.find(destination: "LAX", start_date: "7/14/2012", end_date: "7/21/2012", pickup_time: "6:30", dropoff_time: "11:30")
# => [#<Suitcase::CarRental ...>, ...]

Caching is not recommended for car rentals, because they all change so quickly.

Contributing

Running the tests

To set up for the tests, you need to edit the file test/keys.rb with the proper information. Currently, testing reservations is unsupported. You can run the tests with the default rake task by running rake from the command line.

Pull requests/issues

Please submit any useful pull requests through GitHub, preferably to the develop branch in the repo. If you find any bugs, please report them with the issue tracker! Thanks.

About

Ruby library that utilizes the EAN (Expedia.com) API for locating available hotels and the Hotwire API for locating rental cars.

Resources

Stars

Watchers

Forks

Packages

No packages published