seatsio 23.7.0 → 24.4.0

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: 3e0a832bc8680b57d66e65becb775ddfdd971d08be16a8161b79bf0a217543db
4
- data.tar.gz: c40d677bd0dea2bde3c492408c09a2cc79f3fcb8518d439c68f17f65f1c3c419
3
+ metadata.gz: beeb3566a1671f2eed0e7ffcedfb1befe849d5a5a2835e20b4d8be00fa87d2ba
4
+ data.tar.gz: bd73ab390fc32ee52fc9bd7dd9aae15beab3b678fd7ad8283d357c0b45a54734
5
5
  SHA512:
6
- metadata.gz: 48d9cc13e42919696a9bcf58b5d0c05016049e3930db5f0a3499f42bc86d2a6400a85da2d0e761883e507b5623a8e8b87befe1c81217865c575a446b567072b8
7
- data.tar.gz: 68da6c6511e13ae20d77471c67da82d7d962db355852c91a5d9342b24a885c9f67ae98a2a70adbd68b86eb5c4822e0d4e22f89c649100426d9f9396b087b8a78
6
+ metadata.gz: 9c630460139f3a3e879e6f94a51084032b1e4c94a2b1f59a0836c2d4aaa8441ee8c66f40e1083da4c66e4a147c1d2798a16f7903c25d95adde487b6e9107f665
7
+ data.tar.gz: 0d20dc31614c3cc6e0eb2b84ab2fb1fca6deb1dded378b276e9d1d7e9b938b8d48d6eb01a239dae8debbe12ebd7745d402863ccda654d0afba2a3544f8003adf
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- seatsio (23.7.0)
4
+ seatsio (24.4.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -69,13 +69,11 @@ module Seatsio
69
69
  end
70
70
 
71
71
  def retrieve_published_version(key)
72
- response = @http_client.get("charts/#{key}/version/published")
73
- Domain::Chart.new(response)
72
+ @http_client.get("charts/#{key}/version/published")
74
73
  end
75
74
 
76
75
  def retrieve_draft_version(key)
77
- response = @http_client.get("charts/#{key}/version/draft")
78
- Domain::ChartDraft.new(response)
76
+ @http_client.get("charts/#{key}/version/draft")
79
77
  end
80
78
 
81
79
  def retrieve_draft_version_thumbnail(key)
@@ -94,6 +92,11 @@ module Seatsio
94
92
  @http_client.post("charts/#{chart_key}/version/draft/actions/publish")
95
93
  end
96
94
 
95
+ def save_social_distancing_rulesets(chart_key, rulesets)
96
+ payload = {"socialDistancingRulesets": rulesets}
97
+ @http_client.post("charts/#{chart_key}/social-distancing-rulesets", payload)
98
+ end
99
+
97
100
  def list(chart_filter: nil, tag: nil, expand_events: nil, with_validation: false)
98
101
  cursor = Pagination::Cursor.new(Domain::Chart, 'charts', @http_client)
99
102
  cursor.set_query_param('filter', chart_filter)
@@ -4,25 +4,11 @@ module Seatsio::Domain
4
4
 
5
5
  module_function
6
6
 
7
- class ChartCategories
8
- attr_accessor :list, :max_category_key
9
-
10
- def initialize(data)
11
- if data
12
- @list = data['list']
13
- @max_category_key = data['maxCategoryKey']
14
- else
15
- @list = []
16
- @max_category_key = ''
17
- end
18
- end
19
- end
20
-
21
7
  class Chart
22
8
 
23
9
  attr_reader :id, :key, :status, :name, :published_version_thumbnail_url,
24
- :draft_version_thumbnail_url, :events, :tags, :archived, :venue_type,
25
- :categories, :validation
10
+ :draft_version_thumbnail_url, :events, :tags, :archived,
11
+ :categories, :validation, :social_distancing_rulesets
26
12
 
27
13
  def initialize(data)
28
14
  @id = data['id']
@@ -34,9 +20,12 @@ module Seatsio::Domain
34
20
  @events = Event.create_list(data['events']) if data['events']
35
21
  @tags = data['tags']
36
22
  @archived = data['archived']
37
- @venue_type = data['venueType']
38
- @categories = ChartCategories.new(data['categories'])
39
23
  @validation = data['validation']
24
+ @social_distancing_rulesets = data['socialDistancingRulesets'].map {
25
+ |key, r| [key, SocialDistancingRuleset.new(r['name'], r['numberOfDisabledSeatsToTheSides'], r['disableSeatsInFrontAndBehind'],
26
+ r['numberOfDisabledAisleSeats'], r['maxGroupSize'],
27
+ r['disabledSeats'], r['enabledSeats'], r['index'])]
28
+ }.to_h
40
29
  end
41
30
  end
42
31
 
@@ -84,10 +73,10 @@ module Seatsio::Domain
84
73
 
85
74
  def == (other)
86
75
  self.key == other.key &&
87
- self.name == other.name &&
88
- self.color == other.color &&
89
- self.index == other.index &&
90
- self.objects == other.objects
76
+ self.name == other.name &&
77
+ self.color == other.color &&
78
+ self.index == other.index &&
79
+ self.objects == other.objects
91
80
  end
92
81
 
93
82
  end
@@ -95,7 +84,8 @@ module Seatsio::Domain
95
84
  class Event
96
85
 
97
86
  attr_accessor :id, :key, :chart_key, :book_whole_tables, :supports_best_available,
98
- :table_booking_modes, :for_sale_config, :created_on, :updated_on, :channels
87
+ :table_booking_modes, :for_sale_config, :created_on, :updated_on, :channels,
88
+ :social_distancing_ruleset_key
99
89
 
100
90
  def initialize(data)
101
91
  @id = data['id']
@@ -110,6 +100,7 @@ module Seatsio::Domain
110
100
  @channels = data['channels'].map {
111
101
  |d| Channel.new(d['key'], d['name'], d['color'], d['index'], d['objects'])
112
102
  } if data['channels']
103
+ @social_distancing_ruleset_key = data['socialDistancingRulesetKey']
113
104
  end
114
105
 
115
106
  def self.create_list(list = [])
@@ -156,7 +147,7 @@ module Seatsio::Domain
156
147
  end
157
148
 
158
149
  class Workspace
159
- attr_reader :id, :name, :key, :secret_key, :is_test
150
+ attr_reader :id, :name, :key, :secret_key, :is_test, :is_active, :is_default
160
151
 
161
152
  def initialize(data)
162
153
  @id = data['id']
@@ -164,6 +155,8 @@ module Seatsio::Domain
164
155
  @key = data['key']
165
156
  @secret_key = data['secretKey']
166
157
  @is_test = data['isTest']
158
+ @is_active = data['isActive']
159
+ @is_default = data['isDefault']
167
160
  end
168
161
  end
169
162
 
@@ -293,7 +286,7 @@ module Seatsio::Domain
293
286
  :category_key, :entrance, :object_type, :hold_token, :category_label,
294
287
  :ticket_type, :num_booked, :num_free, :num_held, :for_sale, :section,
295
288
  :is_accessible, :is_companion_seat, :has_restricted_view, :displayed_object_type,
296
- :left_neighbour, :right_neighbour
289
+ :left_neighbour, :right_neighbour, :is_selectable, :is_disabled_by_social_distancing
297
290
 
298
291
  def initialize(data)
299
292
  @status = data['status']
@@ -319,6 +312,8 @@ module Seatsio::Domain
319
312
  @displayed_object_type = data['displayedObjectType']
320
313
  @left_neighbour = data['leftNeighbour']
321
314
  @right_neighbour = data['rightNeighbour']
315
+ @is_selectable = data['isSelectable']
316
+ @is_disabled_by_social_distancing = data['isDisabledBySocialDistancing']
322
317
  end
323
318
  end
324
319
 
@@ -476,4 +471,33 @@ module Seatsio::Domain
476
471
  object_details
477
472
  end
478
473
 
474
+ class SocialDistancingRuleset
475
+ attr_reader :name, :number_of_disabled_seats_to_the_sides, :disable_seats_in_front_and_behind,
476
+ :number_of_disabled_aisle_seats, :max_group_size, :disabled_seats, :enabled_seats, :index
477
+
478
+ def initialize(name, number_of_disabled_seats_to_the_sides = 0, disable_seats_in_front_and_behind = false, number_of_disabled_aisle_seats = 0,
479
+ max_group_size = 0, disabled_seats = [], enabled_seats = [], index = 0)
480
+ @name = name
481
+ @number_of_disabled_seats_to_the_sides = number_of_disabled_seats_to_the_sides
482
+ @disable_seats_in_front_and_behind = disable_seats_in_front_and_behind
483
+ @number_of_disabled_aisle_seats = number_of_disabled_aisle_seats
484
+ @max_group_size = max_group_size
485
+ @disabled_seats = disabled_seats
486
+ @enabled_seats = enabled_seats
487
+ @index = index
488
+ end
489
+
490
+ def == (other)
491
+ self.name == other.name &&
492
+ self.number_of_disabled_seats_to_the_sides == other.number_of_disabled_seats_to_the_sides &&
493
+ self.disable_seats_in_front_and_behind == other.disable_seats_in_front_and_behind &&
494
+ self.number_of_disabled_aisle_seats == other.number_of_disabled_aisle_seats &&
495
+ self.max_group_size == other.max_group_size &&
496
+ self.disabled_seats == other.disabled_seats &&
497
+ self.enabled_seats == other.enabled_seats &&
498
+ self.index == other.index
499
+ end
500
+
501
+ end
502
+
479
503
  end
@@ -27,6 +27,10 @@ module Seatsio
27
27
  fetch_summary_report('bySection', event_key)
28
28
  end
29
29
 
30
+ def summary_by_selectability(event_key)
31
+ fetch_summary_report('bySelectability', event_key)
32
+ end
33
+
30
34
  def by_label(event_key, label = nil)
31
35
  fetch_report('byLabel', event_key, label)
32
36
  end
@@ -51,6 +55,10 @@ module Seatsio
51
55
  fetch_report('bySection', event_key, section)
52
56
  end
53
57
 
58
+ def by_selectability(event_key, selectability = nil)
59
+ fetch_report('bySelectability', event_key, selectability)
60
+ end
61
+
54
62
  private
55
63
 
56
64
  def fetch_summary_report(report_type, event_key)
@@ -15,8 +15,9 @@ module Seatsio
15
15
  @http_client = ::Seatsio::HttpClient.new(secret_key, workspace_key, base_url)
16
16
  end
17
17
 
18
- def create(chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
19
- payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables, table_booking_modes: table_booking_modes)
18
+ def create(chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil, social_distancing_ruleset_key: nil)
19
+ payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables,
20
+ table_booking_modes: table_booking_modes, social_distancing_ruleset_key: social_distancing_ruleset_key)
20
21
  response = @http_client.post("events", payload)
