zumata 0.0.1 → 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: d78ff8033bb65e030d681e5fa615bddac28c5eb3
4
- data.tar.gz: afaf5d0ad9ca769b3f895c23d4c74a2bda98a5c6
3
+ metadata.gz: fae9db9329572abb06c48e7e61ae5731ba87983a
4
+ data.tar.gz: 56cf1d78d47d19c41ab232af68ee75e12b6193ad
5
5
  SHA512:
6
- metadata.gz: f0474a4eb7dda8af7f083e17b6f63b108d3f8e560e3347560b407c288ff534aca2c43c9cf8cb6a20125789373c7857551ad1103e5f687a5dc50a2d5e226d4dcc
7
- data.tar.gz: 9d17d7d5822d84c5ea2c7f3b0de0cd8de0ad18cb6a82b6156787537463c0f2547bd80e5e82f6f17dfd2c1e15df3e1ecd8ce3c248b8b12875843113bfbff951f3
6
+ metadata.gz: 1a4e2243b8d2ec44e4ca8eec597127566ecbae9314624c29a7c05a3686f066da7d845a9686f3a0a6a20578ccc218362b493efb00abb3bb9581f087cd31e8446c
7
+ data.tar.gz: b70e448b490ec57c7db72f243e4d39dcb1d188c5af7d2ef4fb39ef4ee5b6179eca7d86977d632cba555e38c1d6f88550a9a5e6627431e88bbf37a94ab537df4a
data/lib/zumata/client.rb CHANGED
@@ -9,19 +9,21 @@ module Zumata
9
9
  class Client
10
10
  include HTTParty
11
11
 
12
- raise Zumata::ClientConfigError unless ENV["ZUMATA_API_URL"]
13
- base_uri ENV["ZUMATA_API_URL"]
14
-
15
- def initialize api_key
16
- @api_key = api_key
12
+ def initialize opts={}
13
+ raise Zumata::ClientConfigError.new("No API URL configured") if Zumata.configuration.nil? || Zumata.configuration.api_url == ''
14
+ @api_url = Zumata.configuration.api_url
15
+ @api_key = opts[:api_key] unless opts[:api_key].nil?
17
16
  @timeout = 600
18
17
  end
19
18
 
19
+ def get_api_key
20
+ @api_key || Zumata.configuration.api_key
21
+ end
20
22
 
21
23
  # GET /search
22
24
  def search_by_destination destination, opts={}
23
25
 
24
- q = { api_key: opts[:api_key] || @api_key,
26
+ q = { api_key: opts[:api_key] || get_api_key,
25
27
  destination: destination,
26
28
  rooms: opts[:rooms] || 1,
27
29
  adults: opts[:adults] || 2,
@@ -36,7 +38,7 @@ module Zumata
36
38
  q[:lang] = opts[:lang] if opts[:lang]
37
39
  q[:timeout] = opts[:timeout] if opts[:timeout]
38
40
 
39
- res = self.class.get("/search", query: q).response
41
+ res = self.class.get("#{@api_url}/search", query: q).response
40
42
 
41
43
  # todo - handle errors from search
42
44
  Zumata::GenericResponse.new(context: q, code: res.code.to_i, body: res.body)
@@ -50,12 +52,12 @@ module Zumata
50
52
  # raise InvalidRequestError unless valid_guest_params?(guest)
51
53
  # raise InvalidRequestError unless valid_payment_params?(payment)
52
54
 
53
- body_params = { api_key: opts[:api_key] || @api_key,
55
+ body_params = { api_key: opts[:api_key] || get_api_key,
54
56
  booking_key: booking_key,
55
57
  guest: guest,
56
58
  payment: payment }
57
59
 
58
- res = self.class.post("/book", body: body_params.to_json, headers: { 'Content-Type' => 'application/json' }, timeout: @timeout)
60
+ res = self.class.post("#{@api_url}/book", body: body_params.to_json, headers: { 'Content-Type' => 'application/json' }, timeout: @timeout)
59
61
 
60
62
  status_code = res.code.to_i
61
63
  raise Zumata::GeneralError, res.body unless VALID_STATUS_CODES.include?(status_code)
@@ -0,0 +1,20 @@
1
+ module Zumata
2
+ class << self
3
+ attr_accessor :configuration
4
+ end
5
+
6
+ def self.configure
7
+ self.configuration ||= Configuration.new
8
+ yield(configuration)
9
+ end
10
+
11
+ class Configuration
12
+ attr_accessor :api_url, :api_key
13
+
14
+ def initialize
15
+ @api_url = ''
16
+ @api_key = nil
17
+ end
18
+ end
19
+ end
20
+
@@ -1,3 +1,3 @@
1
1
  module Zumata
2
- VERSION = "0.0.1"
2
+ VERSION = "0.0.2"
3
3
  end
data/lib/zumata.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require "zumata/version"
2
+ require "zumata/config"
2
3
  require "zumata/responses"
3
4
  require "zumata/errors"
4
5
  require "zumata/client"
data/spec/zumata_spec.rb CHANGED
@@ -4,11 +4,19 @@ require './lib/zumata'
4
4
 
5
5
  describe "Zumata::Client" do
6
6
 
7
+ vcr_recorded_checkin = '11/15/2014'
8
+ vcr_recorded_checkout = '11/16/2014'
9
+
7
10
  raise Zumata::TestConfigError unless ENV["ZUMATA_API_KEY"]
8
- sample_api_key = ENV["ZUMATA_API_KEY"]
9
11
 
10
12
  before(:each) do
11
- @client = Zumata::Client.new(sample_api_key)
13
+
14
+ Zumata.configure do |config|
15
+ config.api_url = ENV["ZUMATA_API_URL"]
16
+ config.api_key = ENV["ZUMATA_API_KEY"]
17
+ end
18
+
19
+ @client = Zumata::Client.new
12
20
  end
13
21
 
14
22
  describe "search_by_destination" do
@@ -17,7 +25,7 @@ describe "Zumata::Client" do
17
25
 
18
26
  # note - when recording the cassette this requires a cached search w/ results to exist
19
27
  destination_id = "f75a8cff-c26e-4603-7b45-1b0f8a5aa100" # Singapore
20
- results = @client.search_by_destination destination_id
28
+ results = @client.search_by_destination destination_id, {checkin: vcr_recorded_checkin, checkout: vcr_recorded_checkout}
21
29
  data = JSON.parse(results.body)
22
30
  expect(data["searchCompleted"]).to_not be(nil)
23
31
  expect(data["content"]["hotels"].length).to be > 0
@@ -89,7 +97,7 @@ describe "Zumata::Client" do
89
97
 
90
98
  destination_id = "53d32e78-c548-42af-5236-fb89e0977722" # Barcelona
91
99
  results = VCR.use_cassette('search_by_destination_done_2', :record => :new_episodes) do
92
- @client.search_by_destination destination_id
100
+ @client.search_by_destination destination_id, {checkin: vcr_recorded_checkin, checkout: vcr_recorded_checkout}
93
101
  end
94
102
 
95
103
  data = JSON.parse(results.body)
@@ -112,7 +120,7 @@ describe "Zumata::Client" do
112
120
 
113
121
  destination_id = "f75a8cff-c26e-4603-7b45-1b0f8a5aa100" # Singapore
114
122
  results = VCR.use_cassette('search_by_destination_done', :record => :new_episodes) do
115
- @client.search_by_destination(destination_id)
123
+ @client.search_by_destination(destination_id, {checkin: vcr_recorded_checkin, checkout: vcr_recorded_checkout})
116
124
  end
117
125
 
118
126
  data = JSON.parse(results.body)
@@ -134,7 +142,7 @@ describe "Zumata::Client" do
134
142
 
135
143
  destination_id = "f75a8cff-c26e-4603-7b45-1b0f8a5aa100" # Singapore
136
144
  results = VCR.use_cassette('search_by_destination_done', :record => :new_episodes) do
137
- @client.search_by_destination destination_id
145
+ @client.search_by_destination destination_id, {checkin: vcr_recorded_checkin, checkout: vcr_recorded_checkout}
138
146
  end
139
147
 
140
148
  data = JSON.parse(results.body)
@@ -154,7 +162,7 @@ describe "Zumata::Client" do
154
162
 
155
163
  destination_id = "53d32e78-c548-42af-5236-fb89e0977722" # Barcelona
156
164
  results = VCR.use_cassette('search_by_destination_done_2', :record => :new_episodes) do
157
- @client.search_by_destination destination_id
165
+ @client.search_by_destination destination_id, {checkin: vcr_recorded_checkin, checkout: vcr_recorded_checkout}
158
166
  end
159
167
 
160
168
  data = JSON.parse(results.body)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: zumata
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.1
4
+ version: 0.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Jonathan Gomez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-09-16 00:00:00.000000000 Z
11
+ date: 2014-09-24 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -128,6 +128,7 @@ files:
128
128
  - Rakefile
129
129
  - lib/zumata.rb
130
130
  - lib/zumata/client.rb
131
+ - lib/zumata/config.rb
131
132
  - lib/zumata/errors.rb
132
133
  - lib/zumata/responses.rb
133
134
  - lib/zumata/version.rb