booker_ruby 2.0.1 → 3.0.1

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: 87db655244e8a3abee83ad556cb641aff2818d0b
4
- data.tar.gz: f0c48b980e92c9bd07a0d3cb38b7d384b64cf6ed
3
+ metadata.gz: 041d3e240d6256924589eb8f528409e6f9f96231
4
+ data.tar.gz: bc4db79ffab85ef87d604e925bb76299c7b9f1b9
5
5
  SHA512:
6
- metadata.gz: 4ba399916add74a931efdd44d0dc63a8a36ed701c756ff20311c6fee05814705379d9f2791850b78927f03665ecaa332208902980aaab4b1074fd7d6d1af76ff
7
- data.tar.gz: 2d8a1cdf8ddae105c626ed74ce401833c5030251ee88d84d91da62892f380573c2b90c425cb2e5a54c2a2a4d720801ed0cdf0640dadf19e1c3a3aeb385b0655b
6
+ metadata.gz: 26541378dc2c8760039e63781589b6f10da16f72a975cfbc1077ba08a487df0147fc71041de142ced765aac5e5c7b050778c75b58ea9b2d57d9b7fa1ba5c573b
7
+ data.tar.gz: b6d81407d710bba52fbe5b7cc5a435f9da93767ea4e32f09a6fe2585f790096a29592711b8b0c7316c8c24e43a5929b3e0c9246cf8cd712277f43a70b21e32d8
data/lib/booker/client.rb CHANGED
@@ -212,7 +212,8 @@ module Booker
212
212
  'Content-Type' => CREATE_TOKEN_CONTENT_TYPE,
213
213
  'Ocp-Apim-Subscription-Key' => self.api_subscription_key
214
214
  },
215
- body: body.to_query
215
+ body: body.to_query,
216
+ timeout: 30
216
217
  }
217
218
 
218
219
  url = "#{self.auth_base_url}#{CREATE_TOKEN_PATH}"
@@ -237,7 +238,7 @@ module Booker
237
238
  query: {
238
239
  locationId: location_id
239
240
  },
240
- open_timeout: 120
241
+ timeout: 30
241
242
  }
242
243
  url = "#{self.auth_base_url}#{UPDATE_TOKEN_CONTEXT_PATH}"
243
244
 
@@ -262,7 +263,8 @@ module Booker
262
263
  'Authorization' => "Bearer #{access_token}",
263
264
  'Ocp-Apim-Subscription-Key' => self.api_subscription_key
264
265
  },
265
- open_timeout: 120
266
+ open_timeout: 120,
267
+ read_timeout: 300
266
268
  }
267
269
 
268
270
  options[:body] = body if body.present?
@@ -7,14 +7,14 @@ module Booker
7
7
  class_availability: '/v4.1/availability/availability/class'.freeze
8
8
  }.freeze
9
9
 
10
- def class_availability(location_id:, from_start_date_time:, to_start_date_time:, options: {})
10
+ def class_availability(location_id:, from_start_date_time:, to_start_date_time:, params: {})
11
11
  post API_METHODS[:class_availability], build_params({
12
12
  FromStartDateTime: from_start_date_time,
13
13
  LocationID: location_id,
14
14
  OnlyIfAvailable: true,
15
15
  ToStartDateTime: to_start_date_time,
16
16
  ExcludeClosedDates: true
17
- }, options), Booker::V4::Models::ClassInstance
17
+ }, params), Booker::V4::Models::ClassInstance
18
18
  end
19
19
  end
20
20
  end
@@ -3,43 +3,54 @@ module Booker
3
3
  class Booking < Booker::Client
4
4
  include Booker::V4::RequestHelper
5
5
 
6
+ V41_PREFIX = '/v4.1/booking'
7
+ V41_APPOINTMENTS_PREFIX = "#{V41_PREFIX}/appointment"
6
8
  API_METHODS = {
7
- appointment: '/v4.1/booking/appointment'.freeze,
8
- cancel_appointment: '/v4.1/booking/appointment/cancel'.freeze,
9
- create_appointment: '/v4.1/booking/appointment/create'.freeze,
10
- appointment_hold: '/v4.1/booking/appointment/hold'.freeze,
11
- employees: '/v4.1/booking/employees'.freeze,
12
- services: '/v4.1/booking/services'.freeze,
13
- location: '/v4.1/booking/location'.freeze,
14
- locations: '/v4.1/booking/locations'.freeze
9
+ appointment: "#{V41_APPOINTMENTS_PREFIX}".freeze,
10
+ cancel_appointment: "#{V41_APPOINTMENTS_PREFIX}/cancel".freeze,
11
+ create_appointment: "#{V41_APPOINTMENTS_PREFIX}/create".freeze,
12
+ create_class_appointment: "#{V41_PREFIX}/class_appointment/create".freeze,
13
+ appointment_hold: "#{V41_APPOINTMENTS_PREFIX}/hold".freeze,
14
+ employees: "#{V41_PREFIX}/employees".freeze,
15
+ services: "#{V41_PREFIX}/services".freeze,
16
+ location: "#{V41_PREFIX}/location".freeze,
17
+ locations: "#{V41_PREFIX}/locations".freeze
15
18
  }.freeze
16
19
 
17
20
  def appointment(id:)
18
21
  get "#{API_METHODS[:appointment]}/#{id}", build_params, Booker::V4::Models::Appointment
19
22
  end
20
23
 
21
- def cancel_appointment(id:, options:{})
22
- put API_METHODS[:cancel_appointment], build_params({ID: id}, options), Booker::V4::Models::Appointment
24
+ def cancel_appointment(id:, params: {})
25
+ put API_METHODS[:cancel_appointment], build_params({ID: id}, params), Booker::V4::Models::Appointment
23
26
  end
24
27
 
25
- def create_appointment(location_id:, available_time:, customer:, options: {})
28
+ def create_class_appointment(location_id:, class_instance_id:, customer:, params: {})
29
+ post API_METHODS[:create_class_appointment], build_params({
30
+ LocationID: location_id,
31
+ ClassInstanceID: class_instance_id,
32
+ Customer: customer
33
+ }, params), Booker::V4::Models::Appointment
34
+ end
35
+
36
+ def create_appointment(location_id:, available_time:, customer:, params: {})
26
37
  post API_METHODS[:create_appointment], build_params({
27
38
  LocationID: location_id,
28
39
  ItineraryTimeSlotList: [
29
40
  TreatmentTimeSlots: [available_time]
30
41
  ],
31
42
  Customer: customer
32
- }, options), Booker::V4::Models::Appointment
43
+ }, params), Booker::V4::Models::Appointment
33
44
  end
34
45
 
35
- def create_appointment_hold(location_id:, available_time:, customer:, options: {})
46
+ def create_appointment_hold(location_id:, available_time:, customer:, params: {})
36
47
  post API_METHODS[:appointment_hold], build_params({
37
48
  LocationID: location_id,
38
49
  ItineraryTimeSlot: {
39
50
  TreatmentTimeSlots: [available_time]
40
51
  },
41
52
  Customer: customer
42
- }, options)
53
+ }, params)
43
54
  end
44
55
 
45
56
  def delete_appointment_hold(location_id:, incomplete_appointment_id:)
@@ -49,11 +60,11 @@ module Booker
49
60
  })
50
61
  end
51
62
 
52
- def employees(location_id:, fetch_all: true, options: {})
63
+ def employees(location_id:, fetch_all: true, params: {})
53
64
  paginated_request(
54
65
  method: :post,
55
66
  path: API_METHODS[:employees],
56
- params: build_params({LocationID: location_id}, options, true),
67
+ params: build_params({LocationID: location_id}, params, true),
57
68
  model: Booker::V4::Models::Employee,
58
69
  fetch_all: fetch_all
59
70
  )
@@ -64,11 +75,11 @@ module Booker
64
75
  Booker::V4::Models::Location.from_hash(response)
65
76
  end
66
77
 
67
- def locations(options: {})
78
+ def locations(params: {})
68
79
  paginated_request(
69
80
  method: :post,
70
81
  path: API_METHODS[:locations],
71
- params: build_params({}, options, true),
82
+ params: build_params({}, params, true),
72
83
  model: Booker::V4::Models::Location
73
84
  )
74
85
  end
@@ -3,13 +3,91 @@ module Booker
3
3
  class Merchant < Booker::Client
4
4
  include Booker::V4::RequestHelper
5
5
 
6
+ V41_PREFIX = '/v4.1/merchant'
7
+ V41_LOCATION_PREFIX = "#{V41_PREFIX}/location"
8
+ V41_APPOINTMENTS_PREFIX = "#{V41_PREFIX}/appointments"
6
9
  API_METHODS = {
7
- appointments: '/v4.1/merchant/appointments'.freeze,
8
- customers: '/v4.1/merchant/customers'.freeze,
9
- create_special: '/v4.1/merchant/special'.freeze
10
+ appointments: "#{V41_APPOINTMENTS_PREFIX}".freeze,
11
+ appointments_partial: "#{V41_APPOINTMENTS_PREFIX}/partial".freeze,
12
+ appointment_confirm: "#{V41_PREFIX}/appointment/confirm".freeze,
13
+ customers: "#{V41_PREFIX}/customers".freeze,
14
+ create_special: "#{V41_PREFIX}/special".freeze,
15
+ employees: "#{V41_PREFIX}/employees".freeze,
16
+ treatments: "#{V41_PREFIX}/treatments".freeze,
10
17
  }.freeze
11
18
 
12
- def appointments(location_id:, start_date:, end_date:, fetch_all: true, options: {})
19
+ def online_booking_settings(location_id:)
20
+ path = "#{V41_LOCATION_PREFIX}/#{location_id}/online_booking_settings"
21
+ response = get path, build_params
22
+ Booker::V4::Models::OnlineBookingSettings.from_hash(response['OnlineBookingSettings'])
23
+ end
24
+
25
+ def location_feature_settings(location_id:)
26
+ response = get "#{V41_LOCATION_PREFIX}/#{location_id}/feature_settings", build_params
27
+ Booker::V4::Models::FeatureSettings.from_hash response['FeatureSettings']
28
+ end
29
+
30
+ def location_day_schedules(location_id:, params: {})
31
+ # Booker requires fromDate and toDate for JSON API, but does not use them when getDefaultDaySchedule is true
32
+ # So datetime used for these fields does not matter
33
+ random_datetime = Booker::V4::Models::Model.time_to_booker_datetime(Time.now)
34
+
35
+ additional_params = {getDefaultDaySchedule: true, fromDate: random_datetime, toDate: random_datetime}
36
+ response = get("#{V41_LOCATION_PREFIX}/#{location_id}/schedule", build_params(additional_params, params))
37
+ response['LocationDaySchedules'].map { |sched| Booker::V4::Models::LocationDaySchedule.from_hash(sched) }
38
+ end
39
+
40
+ def update_location_notification_settings(location_id:, send_appointment_reminders:)
41
+ params = build_params({NotificationSettings: { SendAppointmentReminders: send_appointment_reminders } })
42
+ put "#{V41_LOCATION_PREFIX}/#{location_id}/notification_settings", params
43
+ end
44
+
45
+ def confirm_appointment(appointment_id:)
46
+ put API_METHODS[:appointment_confirm], build_params(ID: appointment_id), Booker::V4::Models::Appointment
47
+ end
48
+
49
+ def appointments_partial(location_id:, start_date:, end_date:, fetch_all: true, params: {})
50
+ additional_params = {
51
+ LocationID: location_id,
52
+ FromStartDate: start_date.to_date,
53
+ ToStartDate: end_date.to_date
54
+ }
55
+
56
+ paginated_request(
57
+ method: :post,
58
+ path: API_METHODS[:appointments_partial],
59
+ params: build_params(additional_params, params, true),
60
+ model: Booker::V4::Models::Appointment,
61
+ fetch_all: fetch_all
62
+ )
63
+ end
64
+
65
+ def employees(location_id:, fetch_all: true, params: {})
66
+ paginated_request(
67
+ method: :post,
68
+ path: API_METHODS[:employees],
69
+ params: build_params({LocationID: location_id}, params, true),
70
+ model: Booker::V4::Models::Employee,
71
+ fetch_all: fetch_all
72
+ )
73
+ end
74
+
75
+ def treatments(location_id:, fetch_all: true, params: {})
76
+ paginated_request(
77
+ method: :post,
78
+ path: API_METHODS[:treatments],
79
+ params: build_params({ LocationID: location_id }, params, true),
80
+ model: Booker::V4::Models::Treatment,
81
+ fetch_all: fetch_all
82
+ )
83
+ end
84
+
85
+ def location(id:)
86
+ response = get("#{V41_LOCATION_PREFIX}/#{id}", build_params)
87
+ Booker::V4::Models::Location.from_hash(response)
88
+ end
89
+
90
+ def appointments(location_id:, start_date:, end_date:, fetch_all: true, params: {})
13
91
  additional_params = {
14
92
  LocationID: location_id,
15
93
  FromStartDate: start_date.to_date,
@@ -19,13 +97,13 @@ module Booker
19
97
  paginated_request(
20
98
  method: :post,
21
99
  path: API_METHODS[:appointments],
22
- params: build_params(additional_params, options, true),
100
+ params: build_params(additional_params, params, true),
23
101
  model: Booker::V4::Models::Appointment,
24
102
  fetch_all: fetch_all
25
103
  )
26
104
  end
27
105
 
28
- def customers(location_id:, fetch_all: true, options: {})
106
+ def customers(location_id:, fetch_all: true, params: {})
29
107
  additional_params = {
30
108
  FilterByExactLocationID: true,
31
109
  LocationID: location_id,
@@ -35,20 +113,20 @@ module Booker
35
113
  paginated_request(
36
114
  method: :post,
37
115
  path: API_METHODS[:customers],
38
- params: build_params(additional_params, options, true),
116
+ params: build_params(additional_params, params, true),
39
117
  model: Booker::V4::Models::Customer,
40
118
  fetch_all: fetch_all
41
119
  )
42
120
  end
43
121
 
44
- def create_special(location_id:, start_date:, end_date:, coupon_code:, name:, options: {})
122
+ def create_special(location_id:, start_date:, end_date:, coupon_code:, name:, params: {})
45
123
  post(API_METHODS[:create_special], build_params({
46
124
  LocationID: location_id,
47
125
  ApplicableStartDate: start_date.in_time_zone,
48
126
  ApplicableEndDate: end_date.in_time_zone,
49
127
  CouponCode: coupon_code,
50
128
  Name: name
51
- }, options))
129
+ }, params))
52
130
  end
53
131
  end
54
132
  end
@@ -9,7 +9,7 @@ module Booker
9
9
  end
10
10
 
11
11
  def confirm_appointment(appointment_id:)
12
- put '/appointment/confirm', build_params(:ID => appointment_id), Booker::V4::Models::Appointment
12
+ put '/appointment/confirm', build_params(ID: appointment_id), Booker::V4::Models::Appointment
13
13
  end
14
14
 
15
15
  def get_location(booker_location_id:)
@@ -8,7 +8,7 @@ module Booker
8
8
  thirty_day_availability: '/v5/availability/30day'.freeze
9
9
  }.freeze
10
10
 
11
- def availability(location_ids:, from_date_time:, to_date_time:, include_employees: true)
11
+ def search(location_ids:, from_date_time:, to_date_time:, include_employees: true)
12
12
  get API_METHODS[:availability], {
13
13
  locationIds: location_ids,
14
14
  fromDateTime: from_date_time,
@@ -17,7 +17,7 @@ module Booker
17
17
  }, Booker::V5::Models::AvailabilityResult
18
18
  end
19
19
 
20
- def one_day_availability(location_id:, from_date_time:, include_employees: true)
20
+ def one_day(location_id:, from_date_time:, include_employees: true)
21
21
  get API_METHODS[:one_day_availability], {
22
22
  locationId: location_id,
23
23
  fromDateTime: from_date_time,
@@ -25,7 +25,7 @@ module Booker
25
25
  }, Booker::V5::Models::AvailabilityResult
26
26
  end
27
27
 
28
- def two_day_availability(location_id:, from_date_time:, include_employees: true)
28
+ def two_day(location_id:, from_date_time:, include_employees: true)
29
29
  get API_METHODS[:two_day_availability], {
30
30
  locationId: location_id,
31
31
  fromDateTime: from_date_time,
@@ -33,7 +33,7 @@ module Booker
33
33
  }, Booker::V5::Models::AvailabilityResult
34
34
  end
35
35
 
36
- def thirty_day_availability(location_id:, from_date_time:, include_employees: true)
36
+ def thirty_day(location_id:, from_date_time:, include_employees: true)
37
37
  get API_METHODS[:thirty_day_availability], {
38
38
  locationId: location_id,
39
39
  fromDateTime: from_date_time,
@@ -1,3 +1,3 @@
1
1
  module Booker
2
- VERSION = '2.0.1'
2
+ VERSION = '3.0.1'
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: 2.0.1
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Frederick
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-02 00:00:00.000000000 Z
11
+ date: 2017-04-05 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty