seatsio 23.6.0 → 24.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile.lock +2 -2
- data/Rakefile +7 -0
- data/lib/seatsio/charts.rb +7 -4
- data/lib/seatsio/domain.rb +69 -22
- data/lib/seatsio/event_reports.rb +8 -0
- data/lib/seatsio/events.rb +26 -13
- data/lib/seatsio/events/change_object_status_request.rb +2 -2
- data/lib/seatsio/version.rb +1 -1
- data/lib/seatsio/workspaces.rb +8 -0
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 03012e1d1d5263ac5ce84cf57ecd37c648c2ed0c6d797d1c87dc0c64c6c8f627
|
4
|
+
data.tar.gz: 98cb7cecf330105f6fe58ef3924ac2a9838127f633e5359e952d4d56908e59d6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e1dbefff73cde6998be7570d94c631b5252d21b06627bbffa291732244567181bc68c706c22e20a39bb57819f2cf91d014b73e7afcb82daf1ff2e11d9b05cccc
|
7
|
+
data.tar.gz: 63d3ff80ec60e504d95017f5e5c5c387a379842b6238cbeb07171c7236053ea8ceca56c4e52dae597c2dbd6e2db3f12af0c51f7dd0efbcce628064acdc519db6
|
data/Gemfile.lock
CHANGED
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
|
data/lib/seatsio/charts.rb
CHANGED
@@ -69,13 +69,11 @@ module Seatsio
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def retrieve_published_version(key)
|
72
|
-
|
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
|
-
|
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)
|
data/lib/seatsio/domain.rb
CHANGED
@@ -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,
|
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
|
-
|
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)
|
data/lib/seatsio/events.rb
CHANGED
@@ -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,
|
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,
|
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
|
-
|
56
|
-
|
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
|
|
data/lib/seatsio/version.rb
CHANGED
data/lib/seatsio/workspaces.rb
CHANGED
@@ -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:
|
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-
|
11
|
+
date: 2020-07-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|