expedia 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +11 -0
- data/README.textile +8 -1
- data/lib/expedia.rb +1 -1
- data/lib/expedia/api.rb +3 -5
- data/lib/expedia/http_service.rb +19 -20
- data/lib/expedia/version.rb +1 -1
- data/lib/generators/templates/expedia.txt +4 -1
- metadata +3 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ccf1ce4946c74fe5bf410bb1233ec0e4a2843ce6
|
4
|
+
data.tar.gz: ac8f8962e58013fe545abe46698736239db8b654
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b3670577a70da4abda79ff55c962f00ddf4ace1c822950cbfa4a1e1531650f182d5d4a5a66f56ee4d92ceadb36a26f7162fea8ae7a455ecdee23da85223bddf3
|
7
|
+
data.tar.gz: 42902849d59db49d22a0ff2a0d71b0dac8b65a8a441750320625f1404f34706682465efd84e04e0a769d5a4f0d152387d0eeb8fd02bdfeb70ba0b1049e9365dd
|
data/.travis.yml
ADDED
data/README.textile
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
h1. Expedia !https://travis-ci.org/zaidakram/expedia.svg?branch=master(Expedia)!:https://travis-ci.org/zaidakram/expedia
|
1
|
+
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
|
2
2
|
|
3
3
|
Expedia is a ruby wrapper for ["EAN - Expedia Affiliate Network":http://www.expediaaffiliate.com] APIs.
|
4
4
|
|
@@ -135,3 +135,10 @@ Expedia::Utils.logger = Rails.logger
|
|
135
135
|
</pre>
|
136
136
|
|
137
137
|
|
138
|
+
h3. Contributing
|
139
|
+
|
140
|
+
1. Fork it
|
141
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
142
|
+
3. Commit your changes (`git commit -am 'Added some feature'`)
|
143
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
144
|
+
5. Create new Pull Request
|
data/lib/expedia.rb
CHANGED
@@ -23,7 +23,7 @@ module Expedia
|
|
23
23
|
class << self
|
24
24
|
|
25
25
|
attr_accessor :cid, :api_key, :shared_secret, :format, :locale,
|
26
|
-
:currency_code, :minor_rev
|
26
|
+
:currency_code, :minor_rev, :timeout, :open_timeout
|
27
27
|
|
28
28
|
# Default way to setup Expedia. Run generator to create
|
29
29
|
# a fresh initializer with all configuration values.
|
data/lib/expedia/api.rb
CHANGED
@@ -6,11 +6,9 @@ module Expedia
|
|
6
6
|
# @param args [Hash] All the params required for 'get_list' call
|
7
7
|
# @return [Expedia::HTTPService::Response] on success. A response object representing the results from Expedia
|
8
8
|
# @return [Expedia::APIError] on Error.
|
9
|
-
# @note A POST request is made instead of GET if '
|
9
|
+
# @note A POST request is made instead of GET if 'hotelIdList' length > 200
|
10
10
|
def get_list(args)
|
11
|
-
|
12
|
-
method = (args[no_of_results.to_sym].to_i > 200 || args[no_of_results].to_i > 200) ||
|
13
|
-
args[no_of_results.downcase.to_sym].to_i > 200 || args[no_of_results.downcase].to_i > 200 ? :post : :get
|
11
|
+
method = (args[:hotelIdList] || args["hotelIdList"] || []).length > 200 ? :post : :get
|
14
12
|
services('/ean-services/rs/hotel/v3/list', args, method)
|
15
13
|
end
|
16
14
|
|
@@ -43,7 +41,7 @@ module Expedia
|
|
43
41
|
end
|
44
42
|
|
45
43
|
def get_reservation(args)
|
46
|
-
HTTPService.make_request('/ean-services/rs/hotel/v3/res', args, :post, { :reservation_api => true, :use_ssl => true })
|
44
|
+
HTTPService.make_request('/ean-services/rs/hotel/v3/res', args, :post, { :reservation_api => true, :use_ssl => true, :ignore_timeout => true })
|
47
45
|
end
|
48
46
|
|
49
47
|
def get_payment_info(args)
|
data/lib/expedia/http_service.rb
CHANGED
@@ -27,6 +27,22 @@ module Expedia
|
|
27
27
|
"#{options[:use_ssl] ? "https" : "http"}://#{server}"
|
28
28
|
end
|
29
29
|
|
30
|
+
|
31
|
+
# Adding open and read timeouts
|
32
|
+
#
|
33
|
+
# open timeout - the amount of time you are willing to wait for 'opening a connection'
|
34
|
+
# (read) timeout - the amount of time you are willing to wait for some data to be received from the connected party.
|
35
|
+
# @param conn - Faraday connection object
|
36
|
+
#
|
37
|
+
# @return the connection obj with the timeouts set if they have been initialized
|
38
|
+
def add_timeouts(conn, options)
|
39
|
+
if !options[:ignore_timeout]
|
40
|
+
conn.options.timeout = Expedia.timeout.to_i if Expedia.timeout.present?
|
41
|
+
conn.options.open_timeout = Expedia.open_timeout.to_i if Expedia.open_timeout.present?
|
42
|
+
end
|
43
|
+
conn
|
44
|
+
end
|
45
|
+
|
30
46
|
# Makes a request directly to Expedia.
|
31
47
|
# @note You'll rarely need to call this method directly.
|
32
48
|
#
|
@@ -47,6 +63,7 @@ module Expedia
|
|
47
63
|
request_options = {:params => (verb == :get ? args : {})}
|
48
64
|
# set up our Faraday connection
|
49
65
|
conn = Faraday.new(server(options), request_options)
|
66
|
+
conn = add_timeouts(conn, options)
|
50
67
|
response = conn.send(verb, path, (verb == :post ? args : {}))
|
51
68
|
|
52
69
|
# Log URL and params information
|
@@ -61,36 +78,18 @@ module Expedia
|
|
61
78
|
end
|
62
79
|
end
|
63
80
|
|
64
|
-
# Encodes a given hash into a query string.
|
65
|
-
#
|
66
|
-
# @param params_hash a hash of values to CGI-encode and appropriately join
|
67
|
-
#
|
68
|
-
# @example
|
69
|
-
# Expedia.http_service.encode_params({:a => 2, :b => "My String"})
|
70
|
-
# => "a=2&b=My+String"
|
71
|
-
#
|
72
|
-
# @return the appropriately-encoded string
|
73
|
-
# Method currently not in use.
|
74
|
-
def encode_params(param_hash)
|
75
|
-
((param_hash || {}).sort_by{|k, v| k.to_s}.collect do |key_and_value|
|
76
|
-
key_and_value[1] = MultiJson.dump(key_and_value[1]) unless key_and_value[1].is_a? String
|
77
|
-
"#{key_and_value[0].to_s}=#{CGI.escape key_and_value[1]}"
|
78
|
-
end).join("&")
|
79
|
-
end
|
80
|
-
|
81
|
-
|
82
81
|
# Creates a Signature for Expedia using MD5 Checksum Auth.
|
83
82
|
# Shared and Api keys are required for Signature along with the current utc time.
|
84
83
|
def signature
|
85
84
|
if Expedia.cid && Expedia.api_key && Expedia.shared_secret
|
86
|
-
Digest::MD5.hexdigest(Expedia.api_key+Expedia.shared_secret+Time.now.utc.to_i.to_s)
|
85
|
+
Digest::MD5.hexdigest(Expedia.api_key + Expedia.shared_secret + Time.now.utc.to_i.to_s)
|
87
86
|
else
|
88
87
|
raise Expedia::AuthCredentialsError, "cid, api_key and shared_secret are required for Expedia Authentication."
|
89
88
|
end
|
90
89
|
end
|
91
90
|
|
92
91
|
# Common Parameters required for every Call to Expedia Server.
|
93
|
-
#
|
92
|
+
# @return [Hash] of all common parameters.
|
94
93
|
def common_parameters
|
95
94
|
{ :cid => Expedia.cid, :sig => signature, :apiKey => Expedia.api_key, :minorRev => Expedia.minor_rev,
|
96
95
|
:_type => 'json', :locale => Expedia.locale, :currencyCode => Expedia.currency_code }
|
data/lib/expedia/version.rb
CHANGED
@@ -4,5 +4,8 @@ Expedia.setup do |config|
|
|
4
4
|
config.shared_secret = 'your_shared_secret'
|
5
5
|
config.locale = 'en_US' # For Example 'de_DE'. Default is 'en_US'
|
6
6
|
config.currency_code = 'USD' # For Example 'EUR'. Default is 'USD'
|
7
|
-
config.minor_rev =
|
7
|
+
config.minor_rev = 28 # between 4-28 as of Jan 2015. If not set, 4 is used by EAN.
|
8
|
+
# optional configurations...
|
9
|
+
config.timeout = 1 # read timeout in sec
|
10
|
+
config.open_timeout = 1 # connection timeout in sec
|
8
11
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: expedia
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Zaid Akram
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2015-01-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: multi_json
|
@@ -76,6 +76,7 @@ extra_rdoc_files: []
|
|
76
76
|
files:
|
77
77
|
- .gitignore
|
78
78
|
- .rspec
|
79
|
+
- .travis.yml
|
79
80
|
- Gemfile
|
80
81
|
- LICENSE.txt
|
81
82
|
- README.textile
|