21
22
  Domain::Event.new(response)
22
23
  end
@@ -27,8 +28,9 @@ module Seatsio
27
28
  Domain::Events.new(response).events
28
29
  end
29
30
 
30
- def update(key:, chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
31
- payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables, table_booking_modes: table_booking_modes)
31
+ def update(key:, chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil, social_distancing_ruleset_key: nil)
32
+ payload = build_event_request(chart_key: chart_key, event_key: event_key, book_whole_tables: book_whole_tables,
33
+ table_booking_modes: table_booking_modes, social_distancing_ruleset_key: social_distancing_ruleset_key)
32
34
  @http_client.post("/events/#{key}", payload)
33
35
  end
34
36
 
@@ -52,12 +54,14 @@ module Seatsio
52
54
  # @param [Object] object_or_objects
53
55
  # @param [Object] hold_token
54
56
  # @param [Object] order_id
55
- def book(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil, keep_extra_data = nil)
56
- self.change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::BOOKED, hold_token, order_id, keep_extra_data)
57
+ # @param [Object] keep_extra_data
58
+ # @param [Object] channel_keys
59
+ def book(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil, keep_extra_data = nil, channel_keys = nil)
60
+ self.change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::BOOKED, hold_token, order_id, keep_extra_data, channel_keys)
57
61
  end
58
62
 
59
- def change_object_status(event_key_or_keys, object_or_objects, status, hold_token = nil, order_id = nil, keep_extra_data = nil)
60
- request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data)
63
+ def change_object_status(event_key_or_keys, object_or_objects, status, hold_token = nil, order_id = nil, keep_extra_data = nil, channel_keys = nil)
64
+ request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, channel_keys)
61
65
  request[:params] = {
62
66
  :expand => 'objects'
63
67
  }
@@ -74,8 +78,8 @@ module Seatsio
74
78
  Domain::ChangeObjectStatusInBatchResult.new(response).results
75
79
  end
76
80
 
77
- def hold(event_key_or_keys, object_or_objects, hold_token, order_id = nil, keep_extra_data = nil)
78
- change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::HELD, hold_token, order_id, keep_extra_data)
81
+ def hold(event_key_or_keys, object_or_objects, hold_token, order_id = nil, keep_extra_data = nil, channel_keys = nil)
82
+ change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::HELD, hold_token, order_id, keep_extra_data, channel_keys)
79
83
  end
80
84
 
81
85
  def change_best_available_object_status(key, number, status, categories: nil, hold_token: nil, extra_data: nil, order_id: nil, keep_extra_data: nil)
@@ -92,8 +96,8 @@ module Seatsio
92
96
  change_best_available_object_status(key, number, Domain::ObjectStatus::HELD, categories: categories, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, extra_data: extra_data)
93
97
  end
94
98
 
95
- def release(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil, keep_extra_data = nil)
96
- change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::FREE, hold_token, order_id, keep_extra_data)
99
+ def release(event_key_or_keys, object_or_objects, hold_token = nil, order_id = nil, keep_extra_data = nil, channel_keys = nil)
100
+ change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::FREE, hold_token, order_id, keep_extra_data, channel_keys)
97
101
  end
98
102
 
99
103
  def delete(key:)
@@ -159,12 +163,13 @@ module Seatsio
159
163
  payload
160
164
  end
161
165
 
162
- def build_event_request(chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil)
166
+ def build_event_request(chart_key: nil, event_key: nil, book_whole_tables: nil, table_booking_modes: nil, social_distancing_ruleset_key: nil)
163
167
  result = {}
164
168
  result["chartKey"] = chart_key if chart_key
165
169
  result["eventKey"] = event_key if event_key
166
170
  result["bookWholeTables"] = book_whole_tables if book_whole_tables != nil
167
171
  result["tableBookingModes"] = table_booking_modes if table_booking_modes != nil
172
+ result["socialDistancingRulesetKey"] = social_distancing_ruleset_key if social_distancing_ruleset_key != nil
168
173
  result
169
174
  end
170
175
 
@@ -1,4 +1,4 @@
1
- def create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data)
1
+ def create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, channel_keys)
2
2
  result = {}
3
3
  result[:objects] = normalize(object_or_objects)
4
4
  result[:status] = status
@@ -10,7 +10,7 @@ def create_change_object_status_request(object_or_objects, status, hold_token, o
10
10
  result[:events] = [event_key_or_keys]
11
11
  end
12
12
  result[:keepExtraData] = keep_extra_data if keep_extra_data != nil
13
-
13
+ result[:channelKeys] = channel_keys if channel_keys != nil
14
14
  result
15
15
  end
16
16
 
@@ -1,3 +1,3 @@
1
1
  module Seatsio
2
- VERSION = "23.7.0"
2
+ VERSION = "24.4.0"
3
3
  end
@@ -32,6 +32,18 @@ module Seatsio
32
32
  response['secretKey']
33
33
  end
34
34
 
35
+ def activate(key:)
36
+ @http_client.post("workspaces/#{key}/actions/activate")
37
+ end
38
+
39
+ def deactivate(key:)
40
+ @http_client.post("workspaces/#{key}/actions/deactivate")
41
+ end
42
+
43
+ def set_default(key:)
44
+ @http_client.post("workspaces/actions/set-default/#{key}")
45
+ end
46
+
35
47
  def list(filter: nil)
36
48
  extended_cursor = cursor
37
49
  extended_cursor.set_query_param('filter', filter)
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: seatsio
3
3
  version: !ruby/object:Gem::Version
4
- version: 23.7.0
4
+ version: 24.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Seats.io
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-16 00:00:00.000000000 Z
11
+ date: 2020-07-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler