booker_ruby 3.3.10 → 3.3.15

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
  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