Expedia
Expedia is a ruby wrapper for EAN (Expedia Affiliate Network)
Install / Use
/learn @zaidakram/ExpediaREADME
h1. Expedia !https://travis-ci.org/zaidakram/expedia.svg?branch=master(Expedia)!:https://travis-ci.org/zaidakram/expedia !https://badge.fury.io/rb/expedia.svg!:http://badge.fury.io/rb/expedia
Expedia is a ruby wrapper for ["EAN - Expedia Affiliate Network":http://www.expediaaffiliate.com] APIs.
Other details of this gem are:
- It uses the the latest verion of the EAN API. i.e ["Version 3":http://developer.ean.com/docs/api-change-log]
- Only REST API support (No XML or SOAP support)
- It uses Signature Pro method for Authentication. See ["Live API Key Authentication and Access":http://developer.ean.com/docs/getting-started/authentication/]
h2. Installation
For Rails Add this line to your application's Gemfile:
<pre> gem 'expedia' </pre>And then execute:
<pre> $ bundle </pre>Or install it yourself as:
<pre> $ gem install expedia </pre>Either you can configure Expedia in code on run-time
<pre> 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 Expedia.use_signature = true # must be false if using ip whitelisting instead of signature # Optional configuration... Expedia.timeout = 1 # read timeout in sec Expedia.open_timeout = 1 # connection timeout in sec </pre>Or you can execute the following command to create an intializer (if you are using rails)
<pre> $ rails g expedia:initialize </pre>h2. Usage
After configuring keys, default locale, currency and minor_rev for EAN use
<pre> # Instentiate api object api = Expedia::Api.new # Method to search for a hotel. see http://developer.ean.com/docs/hotel-list/ response = api.get_list({:propertyName => 'Hotel Moa', :destinationString => 'berlin'}) # execute this method to know if there is any exception response.exception? # false if success </pre>Following methods are expeosed by Expedia::API object
<pre> 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) </pre>h3. Success
if request is successfull you will get a Expedia::HTTPService::Response object in response. and you can use
<pre> response.status response.body # Returns Parsed body of response. response.headers </pre>h3. Error
In case of any error a Expedia::APIError object is returned.
Note: Expedia responds with status of 200 even if there is an exception (most of the times). So no Exception is raised!
<pre> # See http://developer.ean.com/docs/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 </pre>h3. Test Booking (Static Reservation)
For Static reservation use @get_static_reservation()@ method.
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":http://developer.ean.com/docs/Test_Booking_Procedures]
A static Booking example.
<pre> 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 }) </pre>h3. Logging
Expedia::Utils.logger points to STDOUT by default. You can use it to Log in Rails applications.
<pre> Expedia::Utils.logger = Rails.logger # And loggig methods available [:debug, :info, :warn, :error, :fatal] # Default logger level is Logger::ERROR. You can change it by setting Expedia.logger.level = Logger::DEBUG # Or whatever level you want... </pre>h3. Contributing
- Fork it
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Added some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request
Related Skills
node-connect
343.1kDiagnose OpenClaw node connection and pairing failures for Android, iOS, and macOS companion apps
frontend-design
90.0kCreate distinctive, production-grade frontend interfaces with high design quality. Use this skill when the user asks to build web components, pages, or applications. Generates creative, polished code that avoids generic AI aesthetics.
openai-whisper-api
343.1kTranscribe audio via OpenAI Audio Transcriptions API (Whisper).
qqbot-media
343.1kQQBot 富媒体收发能力。使用 <qqmedia> 标签,系统根据文件扩展名自动识别类型(图片/语音/视频/文件)。
