booker_ruby 3.3.10 → 3.3.15

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
  SHA256:
3
- metadata.gz: 6664e123321a2dde0d5962ccf7afd8814bf7adc3d5a7e30f9a3cab016f7cead4
4
- data.tar.gz: 834836b07db714f7f8332c4543228c2a2f48d9fde1a4de1fb954ded424fb5e74
3
+ metadata.gz: 513901ea61d46fb2627dbf2832aaf50a32c486e6033c8b58aaf89a1c49d37c73
4
+ data.tar.gz: 99b08afcac63f583be1190f369117bd6c89da59ba3bb3564b7af943737c40173
5
5
  SHA512:
6
- metadata.gz: 23a75c66a7fc969b1d7aada629360939f4183bd86afb57a57e1eef93565d9c4fb24116a873d9825df38e13e89fa51bff07db7960130771fcbea4428afe632317
7
- data.tar.gz: 630f846a2525963cc9863eb9edcb902aef440bc905fd83004eacb19758187fb780fdf3677720b48664d9a0983a454e0a1e19bcde26e5a691a325291eec7ffa25
6
+ metadata.gz: bf91284325c8308e96b93c5c5caabc61d4c28c62e1bfec94f6f4ec6c32c7c7ce7ce53ec03adbac3a0aea088cec3bdcf8604d616a9ec13fada7267684a56118c1
7
+ data.tar.gz: 2dcab1cab3814be62ca6c45517d389bed9593ebc58a6181bd548f360d3721f3c4d7e06d89285b9944d21f787a3438df46a60c80c568d8d2febe7126c46160668
@@ -4,7 +4,7 @@ module Booker
4
4
 
5
5
  attr_accessor :base_url, :auth_base_url, :client_id, :client_secret, :temp_access_token,
6
6
  :temp_access_token_expires_at, :token_store, :token_store_callback_method, :api_subscription_key,
7
- :access_token_scope, :refresh_token, :location_id, :auth_with_client_credentials
7
+ :access_token_scope, :refresh_token, :location_id, :auth_with_client_credentials, :request_timeout
8
8
 
9
9
  CREATE_TOKEN_CONTENT_TYPE = 'application/x-www-form-urlencoded'.freeze
10
10
  CLIENT_CREDENTIALS_GRANT_TYPE = 'client_credentials'.freeze
@@ -24,9 +24,11 @@ module Booker
24
24
  ENV_BASE_URL_KEY = 'BOOKER_API_BASE_URL'.freeze
25
25
  DEFAULT_BASE_URL = 'https://api-staging.booker.com'.freeze
26
26
  DEFAULT_AUTH_BASE_URL = 'https://api-staging.booker.com'
27
+ DEFAULT_REQUEST_TIMEOUT = 60
27
28
 
28
29
  def initialize(options = {})
29
30
  options.each { |key, value| send(:"#{key}=", value) }
31
+ self.request_timeout ||= DEFAULT_REQUEST_TIMEOUT
30
32
  self.base_url ||= get_base_url
31
33
  self.auth_base_url ||= ENV['BOOKER_API_BASE_URL'] || DEFAULT_AUTH_BASE_URL
32
34
  self.client_id ||= ENV['BOOKER_CLIENT_ID']
@@ -280,7 +282,7 @@ module Booker
280
282
  'Authorization' => "Bearer #{access_token}",
281
283
  'Ocp-Apim-Subscription-Key' => self.api_subscription_key
282
284
  },
283
- timeout: 60
285
+ timeout: self.request_timeout
284
286
  }
285
287
 
286
288
  options[:body] = body if body.present?
@@ -311,10 +313,10 @@ module Booker
311
313
  return parsed_response['Results'] unless parsed_response['Results'].nil?
312
314
 
313
315
  if booker_model
314
- model_name = booker_model.to_s.demodulize
315
- return parsed_response[model_name] unless parsed_response[model_name].nil?
316
+ response_results_key = booker_model.response_results_key
317
+ return parsed_response[response_results_key] unless parsed_response[response_results_key].nil?
316
318
 
317
- pluralized = model_name.pluralize
319
+ pluralized = response_results_key.pluralize
318
320
  return parsed_response[pluralized] unless parsed_response[pluralized].nil?
319
321
  end
320
322
 
@@ -67,6 +67,12 @@ module Booker
67
67
  end
68
68
  end
69
69
 
70
+ protected
71
+
72
+ def self.response_results_key
73
+ self.to_s.demodulize
74
+ end
75
+
70
76
  private
71
77
 
72
78
  def hash_list(array)
@@ -11,10 +11,13 @@ module Booker
11
11
  create_appointment: "#{V41_APPOINTMENTS_PREFIX}/create".freeze,
