seatsio 23.7.0 → 24.4.0

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