booker_ruby 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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