booker_ruby 1.0.1 → 1.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: 8b39923daabcfec1bb62dd8c6c0a479249cd6846
4
- data.tar.gz: cd5967c5745415270ea1d9d16f53b58b2a5d11f0
3
+ metadata.gz: 41e10ed27065b0384388bc2534403a150f85b241
4
+ data.tar.gz: d4d0cb86460f39b8b1672b82ded24c7b46b17831
5
5
  SHA512:
6
- metadata.gz: bc9b5ff26181dcb216b03755ac25467e87ee928a9156a6f726692bf741bbfd5ccb1bfc321076aa8f1cd68283d53e9fe6e3d9f0f4aa0fa38f1ac634717f2f1867
7
- data.tar.gz: 3013213b0f4c4d360ddabbf8877b1d68a079bbc24a0872c9a3c763e20410293c8cfff9ea82607784086f27637ab8d82c0bdcf5d6273984df874d2f17ded0b6e9
6
+ metadata.gz: 45ff3bbbf13e5f33c60fd33510806c90f8d4a83097b28f6f484e48f4d089b2e475b6cf064f0efac703d62c3cb2e8299e896102819257b12e9ae1410d01fba447
7
+ data.tar.gz: 4c141bb19dc240ad23c118fc7f2d4f2d7a5b063911c3615feabb9d6942f592b8c84fca3b856a959d90786d5ecd300f355347d2c63688c9cb7cdbbbad0578f2f6
@@ -2,31 +2,21 @@ module Booker
2
2
  class BusinessClient < Client
3
3
  include Booker::BusinessREST
4
4
 
5
- attr_accessor :booker_account_name, :booker_username, :booker_password
6
-
7
- def initialize(options={})
8
- self.base_url = ENV['BOOKER_BUSINESS_SERVICE_URL'] || 'https://apicurrent-app.booker.ninja/webservice4/json/BusinessService.svc'
9
- super
10
- end
5
+ ACCESS_TOKEN_HTTP_METHOD = :post
6
+ ACCESS_TOKEN_ENDPOINT = '/accountlogin'.freeze
11
7
 
12
- def get_access_token
13
- http_options = {
14
- client_id: self.client_id,
15
- client_secret: self.client_secret,
16
- 'AccountName' => self.booker_account_name,
17
- 'UserName' => self.booker_username,
18
- 'Password' => self.booker_password
19
- }
20
- response = post('/accountlogin', http_options, nil).parsed_response
21
-
22
- raise Booker::InvalidApiCredentials.new(http_options, response) unless response.present?
8
+ attr_accessor :booker_account_name, :booker_username, :booker_password
23
9
 
24
- self.temp_access_token_expires_at = Time.now + response['expires_in'].to_i.seconds
25
- self.temp_access_token = response['access_token']
10
+ def env_base_url_key; 'BOOKER_BUSINESS_SERVICE_URL'; end
26
11
 
27
- update_token_store
12
+ def default_base_url; 'https://apicurrent-app.booker.ninja/webservice4/json/BusinessService.svc'; end
28
13
 
29
- self.temp_access_token
14
+ def access_token_options
15
+ super.merge!(
16
+ 'AccountName' => self.booker_account_name,
17
+ 'UserName' => self.booker_username,
18
+ 'Password' => self.booker_password
19
+ )
30
20
  end
31
21
  end
32
22
  end
@@ -1,15 +1,19 @@
1
1
  module Booker
2
2
  class Client
3
- attr_accessor :base_url, :client_id, :client_secret, :temp_access_token, :temp_access_token_expires_at, :token_store, :token_store_callback_method
3
+ attr_accessor :base_url, :client_id, :client_secret, :temp_access_token, :temp_access_token_expires_at,
4
+ :token_store, :token_store_callback_method
4
5
 
6
+ ACCESS_TOKEN_HTTP_METHOD = :get
7
+ ACCESS_TOKEN_ENDPOINT = '/access_token'.freeze
5
8
  TimeZone = 'Eastern Time (US & Canada)'.freeze
6
9
 
7
10
  def initialize(options = {})
8
- options.each do |key, value|
9
- send(:"#{key}=", value)
10
- end
11
+ options.each { |key, value| send(:"#{key}=", value) }
12
+ self.base_url ||= get_base_url
11
13
  end
12
14
 
15
+ def get_base_url; ENV[try(:env_base_url_key).to_s] || try(:default_base_url); end
16
+
13
17
  def get(path, params, booker_model=nil)
14
18
  booker_resources = get_booker_resources(:get, path, params, nil, booker_model)
15
19
 
@@ -123,6 +127,33 @@ module Booker
123
127
  end
124
128
  end
125
129
 
130
+ def access_token_options
131
+ {
132
+ client_id: self.client_id,
133
+ client_secret: self.client_secret
134
+ }
135
+ end
136
+
137
+ def update_token_store
138
+ if self.token_store.present? && self.token_store_callback_method.present?
139
+ self.token_store.send(self.token_store_callback_method, self.temp_access_token, self.temp_access_token_expires_at)
140
+ end
141
+ end
142
+
143
+ def get_access_token
144
+ http_options = access_token_options
145
+ response = send(self.class::ACCESS_TOKEN_HTTP_METHOD, self.class::ACCESS_TOKEN_ENDPOINT, http_options, nil).parsed_response
146
+
147
+ raise Booker::InvalidApiCredentials.new(http_options, response) unless response.present?
148
+
149
+ self.temp_access_token_expires_at = Time.now + response['expires_in'].to_i.seconds
150
+ self.temp_access_token = response['access_token']
151
+
152
+ update_token_store
153
+
154
+ self.temp_access_token
155
+ end
156
+
126
157
  private
127
158
  def request_options(query=nil, body=nil)
128
159
  options = {
@@ -132,14 +163,8 @@ module Booker
132
163
  timeout: 120
133
164
  }
134
165
 
135
- if body.present?
136
- options[:body] = body
137
- end
138
-
139
- if query.present?
140
- options[:query] = query
141
- end
142
-
166
+ options[:body] = body if body.present?
167
+ options[:query] = query if query.present?
143
168
  options
144
169
  end
145
170
 
@@ -159,12 +184,6 @@ module Booker
159
184
  self.temp_access_token_expires_at.nil? || self.temp_access_token_expires_at <= Time.now
160
185
  end
161
186
 
162
- def update_token_store
163
- if self.token_store && self.token_store_callback_method
164
- token_store.send(token_store_callback_method, self.temp_access_token, self.temp_access_token_expires_at)
165
- end
166
- end
167
-
168
187
  def results_from_response(response, booker_model=nil)
169
188
  return response['Results'] unless response['Results'].nil?
170
189
 
@@ -3,29 +3,15 @@ module Booker
3
3
  include Booker::CustomerREST
4
4
 
5
5
  def initialize(options={})
6
- self.base_url = ENV['BOOKER_CUSTOMER_SERVICE_URL'] || 'https://apicurrent-app.booker.ninja/webservice4/json/CustomerService.svc'
7
- self.token_store = GenericTokenStore
8
- self.token_store_callback_method = :update_booker_access_token!
9
6
  super
7
+ self.token_store ||= GenericTokenStore
8
+ self.token_store_callback_method ||= :update_booker_access_token!
10
9
  end
11
10
 
12
- def get_access_token
13
- http_options = {
14
- client_id: self.client_id,
15
- client_secret: self.client_secret,
16
- grant_type: 'client_credentials'
17
- }
11
+ def env_base_url_key; 'BOOKER_CUSTOMER_SERVICE_URL'; end
18
12
 
19
- response = get("/access_token", http_options, nil).parsed_response
13
+ def default_base_url; 'https://apicurrent-app.booker.ninja/webservice4/json/CustomerService.svc'; end
20
14
 
21
- raise Booker::InvalidApiCredentials.new(http_options, response) unless response.present?
22
-
23
- self.temp_access_token_expires_at = Time.now + response['expires_in'].to_i.seconds
24
- self.temp_access_token = response['access_token']
25
-
26
- update_token_store
27
-
28
- self.temp_access_token
29
- end
15
+ def access_token_options; super.merge!(grant_type: 'client_credentials'); end
30
16
  end
31
17
  end
@@ -1,3 +1,3 @@
1
1
  module Booker
2
- VERSION = '1.0.1'
2
+ VERSION = '1.0.2'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: booker_ruby
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.0.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frederick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-02-06 00:00:00.000000000 Z
11
+ date: 2016-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty