Expedia is a ruby wrapper for EAN (Expedia Affiliate Network)
Expedia is a ruby wrapper for EAN - Expedia Affiliate Network APIs.
Other details of this gem are:
For Rails Add this line to your application's Gemfile:
gem 'expedia'
And then execute:
$ bundle
Or install it yourself as:
$ gem install expedia
Either you can configure Expedia in code on run-time
Expedia.cid = 55505
Expedia.api_key = 'your_api_key'
Expedia.shared_secret = 'your_shared_secret'
Expedia.locale = 'en_US'
Expedia.currency_code = 'USD'
Expedia.minor_rev = 13
Or you can execute the following command to create an intializer:
$ rake expedia:initialize
After configuring keys for your EAN application, Default locale, currency and minor_rev use
# Instentiate api object
api = Expedia::Api.new
# Method to search hotel.
# developer.ean.com/docs/read/hotels/version_3/request_hotel_list
response = api.get_list({:propertyName => 'Hotel Moa Berlin',
:destinationString => 'berlin'})
response.exception? # false if success
Following methods are expeosed by
Note: All method naming is done in correspondence with Expedia services and ruby conventions see Hotel API Documentation - Services section
get_list({})
geo_search({})
get_availability({})
get_room_images({})
get_information({})
get_rules({})
get_itinerary({})
get_alternate_properties({})
get_reservation({})
get_payment_info({})
get_cancel({})
get_ping({})
get_static_reservation({}) # To test Reservation (Static Reservation)
Every method accepts Hash of parameter specific to every API. see EAN Docs for more details.
if request is successfull you will get a
response.status
response.body
response.headers
In case of any error a
Note: Expedia responds with status of 200 even if there is an exception (most of the times). So no Exception is raised!
# developer.ean.com/docs/read/error_handling/Hotel_V3_Exception_Details
response.status # Response status
response.error_body # Complete error body
response.category # Value indicating the nature of the exception or the reason it occurred
response.presentation_message # Presentation error message returned
response.verbose_message # More specific detailed error message
response.handling # value indicating the severity of the exception and how it may be handled
For Static reservation use
CAUTION: Do Not send adress and booking information (creditCardNumber, creditCardIdentifier, creditCardExpirationMonth, creditCardExpirationYear, address1) in parameters to the method. Especially do not pass address1 parameter They are already been taken care of. For more on Static booking see Static Test Booking Credit Card Information
A static Booking example.
response = api.get_static_reservation({ :arrivalDate => "10/10/2013", :departureDate => "10/12/2013",
:hotelID => 359433, :supplierType => "E", :rateKey => "084eab14-335e-46d6-aa2e-766fce6be32c",
:roomTypeCode => 200007964, :rateCode => 200865704, :chargeableRate => "142.8",
:room1 => "1", :room1FirstName => "test", :room1LastName => "testers", :room1BedTypeId => "15",
:room1SmokingPreference => "NS", :email => "test@tesing.com", :city => 'Bellevue',
:stateProvinceCode => 'WA', :countryCode => 'US', :postalCode => 98004 })
Expedia::Utils.logger = Rails.logger
# And loggig methods available
[:debug, :info, :warn, :error, :fatal]