seatsio 23.6.0 → 24.3.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: 22c363c33d731b9e45fdc8d7dfeb11f3d6e3da8ecd011fe3cb14c9a6b06d0948
4
- data.tar.gz: 0c7e49e0cecd99e3022dd289bea7c396b13cc880cef3cb59fdc601acd3132a4a
3
+ metadata.gz: 03012e1d1d5263ac5ce84cf57ecd37c648c2ed0c6d797d1c87dc0c64c6c8f627
4
+ data.tar.gz: 98cb7cecf330105f6fe58ef3924ac2a9838127f633e5359e952d4d56908e59d6
5
5
  SHA512:
6
- metadata.gz: 91c4e7fa934f02eb15d78156acfe65b5eebdfa4867b5122ecee11feb4630ce7ad995431059b261c182636b9bbfbf2fa9cc1ed7381bc6f6d0a79ffa3b33072169
7
- data.tar.gz: acce633d528b56f0f40e83c7cf15b2b5391468af2b4295abcf8c8c3ab3858cf179ae58cca55e58e31577e85eeac4dceee54982eb8ce66df9e6f1af5e8723028e
6
+ metadata.gz: e1dbefff73cde6998be7570d94c631b5252d21b06627bbffa291732244567181bc68c706c22e20a39bb57819f2cf91d014b73e7afcb82daf1ff2e11d9b05cccc
7
+ data.tar.gz: 63d3ff80ec60e504d95017f5e5c5c387a379842b6238cbeb07171c7236053ea8ceca56c4e52dae597c2dbd6e2db3f12af0c51f7dd0efbcce628064acdc519db6
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- seatsio (23.6.0)
4
+ seatsio (24.3.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -47,4 +47,4 @@ DEPENDENCIES
47
47
  webmock (~> 3.4, >= 3.4.2)
48
48
 
49
49
  BUNDLED WITH
50
- 1.16.1
50
+ 1.17.2
data/Rakefile CHANGED
@@ -8,4 +8,11 @@ Rake::TestTask.new(:test) do |t|
8
8
  t.warning = false
9
9
  end
10
10
 
11
+ Rake::TestTask.new(:singletest) do |t|
12
+ t.libs << "test"
13
+ t.libs << "lib"
14
+ t.test_files = FileList["test/**/update_channels_test.rb", "test/**/assign_objects_to_channels_test.rb"]
15
+ t.warning = false
16
+ end
17
+
11
18
  task :default => :test
@@ -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
 
@@ -71,10 +60,32 @@ module Seatsio::Domain
71
60
  end
72
61
  end
73
62
 
63
+ class Channel
64
+ attr_reader :key, :name, :color, :index, :objects
65
+
66
+ def initialize(key, name, color, index, objects)
67
+ @key = key
68
+ @name = name
69
+ @color = color
70
+ @index = index
71
+ @objects = objects
72
+ end
73
+
74
+ def == (other)
75
+ self.key == other.key &&
76
+ self.name == other.name &&
77
+ self.color == other.color &&
78
+ self.index == other.index &&
79
+ self.objects == other.objects
80
+ end
81
+
82
+ end
83
+
74
84
  class Event
75
85
 
76
86
  attr_accessor :id, :key, :chart_key, :book_whole_tables, :supports_best_available,
77
- :table_booking_modes, :for_sale_config, :created_on, :updated_on
87
+ :table_booking_modes, :for_sale_config, :created_on, :updated_on, :channels,
88
+ :social_distancing_ruleset_key
78
89
 
79
90
  def initialize(data)
80
91
  @id = data['id']
@@ -86,6 +97,10 @@ module Seatsio::Domain
86
97
  @for_sale_config = ForSaleConfig.new(data['forSaleConfig']) if data['forSaleConfig']
87
98
  @created_on = parse_date(data['createdOn'])
88
99
  @updated_on = parse_date(data['updatedOn'])
100
+ @channels = data['channels'].map {
101
+ |d| Channel.new(d['key'], d['name'], d['color'], d['index'], d['objects'])
102
+ } if data['channels']
103
+ @social_distancing_ruleset_key = data['socialDistancingRulesetKey']
89
104
  end
90
105
 
91
106
  def self.create_list(list = [])
@@ -132,7 +147,7 @@ module Seatsio::Domain
132
147
  end
133
148
 
134
149
  class Workspace
135
- attr_reader :id, :name, :key, :secret_key, :is_test
150
+ attr_reader :id, :name, :key, :secret_key, :is_test, :is_active
136
151
 
137
152
  def initialize(data)
138
153
  @id = data['id']
@@ -140,6 +155,7 @@ module Seatsio::Domain
140
155
  @key = data['key']
141
156
  @secret_key = data['secretKey']
142
157
  @is_test = data['isTest']
158
+ @is_active = data['isActive']
143
159
  end
144
160
  end
145
161
 
@@ -206,7 +222,7 @@ module Seatsio::Domain
206
222
  class ChartReportItem
207
223
 
208
224
  attr_reader :label, :labels, :category_key, :category_label, :section, :entrance, :capacity, :object_type,
209
- :left_neighbour, :right_neighbour
225
+ :left_neighbour, :right_neighbour
210
226
 
211
227
  def initialize(data)
212
228
  @label = data['label']
@@ -269,7 +285,7 @@ module Seatsio::Domain
269
285
  :category_key, :entrance, :object_type, :hold_token, :category_label,
270
286
  :ticket_type, :num_booked, :num_free, :num_held, :for_sale, :section,
271
287
  :is_accessible, :is_companion_seat, :has_restricted_view, :displayed_object_type,
272
- :left_neighbour, :right_neighbour
288
+ :left_neighbour, :right_neighbour, :is_selectable, :is_disabled_by_social_distancing
273
289
 
274
290
  def initialize(data)
275
291
  @status = data['status']
@@ -295,6 +311,8 @@ module Seatsio::Domain
295
311
  @displayed_object_type = data['displayedObjectType']
296
312
  @left_neighbour = data['leftNeighbour']
297
313
  @right_neighbour = data['rightNeighbour']
314
+ @is_selectable = data['isSelectable']
315
+ @is_disabled_by_social_distancing = data['isDisabledBySocialDistancing']
298
316
  end
299
317
  end
300
318
 
@@ -452,4 +470,33 @@ module Seatsio::Domain
452
470
  object_details
453
471
  end
454
472
 
473
+ class SocialDistancingRuleset
474
+ attr_reader :name, :number_of_disabled_seats_to_the_sides, :disable_seats_in_front_and_behind,
475
+ :number_of_disabled_aisle_seats, :max_group_size, :disabled_seats, :enabled_seats, :index
476
+
477
+ def initialize(name, number_of_disabled_seats_to_the_sides = 0, disable_seats_in_front_and_behind = false, number_of_disabled_aisle_seats = 0,
478
+ max_group_size = 0, disabled_seats = [], enabled_seats = [], index = 0)
479
+ @name = name
480
+ @number_of_disabled_seats_to_the_sides = number_of_disabled_seats_to_the_sides
481
+ @disable_seats_in_front_and_behind = disable_seats_in_front_and_behind
482
+ @number_of_disabled_aisle_seats = number_of_disabled_aisle_seats
483
+ @max_group_size = max_group_size
484
+ @disabled_seats = disabled_seats
485
+ @enabled_seats = enabled_seats
486
+ @index = index
487
+ end
488
+
489
+ def == (other)
490
+ self.name == other.name &&
491
+ self.number_of_disabled_seats_to_the_sides == other.number_of_disabled_seats_to_the_sides &&
492
+ self.disable_seats_in_front_and_behind == other.disable_seats_in_front_and_behind &&
493
+ self.number_of_disabled_aisle_seats == other.number_of_disabled_aisle_seats &&
494
+ self.max_group_size == other.max_group_size &&
495
+ self.disabled_seats == other.disabled_seats &&
496
+ self.enabled_seats == other.enabled_seats &&
497
+ self.index == other.index
498
+ end
499
+
500
+ end
501
+
455
502
  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:)
@@ -136,6 +140,14 @@ module Seatsio
136
140
  @http_client.post("events/#{key}/actions/mark-as-for-sale", request)
137
141
  end
138
142
 
143
+ def update_channels(key:, channels:)
144
+ @http_client.post("events/#{key}/channels/update", channels: channels)
145
+ end
146
+
147
+ def assign_objects_to_channels(key:, channelConfig:)
148
+ @http_client.post("events/#{key}/channels/assign-objects", channelConfig: channelConfig)
149
+ end
150
+
139
151
  private
140
152
 
141
153
  def build_parameters_for_mark_as_sale(objects: nil, categories: nil)
@@ -151,12 +163,13 @@ module Seatsio
151
163
  payload
152
164
  end
153
165
 
154
- 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)
155
167
  result = {}
156
168
  result["chartKey"] = chart_key if chart_key
157
169
  result["eventKey"] = event_key if event_key
158
170
  result["bookWholeTables"] = book_whole_tables if book_whole_tables != nil
159
171
  result["tableBookingModes"] = table_booking_modes if table_booking_modes != nil
172
+ result["socialDistancingRulesetKey"] = social_distancing_ruleset_key if social_distancing_ruleset_key != nil
160
173
  result
161
174
  end
162
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.6.0"
2
+ VERSION = "24.3.0"
3
3
  end
@@ -32,6 +32,14 @@ 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
+
35
43
  def list(filter: nil)
36
44
  extended_cursor = cursor
37
45
  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.6.0
4
+ version: 24.3.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-05-27 00:00:00.000000000 Z
11
+ date: 2020-07-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler