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 +4 -4
- data/Gemfile.lock +1 -1
- data/lib/seatsio/charts.rb +7 -4
- data/lib/seatsio/domain.rb +49 -25
- data/lib/seatsio/event_reports.rb +8 -0
- data/lib/seatsio/events.rb +18 -13
- data/lib/seatsio/events/change_object_status_request.rb +2 -2
- data/lib/seatsio/version.rb +1 -1
- data/lib/seatsio/workspaces.rb +12 -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: beeb3566a1671f2eed0e7ffcedfb1befe849d5a5a2835e20b4d8be00fa87d2ba
|
|
4
|
+
data.tar.gz: bd73ab390fc32ee52fc9bd7dd9aae15beab3b678fd7ad8283d357c0b45a54734
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 9c630460139f3a3e879e6f94a51084032b1e4c94a2b1f59a0836c2d4aaa8441ee8c66f40e1083da4c66e4a147c1d2798a16f7903c25d95adde487b6e9107f665
|
|
7
|
+
data.tar.gz: 0d20dc31614c3cc6e0eb2b84ab2fb1fca6deb1dded378b276e9d1d7e9b938b8d48d6eb01a239dae8debbe12ebd7745d402863ccda654d0afba2a3544f8003adf
|
data/Gemfile.lock
CHANGED
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
|
|
|
@@ -84,10 +73,10 @@ module Seatsio::Domain
|
|
|
84
73
|
|
|
85
74
|
def == (other)
|
|
86
75
|
self.key == other.key &&
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
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)
|
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:)
|
|
@@ -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
|
|
data/lib/seatsio/version.rb
CHANGED
data/lib/seatsio/workspaces.rb
CHANGED
|
@@ -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:
|
|
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-
|
|
11
|
+
date: 2020-07-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|