12
12
  create_class_appointment: "#{V41_PREFIX}/class_appointment/create".freeze,
13
13
  employees: "#{V41_PREFIX}/employees".freeze,
14
+ treatment: "#{V41_PREFIX}/treatment".freeze,
14
15
  treatments: "#{V41_PREFIX}/treatments".freeze,
16
+ treatments_verified_bookable_online: "#{V41_PREFIX}/treatments/online".freeze,
15
17
  location: "#{V41_PREFIX}/location".freeze,
16
18
  locations: "#{V41_PREFIX}/locations".freeze,
17
- class_availability: "#{V41_PREFIX}/availability/class".freeze
19
+ class_availability: "#{V41_PREFIX}/availability/class".freeze,
20
+ specials: "#{V41_PREFIX}/specials".freeze
18
21
  }.freeze
19
22
 
20
23
  def appointment(id:)
@@ -53,6 +56,12 @@ module Booker
53
56
  )
54
57
  end
55
58
 
59
+ def treatment(id:, includeEmployeeTreatment: false)
60
+ get "#{API_METHODS[:treatment]}/#{id}", build_params({
61
+ includeEmployeeTreatment: includeEmployeeTreatment
62
+ }), Booker::V4::Models::TreatmentVerifiedBookableOnline
63
+ end
64
+
56
65
  def treatments(location_id:, fetch_all: true, params: {})
57
66
  paginated_request(
58
67
  method: :post,
@@ -63,6 +72,26 @@ module Booker
63
72
  )
64
73
  end
65
74
 
75
+ def treatments_verified_bookable_online(location_id:, fetch_all: true, params: {})
76
+ paginated_request(
77
+ method: :post,
78
+ path: API_METHODS[:treatments_verified_bookable_online],
79
+ params: build_params({LocationID: location_id}, params, true),
80
+ model: Booker::V4::Models::TreatmentVerifiedBookableOnline,
81
+ fetch_all: fetch_all
82
+ )
83
+ end
84
+
85
+ def specials(location_id:, fetch_all: true, params: {})
86
+ paginated_request(
87
+ method: :post,
88
+ path: API_METHODS[:specials],
89
+ params: build_params({ LocationID: location_id }, params, true),
90
+ model: Booker::V4::Models::Special,
91
+ fetch_all: fetch_all
92
+ )
93
+ end
94
+
66
95
  def location(id:)
67
96
  response = get("#{API_METHODS[:location]}/#{id}", build_params)
68
97
  Booker::V4::Models::Location.from_hash(response)
@@ -0,0 +1,7 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class AvailableInAdvanceDateUnitType < Type; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,9 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class DepositOption < Model
5
+ attr_accessor 'Amount', 'AmountType', 'Enabled', 'HasAmountType', 'Percentage'
6
+ end
7
+ end
8
+ end
9
+ end
@@ -0,0 +1,7 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class DurationType < Type; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,14 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class EmployeeTreatment < Model
5
+ attr_accessor 'EmployeeID',
6
+ 'FinishTimeDuration',
7
+ 'ProcessingTimeDuration',
8
+ 'RequestedPrice',
9
+ 'TotalDuration',
10
+ 'TreatmentDuration'
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,7 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class FlexiblePriceIncrementType < Type; end
5
+ end
6
+ end
7
+ end
@@ -0,0 +1,12 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class PriceRange < Model
5
+ attr_accessor 'From',
6
+ 'To',
7
+ 'DiscountType',
8
+ 'DiscountAmount'
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,10 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class PriceRangeScope < Model
5
+ attr_accessor 'ID',
6
+ 'Name'
7
+ end
8
+ end
9
+ end
10
+ end
@@ -0,0 +1,46 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class Special < Model
5
+ attr_accessor 'ID',
6
+ 'LocationID',
7
+ 'Name',
8
+ 'Description',
9
+ 'CouponCode',
10
+ 'Type',
11
+ 'ShortUrl',
12
+ 'ApplicableStartDate',
13
+ 'ApplicableEndDate',
14
+ 'BookingStartDate',
15
+ 'BookingEndDate',
16
+ 'MaxRedemptions',
17
+ 'TimeOfDayStart',
18
+ 'TimeOfDayEnd',
19
+ 'HasTreatment',
20
+ 'WeekDays',
21
+ 'UsePriceRanges',
22
+ 'PriceRanges',
23
+ 'DiscountType',
24
+ 'AdjustmentType',
25
+ 'DiscountAmount',
26
+ 'CanCustomerDirectBook',
27
+ 'HideOnInvoicesAndReceipts',
28
+ 'PhotoUrl',
29
+ 'UsedRedemptions',
30
+ 'AvailableRedemptions',
31
+ 'HasFreeItems',
32
+ 'PriceRangeScope',
33
+ 'ApplicationItemIDs',
34
+ 'IsExclusiveWithAll',
35
+ 'IsExclusiveWithAny',
36
+ 'CombinationRules',
37
+ 'ApplicableStartDateOffset',
38
+ 'ApplicableEndDateOffset',
39
+ 'BookingStartDateOffset',
40
+ 'BookingEndDateOffset',
41
+ 'TimeOfDayStartOffset',
42
+ 'TimeOfDayEndOffset'
43
+ end
44
+ end
45
+ end
46
+ end
@@ -0,0 +1,39 @@
1
+ module Booker
2
+ module V4
3
+ module Models
4
+ class TreatmentVerifiedBookableOnline < Model
5
+ attr_accessor 'ID',
6
+ 'AllowCustomersToBookOnline',
7
+ 'AvailableInAdvance',
8
+ 'AvailableInAdvanceDateUnitType',
9
+ 'Category',
10
+ 'ColorCode',
11
+ 'DateCreatedOffset',
12
+ 'DateLastModifiedOffset',
13
+ 'DepositOptions',
14
+ 'Description',
15
+ 'DisplayName',
16
+ 'DoesNotRequireStaff',
17
+ 'DurationType',
18
+ 'EmployeeTreatments',
19
+ 'ImageURL',
20
+ 'IsActive',
21
+ 'IsClass',
22
+ 'IsDeleted',
23
+ 'IsForCouples',
24
+ 'MaxTreatmentDuration',
25
+ 'MinTreatmentDuration',
26
+ 'Name',
27
+ 'Price',
28
+ 'RequiresTwoTechnicians',
29
+ 'SubCategory',
30
+ 'TotalDuration',
31
+ 'TreatmentDuration'
32
+
33
+ def self.response_results_key
34
+ 'Treatment'
35
+ end
36
+ end
37
+ end
38
+ end
39
+ end
@@ -1,3 +1,3 @@
1
1
  module Booker
2
- VERSION = '3.3.10'
2
+ VERSION = '3.3.15'
3
3
  end
@@ -19,6 +19,7 @@ require 'booker/errors'
19
19
  # Concerns
20
20
  require 'booker/concerns/date_time_concern'
21
21
  require 'booker/request_helper'
22
+ require 'booker/v4/request_helper'
22
23
 
23
24
  # Models
24
25
  require 'booker/model'
@@ -27,18 +28,20 @@ require 'booker/model'
27
28
  require 'booker/v4/models/model'
28
29
 
29
30
  # Types
30
- require 'booker/v4/request_helper'
31
31
  require 'booker/v4/models/type'
32
- require 'booker/v4/models/country'
33
- require 'booker/v4/models/status'
34
- require 'booker/v4/models/source'
32
+ require 'booker/v4/models/available_in_advance_date_unit_type'
35
33
  require 'booker/v4/models/business_type'
36
34
  require 'booker/v4/models/category'
37
- require 'booker/v4/models/sub_category'
35
+ require 'booker/v4/models/country'
38
36
  require 'booker/v4/models/customer_record_type'
37
+ require 'booker/v4/models/duration_type'
38
+ require 'booker/v4/models/flexible_price_increment_type'
39
39
  require 'booker/v4/models/gender'
40
- require 'booker/v4/models/preferred_staff_gender'
41
40
  require 'booker/v4/models/payment_method'
41
+ require 'booker/v4/models/preferred_staff_gender'
42
+ require 'booker/v4/models/source'
43
+ require 'booker/v4/models/status'
44
+ require 'booker/v4/models/sub_category'
42
45
 
43
46
  # Addresses
44
47
  require 'booker/v4/models/address'
@@ -70,22 +73,28 @@ require 'booker/v4/models/teacher_2'
70
73
  require 'booker/v4/models/time_zone'
71
74
  require 'booker/v4/models/appointment'
72
75
  require 'booker/v4/models/appointment_treatment'
73
- require 'booker/v4/models/dynamic_price'
74
- require 'booker/v4/models/room'
75
- require 'booker/v4/models/order'
76
- require 'booker/v4/models/treatment'
77
- require 'booker/v4/models/spa_employee_availability_search_item'
78
76
  require 'booker/v4/models/available_time'
79
77
  require 'booker/v4/models/class_instance'
80
- require 'booker/v4/models/online_booking_settings'
81
- require 'booker/v4/models/user'
82
- require 'booker/v4/models/location_day_schedule'
83
- require 'booker/v4/models/itinerary_time_slots_list'
78
+ require 'booker/v4/models/deposit_option'
79
+ require 'booker/v4/models/dynamic_price'
80
+ require 'booker/v4/models/employee_treatment'
81
+ require 'booker/v4/models/feature_settings'
84
82
  require 'booker/v4/models/itinerary_time_slot'
85
- require 'booker/v4/models/treatment_time_slot'
83
+ require 'booker/v4/models/itinerary_time_slots_list'
84
+ require 'booker/v4/models/location_day_schedule'
86
85
  require 'booker/v4/models/multi_service_availability_result'
87
86
  require 'booker/v4/models/notification_settings'
88
- require 'booker/v4/models/feature_settings'
87
+ require 'booker/v4/models/online_booking_settings'
88
+ require 'booker/v4/models/order'
89
+ require 'booker/v4/models/room'
90
+ require 'booker/v4/models/spa_employee_availability_search_item'
91
+ require 'booker/v4/models/treatment'
92
+ require 'booker/v4/models/treatment_time_slot'
93
+ require 'booker/v4/models/treatment_verified_bookable_online'
94
+ require 'booker/v4/models/user'
95
+ require 'booker/v4/models/special'
96
+ require 'booker/v4/models/price_range'
97
+ require 'booker/v4/models/price_range_scope'
89
98
 
90
99
  # V5 Models
91
100
  require 'booker/v5/models/model'
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: 3.3.10
4
+ version: 3.3.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frederick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2019-08-20 00:00:00.000000000 Z
11
+ date: 2020-06-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -163,6 +163,7 @@ files:
163
163
  - lib/booker/v4/models/address.rb
164
164
  - lib/booker/v4/models/appointment.rb
165
165
  - lib/booker/v4/models/appointment_treatment.rb
166
+ - lib/booker/v4/models/available_in_advance_date_unit_type.rb
166
167
  - lib/booker/v4/models/available_time.rb
167
168
  - lib/booker/v4/models/business_type.rb
168
169
  - lib/booker/v4/models/category.rb
@@ -172,11 +173,15 @@ files:
172
173
  - lib/booker/v4/models/customer.rb
173
174
  - lib/booker/v4/models/customer_2.rb
174
175
  - lib/booker/v4/models/customer_record_type.rb
176
+ - lib/booker/v4/models/deposit_option.rb
175
177
  - lib/booker/v4/models/discount.rb
178
+ - lib/booker/v4/models/duration_type.rb
176
179
  - lib/booker/v4/models/dynamic_price.rb
177
180
  - lib/booker/v4/models/employee.rb
181
+ - lib/booker/v4/models/employee_treatment.rb
178
182
  - lib/booker/v4/models/feature_settings.rb
179
183
  - lib/booker/v4/models/final_total.rb
184
+ - lib/booker/v4/models/flexible_price_increment_type.rb
180
185
  - lib/booker/v4/models/gender.rb
181
186
  - lib/booker/v4/models/itinerary_time_slot.rb
182
187
  - lib/booker/v4/models/itinerary_time_slots_list.rb
@@ -191,12 +196,15 @@ files:
191
196
  - lib/booker/v4/models/payment_method.rb
192
197
  - lib/booker/v4/models/preferred_staff_gender.rb
193
198
  - lib/booker/v4/models/price.rb
199
+ - lib/booker/v4/models/price_range.rb
200
+ - lib/booker/v4/models/price_range_scope.rb
194
201
  - lib/booker/v4/models/receipt_display_price.rb
195
202
  - lib/booker/v4/models/room.rb
196
203
  - lib/booker/v4/models/shipping_address.rb
197
204
  - lib/booker/v4/models/source.rb
198
205
  - lib/booker/v4/models/spa.rb
199
206
  - lib/booker/v4/models/spa_employee_availability_search_item.rb
207
+ - lib/booker/v4/models/special.rb
200
208
  - lib/booker/v4/models/status.rb
201
209
  - lib/booker/v4/models/sub_category.rb
202
210
  - lib/booker/v4/models/tag_price.rb
@@ -205,6 +213,7 @@ files:
205
213
  - lib/booker/v4/models/time_zone.rb
206
214
  - lib/booker/v4/models/treatment.rb
207
215
  - lib/booker/v4/models/treatment_time_slot.rb
216
+ - lib/booker/v4/models/treatment_verified_bookable_online.rb
208
217
  - lib/booker/v4/models/type.rb
209
218
  - lib/booker/v4/models/user.rb
210
219
  - lib/booker/v4/request_helper.rb
@@ -236,8 +245,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
236
245
  - !ruby/object:Gem::Version
237
246
  version: '0'
238
247
  requirements: []
239
- rubyforge_project:
240
- rubygems_version: 2.7.9
248
+ rubygems_version: 3.0.6
241
249
  signing_key:
242
250
  specification_version: 4
243
251
  summary: Ruby client for the Booker API - https://developers.booker.com