seatsio 25.3.0 → 28.0.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/chart_reports.rb +10 -9
- data/lib/seatsio/charts.rb +12 -12
- data/lib/seatsio/domain.rb +88 -14
- data/lib/seatsio/event_reports.rb +2 -2
- data/lib/seatsio/events.rb +31 -27
- data/lib/seatsio/hold_tokens.rb +3 -3
- data/lib/seatsio/subaccounts.rb +5 -5
- data/lib/seatsio/usage_reports.rb +3 -3
- data/lib/seatsio/version.rb +1 -1
- data/lib/seatsio/workspaces.rb +3 -3
- 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: 3d051975adb905e21e99a21b9eaba54b348f45f74ac9686364fe844804f7259b
|
|
4
|
+
data.tar.gz: ed83d35ccb688b8741257123daef0742bb822fe4e5a6a5cac299b6b5fad97787
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 7ef44be79488dba3831bf5b2da54711963a8cf25c48dfd15ede94af7cd5d4a399740909e58db8f75242e55df1be9b111b685146ce006dbad156bb1c440e2ae0c
|
|
7
|
+
data.tar.gz: 9da2975e2cdd0fc319dcffc03766961941b87318a626fad76be129ce26f5c2c541a56f827433c962e8e7381743958685cf6e5fcbe44debf078e9134d4412be26
|
data/Gemfile.lock
CHANGED
|
@@ -10,24 +10,25 @@ module Seatsio
|
|
|
10
10
|
@http_client = ::Seatsio::HttpClient.new(secret_key, workspace_key, base_url)
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
def by_label(chart_key)
|
|
14
|
-
get_chart_report('byLabel', chart_key)
|
|
13
|
+
def by_label(chart_key, book_whole_tables = nil)
|
|
14
|
+
get_chart_report('byLabel', chart_key, book_whole_tables)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
-
def by_category_key(chart_key)
|
|
18
|
-
get_chart_report('byCategoryKey', chart_key)
|
|
17
|
+
def by_category_key(chart_key, book_whole_tables = nil)
|
|
18
|
+
get_chart_report('byCategoryKey', chart_key, book_whole_tables)
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
def by_category_label(chart_key)
|
|
22
|
-
get_chart_report('byCategoryLabel', chart_key)
|
|
21
|
+
def by_category_label(chart_key, book_whole_tables = nil)
|
|
22
|
+
get_chart_report('byCategoryLabel', chart_key, book_whole_tables)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
private
|
|
26
26
|
|
|
27
|
-
def get_chart_report(report_type, chart_key)
|
|
27
|
+
def get_chart_report(report_type, chart_key, book_whole_tables)
|
|
28
|
+
params = book_whole_tables.nil? ? {} : { bookWholeTables: book_whole_tables }
|
|
28
29
|
url = "reports/charts/#{chart_key}/#{report_type}"
|
|
29
|
-
body = @http_client.get(url)
|
|
30
|
-
|
|
30
|
+
body = @http_client.get(url, params)
|
|
31
|
+
ChartReport.new(body)
|
|
31
32
|
end
|
|
32
33
|
end
|
|
33
34
|
end
|
data/lib/seatsio/charts.rb
CHANGED
|
@@ -13,24 +13,24 @@ module Seatsio
|
|
|
13
13
|
|
|
14
14
|
def initialize(secret_key, workspace_key, base_url)
|
|
15
15
|
@http_client = Seatsio::HttpClient.new(secret_key, workspace_key, base_url)
|
|
16
|
-
@archive = Pagination::Cursor.new(
|
|
16
|
+
@archive = Pagination::Cursor.new(Chart, 'charts/archive', @http_client)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
|
-
# @return [Seatsio::
|
|
19
|
+
# @return [Seatsio::Chart]
|
|
20
20
|
def retrieve(chart_key)
|
|
21
21
|
response = @http_client.get("charts/#{chart_key}")
|
|
22
|
-
|
|
22
|
+
Chart.new(response)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def retrieve_with_events(chart_key)
|
|
26
26
|
response = @http_client.get("charts/#{chart_key}?expand=events")
|
|
27
|
-
|
|
27
|
+
Chart.new(response)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
def create(name: nil, venue_type: nil, categories: nil)
|
|
31
31
|
payload = build_chart_request name: name, venue_type: venue_type, categories: categories
|
|
32
32
|
response = @http_client.post('charts', payload)
|
|
33
|
-
|
|
33
|
+
Chart.new(response)
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
def update(key:, new_name: nil, categories: nil)
|
|
@@ -48,24 +48,24 @@ module Seatsio
|
|
|
48
48
|
|
|
49
49
|
def copy(key)
|
|
50
50
|
response = @http_client.post("charts/#{key}/version/published/actions/copy")
|
|
51
|
-
|
|
51
|
+
Chart.new(response)
|
|
52
52
|
end
|
|
53
53
|
|
|
54
54
|
def copy_to_subaccount(chart_key, subaccount_id)
|
|
55
55
|
url = "charts/#{chart_key}/version/published/actions/copy-to/#{subaccount_id}"
|
|
56
56
|
response = @http_client.post url
|
|
57
|
-
|
|
57
|
+
Chart.new(response)
|
|
58
58
|
end
|
|
59
59
|
|
|
60
60
|
def copy_to_workspace(chart_key, to_workspace_key)
|
|
61
61
|
url = "charts/#{chart_key}/version/published/actions/copy-to-workspace/#{to_workspace_key}"
|
|
62
62
|
response = @http_client.post url
|
|
63
|
-
|
|
63
|
+
Chart.new(response)
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
def copy_draft_version(key)
|
|
67
67
|
response = @http_client.post("charts/#{key}/version/draft/actions/copy")
|
|
68
|
-
|
|
68
|
+
Chart.new(response)
|
|
69
69
|
end
|
|
70
70
|
|
|
71
71
|
def retrieve_published_version(key)
|
|
@@ -98,7 +98,7 @@ module Seatsio
|
|
|
98
98
|
end
|
|
99
99
|
|
|
100
100
|
def list(chart_filter: nil, tag: nil, expand_events: nil, with_validation: false)
|
|
101
|
-
cursor = Pagination::Cursor.new(
|
|
101
|
+
cursor = Pagination::Cursor.new(Chart, 'charts', @http_client)
|
|
102
102
|
cursor.set_query_param('filter', chart_filter)
|
|
103
103
|
cursor.set_query_param('tag', tag)
|
|
104
104
|
|
|
@@ -123,12 +123,12 @@ module Seatsio
|
|
|
123
123
|
|
|
124
124
|
def validate_published_version(chart_key)
|
|
125
125
|
response = @http_client.post("charts/#{chart_key}/version/published/actions/validate")
|
|
126
|
-
Seatsio::
|
|
126
|
+
Seatsio::ChartValidationResult.new(response)
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
def validate_draft_version(chart_key)
|
|
130
130
|
response = @http_client.post("charts/#{chart_key}/version/draft/actions/validate")
|
|
131
|
-
Seatsio::
|
|
131
|
+
Seatsio::ChartValidationResult.new(response)
|
|
132
132
|
end
|
|
133
133
|
|
|
134
134
|
private
|
data/lib/seatsio/domain.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
require 'seatsio/util'
|
|
2
2
|
|
|
3
|
-
module Seatsio
|
|
3
|
+
module Seatsio
|
|
4
4
|
|
|
5
5
|
module_function
|
|
6
6
|
|
|
@@ -22,9 +22,19 @@ module Seatsio::Domain
|
|
|
22
22
|
@archived = data['archived']
|
|
23
23
|
@validation = data['validation']
|
|
24
24
|
@social_distancing_rulesets = data['socialDistancingRulesets'].map {
|
|
25
|
-
|key, r| [key, SocialDistancingRuleset.new(r['name'],
|
|
26
|
-
|
|
27
|
-
|
|
25
|
+
|key, r| [key, SocialDistancingRuleset.new(r['name'],
|
|
26
|
+
number_of_disabled_seats_to_the_sides: r['numberOfDisabledSeatsToTheSides'],
|
|
27
|
+
disable_seats_in_front_and_behind: r['disableSeatsInFrontAndBehind'],
|
|
28
|
+
disable_diagonal_seats_in_front_and_behind: r['disableDiagonalSeatsInFrontAndBehind'],
|
|
29
|
+
number_of_disabled_aisle_seats: r['numberOfDisabledAisleSeats'],
|
|
30
|
+
max_group_size: r['maxGroupSize'],
|
|
31
|
+
max_occupancy_absolute: r['maxOccupancyAbsolute'],
|
|
32
|
+
max_occupancy_percentage: r['maxOccupancyPercentage'],
|
|
33
|
+
one_group_per_table: r['oneGroupPerTable'],
|
|
34
|
+
fixed_group_layout: r['fixedGroupLayout'],
|
|
35
|
+
disabled_seats: r['disabledSeats'],
|
|
36
|
+
enabled_seats: r['enabledSeats'],
|
|
37
|
+
index: r['index'])]
|
|
28
38
|
}.to_h
|
|
29
39
|
end
|
|
30
40
|
end
|
|
@@ -60,6 +70,38 @@ module Seatsio::Domain
|
|
|
60
70
|
end
|
|
61
71
|
end
|
|
62
72
|
|
|
73
|
+
class TableBookingConfig
|
|
74
|
+
|
|
75
|
+
attr_reader :mode, :tables
|
|
76
|
+
|
|
77
|
+
def initialize(mode, tables = nil)
|
|
78
|
+
@mode = mode
|
|
79
|
+
@tables = tables
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
def self.inherit
|
|
83
|
+
TableBookingConfig.new('INHERIT')
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
def self.all_by_seat
|
|
87
|
+
TableBookingConfig.new('ALL_BY_SEAT')
|
|
88
|
+
end
|
|
89
|
+
|
|
90
|
+
def self.all_by_table
|
|
91
|
+
TableBookingConfig.new('ALL_BY_TABLE')
|
|
92
|
+
end
|
|
93
|
+
|
|
94
|
+
def self.custom(tables)
|
|
95
|
+
TableBookingConfig.new('CUSTOM', tables)
|
|
96
|
+
end
|
|
97
|
+
|
|
98
|
+
def self.from_json(data)
|
|
99
|
+
if data
|
|
100
|
+
TableBookingConfig.new(data['mode'], data['tables'])
|
|
101
|
+
end
|
|
102
|
+
end
|
|
103
|
+
end
|
|
104
|
+
|
|
63
105
|
class Channel
|
|
64
106
|
attr_reader :key, :name, :color, :index, :objects
|
|
65
107
|
|
|
@@ -83,17 +125,16 @@ module Seatsio::Domain
|
|
|
83
125
|
|
|
84
126
|
class Event
|
|
85
127
|
|
|
86
|
-
attr_accessor :id, :key, :chart_key, :
|
|
87
|
-
:
|
|
128
|
+
attr_accessor :id, :key, :chart_key, :supports_best_available,
|
|
129
|
+
:table_booking_config, :for_sale_config, :created_on, :updated_on, :channels,
|
|
88
130
|
:social_distancing_ruleset_key
|
|
89
131
|
|
|
90
132
|
def initialize(data)
|
|
91
133
|
@id = data['id']
|
|
92
134
|
@key = data['key']
|
|
93
135
|
@chart_key = data['chartKey']
|
|
94
|
-
@book_whole_tables = data['bookWholeTables']
|
|
95
136
|
@supports_best_available = data['supportsBestAvailable']
|
|
96
|
-
@
|
|
137
|
+
@table_booking_config = TableBookingConfig::from_json(data['tableBookingConfig'])
|
|
97
138
|
@for_sale_config = ForSaleConfig.new(data['forSaleConfig']) if data['forSaleConfig']
|
|
98
139
|
@created_on = parse_date(data['createdOn'])
|
|
99
140
|
@updated_on = parse_date(data['updatedOn'])
|
|
@@ -184,7 +225,7 @@ module Seatsio::Domain
|
|
|
184
225
|
attr_reader :objects
|
|
185
226
|
|
|
186
227
|
def initialize(data)
|
|
187
|
-
@objects = Seatsio
|
|
228
|
+
@objects = Seatsio.to_object_details(data['objects']);
|
|
188
229
|
end
|
|
189
230
|
end
|
|
190
231
|
|
|
@@ -216,7 +257,7 @@ module Seatsio::Domain
|
|
|
216
257
|
def initialize(data)
|
|
217
258
|
@next_to_each_other = data['nextToEachOther']
|
|
218
259
|
@objects = data['objects']
|
|
219
|
-
@object_details = Seatsio
|
|
260
|
+
@object_details = Seatsio.to_object_details(data['objectDetails'])
|
|
220
261
|
end
|
|
221
262
|
end
|
|
222
263
|
|
|
@@ -474,31 +515,64 @@ module Seatsio::Domain
|
|
|
474
515
|
|
|
475
516
|
class SocialDistancingRuleset
|
|
476
517
|
attr_reader :name, :number_of_disabled_seats_to_the_sides, :disable_seats_in_front_and_behind,
|
|
477
|
-
:
|
|
518
|
+
:disable_diagonal_seats_in_front_and_behind, :number_of_disabled_aisle_seats, :max_group_size, :max_occupancy_absolute,
|
|
519
|
+
:max_occupancy_percentage, :one_group_per_table, :fixed_group_layout, :disabled_seats, :enabled_seats, :index
|
|
478
520
|
|
|
479
|
-
def initialize(name, number_of_disabled_seats_to_the_sides
|
|
480
|
-
max_group_size
|
|
521
|
+
def initialize(name, number_of_disabled_seats_to_the_sides: 0, disable_seats_in_front_and_behind: false, disable_diagonal_seats_in_front_and_behind: false,
|
|
522
|
+
number_of_disabled_aisle_seats: 0, max_group_size: 0, max_occupancy_absolute: 0, max_occupancy_percentage: 0, one_group_per_table: false,
|
|
523
|
+
fixed_group_layout: false, disabled_seats: [], enabled_seats: [], index: 0)
|
|
481
524
|
@name = name
|
|
482
525
|
@number_of_disabled_seats_to_the_sides = number_of_disabled_seats_to_the_sides
|
|
483
526
|
@disable_seats_in_front_and_behind = disable_seats_in_front_and_behind
|
|
527
|
+
@disable_diagonal_seats_in_front_and_behind = disable_diagonal_seats_in_front_and_behind
|
|
484
528
|
@number_of_disabled_aisle_seats = number_of_disabled_aisle_seats
|
|
485
529
|
@max_group_size = max_group_size
|
|
530
|
+
@max_occupancy_absolute = max_occupancy_absolute
|
|
531
|
+
@max_occupancy_percentage = max_occupancy_percentage
|
|
532
|
+
@one_group_per_table = one_group_per_table
|
|
533
|
+
@fixed_group_layout = fixed_group_layout
|
|
486
534
|
@disabled_seats = disabled_seats
|
|
487
535
|
@enabled_seats = enabled_seats
|
|
488
536
|
@index = index
|
|
489
537
|
end
|
|
490
538
|
|
|
539
|
+
def self.fixed(name, disabled_seats: [], index: 0)
|
|
540
|
+
return SocialDistancingRuleset.new(name, index: index, disabled_seats: disabled_seats, fixed_group_layout: true)
|
|
541
|
+
end
|
|
542
|
+
|
|
543
|
+
def self.rule_based(name, number_of_disabled_seats_to_the_sides: 0, disable_seats_in_front_and_behind: false, disable_diagonal_seats_in_front_and_behind: false,
|
|
544
|
+
number_of_disabled_aisle_seats: 0, max_group_size: 0, max_occupancy_absolute: 0, max_occupancy_percentage: 0, one_group_per_table: false,
|
|
545
|
+
disabled_seats: [], enabled_seats: [], index: 0)
|
|
546
|
+
return SocialDistancingRuleset.new(name,
|
|
547
|
+
number_of_disabled_seats_to_the_sides: number_of_disabled_seats_to_the_sides,
|
|
548
|
+
disable_seats_in_front_and_behind: disable_seats_in_front_and_behind,
|
|
549
|
+
disable_diagonal_seats_in_front_and_behind: disable_diagonal_seats_in_front_and_behind,
|
|
550
|
+
number_of_disabled_aisle_seats: number_of_disabled_aisle_seats,
|
|
551
|
+
max_group_size: max_group_size,
|
|
552
|
+
max_occupancy_absolute: max_occupancy_absolute,
|
|
553
|
+
max_occupancy_percentage: max_occupancy_percentage,
|
|
554
|
+
one_group_per_table: one_group_per_table,
|
|
555
|
+
fixed_group_layout: false,
|
|
556
|
+
disabled_seats: disabled_seats,
|
|
557
|
+
enabled_seats: enabled_seats,
|
|
558
|
+
index: index)
|
|
559
|
+
end
|
|
560
|
+
|
|
491
561
|
def == (other)
|
|
492
562
|
self.name == other.name &&
|
|
493
563
|
self.number_of_disabled_seats_to_the_sides == other.number_of_disabled_seats_to_the_sides &&
|
|
494
564
|
self.disable_seats_in_front_and_behind == other.disable_seats_in_front_and_behind &&
|
|
565
|
+
self.disable_diagonal_seats_in_front_and_behind == other.disable_diagonal_seats_in_front_and_behind &&
|
|
495
566
|
self.number_of_disabled_aisle_seats == other.number_of_disabled_aisle_seats &&
|
|
496
567
|
self.max_group_size == other.max_group_size &&
|
|
568
|
+
self.max_occupancy_absolute == other.max_occupancy_absolute &&
|
|
569
|
+
self.max_occupancy_percentage == other.max_occupancy_percentage &&
|
|
570
|
+
self.one_group_per_table == other.one_group_per_table &&
|
|
571
|
+
self.fixed_group_layout == other.fixed_group_layout &&
|
|
497
572
|
self.disabled_seats == other.disabled_seats &&
|
|
498
573
|
self.enabled_seats == other.enabled_seats &&
|
|
499
574
|
self.index == other.index
|
|
500
575
|
end
|
|
501
|
-
|
|
502
576
|
end
|
|
503
577
|
|
|
504
578
|
end
|
|
@@ -78,11 +78,11 @@ module Seatsio
|
|
|
78
78
|
if report_filter
|
|
79
79
|
url = "reports/events/#{event_key}/#{report_type}/#{report_filter}"
|
|
80
80
|
body = @http_client.get(url)
|
|
81
|
-
|
|
81
|
+
EventReport.new(body[report_filter])
|
|
82
82
|
else
|
|
83
83
|
url = "reports/events/#{event_key}/#{report_type}"
|
|
84
84
|
body = @http_client.get(url)
|
|
85
|
-
|
|
85
|
+
EventReport.new(body)
|
|
86
86
|
end
|
|
87
87
|
end
|
|
88
88
|
end
|
data/lib/seatsio/events.rb
CHANGED
|
@@ -15,22 +15,21 @@ 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,
|
|
19
|
-
payload = build_event_request(chart_key: chart_key, event_key: event_key,
|
|
20
|
-
|
|
18
|
+
def create(chart_key: nil, event_key: nil, table_booking_config: nil, social_distancing_ruleset_key: nil)
|
|
19
|
+
payload = build_event_request(chart_key: chart_key, event_key: event_key,
|
|
20
|
+
table_booking_config: table_booking_config, social_distancing_ruleset_key: social_distancing_ruleset_key)
|
|
21
21
|
response = @http_client.post("events", payload)
|
|
22
|
-
|
|
22
|
+
Event.new(response)
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def create_multiple(key: nil, event_creation_params: nil)
|
|
26
26
|
payload = build_events_request(chart_key: key, event_creation_params: event_creation_params)
|
|
27
27
|
response = @http_client.post("events/actions/create-multiple", payload)
|
|
28
|
-
|
|
28
|
+
Events.new(response).events
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def update(key:, chart_key: nil, event_key: nil,
|
|
32
|
-
payload = build_event_request(chart_key: chart_key, event_key: event_key,
|
|
33
|
-
table_booking_modes: table_booking_modes, social_distancing_ruleset_key: social_distancing_ruleset_key)
|
|
31
|
+
def update(key:, chart_key: nil, event_key: nil, table_booking_config: nil, social_distancing_ruleset_key: nil)
|
|
32
|
+
payload = build_event_request(chart_key: chart_key, event_key: event_key, table_booking_config: table_booking_config, social_distancing_ruleset_key: social_distancing_ruleset_key)
|
|
34
33
|
@http_client.post("/events/#{key}", payload)
|
|
35
34
|
end
|
|
36
35
|
|
|
@@ -47,11 +46,11 @@ module Seatsio
|
|
|
47
46
|
def retrieve_object_status(key:, object_key:)
|
|
48
47
|
url = "events/#{key}/objects/#{CGI::escape(object_key).gsub('+', '%20')}"
|
|
49
48
|
response = @http_client.get(url)
|
|
50
|
-
|
|
49
|
+
ObjectStatus.new(response)
|
|
51
50
|
end
|
|
52
51
|
|
|
53
52
|
def book(event_key_or_keys, object_or_objects, hold_token: nil, order_id: nil, keep_extra_data: nil, ignore_channels: nil, channel_keys: nil)
|
|
54
|
-
self.change_object_status(event_key_or_keys, object_or_objects,
|
|
53
|
+
self.change_object_status(event_key_or_keys, object_or_objects, ObjectStatus::BOOKED, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, ignore_channels: ignore_channels, channel_keys: channel_keys)
|
|
55
54
|
end
|
|
56
55
|
|
|
57
56
|
def change_object_status(event_key_or_keys, object_or_objects, status, hold_token: nil, order_id: nil, keep_extra_data: nil, ignore_channels: nil, channel_keys: nil)
|
|
@@ -60,38 +59,38 @@ module Seatsio
|
|
|
60
59
|
:expand => 'objects'
|
|
61
60
|
}
|
|
62
61
|
response = @http_client.post("seasons/actions/change-object-status", request)
|
|
63
|
-
|
|
62
|
+
ChangeObjectStatusResult.new(response)
|
|
64
63
|
end
|
|
65
64
|
|
|
66
65
|
def change_object_status_in_batch(status_change_requests)
|
|
67
66
|
request = {
|
|
68
67
|
:statusChanges => status_change_requests,
|
|
69
|
-
:params => {
|
|
68
|
+
:params => {:expand => 'objects'}
|
|
70
69
|
}
|
|
71
70
|
response = @http_client.post("events/actions/change-object-status", request)
|
|
72
|
-
|
|
71
|
+
ChangeObjectStatusInBatchResult.new(response).results
|
|
73
72
|
end
|
|
74
73
|
|
|
75
74
|
def hold(event_key_or_keys, object_or_objects, hold_token, order_id: nil, keep_extra_data: nil, ignore_channels: nil, channel_keys: nil)
|
|
76
|
-
change_object_status(event_key_or_keys, object_or_objects,
|
|
75
|
+
change_object_status(event_key_or_keys, object_or_objects, ObjectStatus::HELD, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, ignore_channels: ignore_channels, channel_keys: channel_keys)
|
|
77
76
|
end
|
|
78
77
|
|
|
79
78
|
def change_best_available_object_status(key, number, status, categories: nil, hold_token: nil, extra_data: nil, ticket_types: nil, order_id: nil, keep_extra_data: nil, ignore_channels: nil, channel_keys: nil)
|
|
80
79
|
request = create_change_best_available_object_status_request(number, status, categories, extra_data, ticket_types, hold_token, order_id, keep_extra_data, ignore_channels, channel_keys)
|
|
81
80
|
response = @http_client.post("events/#{key}/actions/change-object-status", request)
|
|
82
|
-
|
|
81
|
+
BestAvailableObjects.new(response)
|
|
83
82
|
end
|
|
84
83
|
|
|
85
84
|
def book_best_available(key, number, categories: nil, hold_token: nil, order_id: nil, keep_extra_data: nil, extra_data: nil, ticket_types: nil, ignore_channels: nil, channel_keys: nil)
|
|
86
|
-
change_best_available_object_status(key, number,
|
|
85
|
+
change_best_available_object_status(key, number, ObjectStatus::BOOKED, categories: categories, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, extra_data: extra_data, ticket_types: ticket_types, ignore_channels: ignore_channels, channel_keys: channel_keys)
|
|
87
86
|
end
|
|
88
87
|
|
|
89
88
|
def hold_best_available(key, number, hold_token, categories: nil, order_id: nil, keep_extra_data: nil, extra_data: nil, ticket_types: nil, ignore_channels: nil, channel_keys: nil)
|
|
90
|
-
change_best_available_object_status(key, number,
|
|
89
|
+
change_best_available_object_status(key, number, ObjectStatus::HELD, categories: categories, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, extra_data: extra_data, ticket_types: ticket_types, ignore_channels: ignore_channels, channel_keys: channel_keys)
|
|
91
90
|
end
|
|
92
91
|
|
|
93
92
|
def release(event_key_or_keys, object_or_objects, hold_token: nil, order_id: nil, keep_extra_data: nil, ignore_channels: nil, channel_keys: nil)
|
|
94
|
-
change_object_status(event_key_or_keys, object_or_objects,
|
|
93
|
+
change_object_status(event_key_or_keys, object_or_objects, ObjectStatus::FREE, hold_token: hold_token, order_id: order_id, keep_extra_data: keep_extra_data, ignore_channels: ignore_channels, channel_keys: channel_keys)
|
|
95
94
|
end
|
|
96
95
|
|
|
97
96
|
def delete(key:)
|
|
@@ -101,23 +100,23 @@ module Seatsio
|
|
|
101
100
|
|
|
102
101
|
def retrieve(key:)
|
|
103
102
|
response = @http_client.get("events/#{key}")
|
|
104
|
-
|
|
103
|
+
Event.new(response)
|
|
105
104
|
end
|
|
106
105
|
|
|
107
106
|
def list
|
|
108
|
-
Pagination::Cursor.new(
|
|
107
|
+
Pagination::Cursor.new(Event, 'events', @http_client)
|
|
109
108
|
end
|
|
110
109
|
|
|
111
110
|
def list_status_changes(key, object_id = nil)
|
|
112
111
|
if object_id != nil
|
|
113
112
|
status_changes_for_object key: key, object_id: object_id
|
|
114
113
|
else
|
|
115
|
-
Pagination::Cursor.new(
|
|
114
|
+
Pagination::Cursor.new(StatusChange, "/events/#{key}/status-changes", @http_client)
|
|
116
115
|
end
|
|
117
116
|
end
|
|
118
117
|
|
|
119
118
|
def status_changes_for_object(key:, object_id:)
|
|
120
|
-
Pagination::Cursor.new(
|
|
119
|
+
Pagination::Cursor.new(StatusChange, "/events/#{key}/objects/#{object_id}/status-changes", @http_client)
|
|
121
120
|
end
|
|
122
121
|
|
|
123
122
|
def mark_as_not_for_sale(key:, objects: nil, categories: nil)
|
|
@@ -157,12 +156,11 @@ module Seatsio
|
|
|
157
156
|
payload
|
|
158
157
|
end
|
|
159
158
|
|
|
160
|
-
def build_event_request(chart_key: nil, event_key: nil,
|
|
159
|
+
def build_event_request(chart_key: nil, event_key: nil, table_booking_config: nil, social_distancing_ruleset_key: nil)
|
|
161
160
|
result = {}
|
|
162
161
|
result["chartKey"] = chart_key if chart_key
|
|
163
162
|
result["eventKey"] = event_key if event_key
|
|
164
|
-
result["
|
|
165
|
-
result["tableBookingModes"] = table_booking_modes if table_booking_modes != nil
|
|
163
|
+
result["tableBookingConfig"] = table_booking_config_to_request(table_booking_config) if table_booking_config != nil
|
|
166
164
|
result["socialDistancingRulesetKey"] = social_distancing_ruleset_key if social_distancing_ruleset_key != nil
|
|
167
165
|
result
|
|
168
166
|
end
|
|
@@ -179,12 +177,18 @@ module Seatsio
|
|
|
179
177
|
params.each do |param|
|
|
180
178
|
r = {}
|
|
181
179
|
r["eventKey"] = param[:event_key] if param[:event_key] != nil
|
|
182
|
-
r["
|
|
183
|
-
r["tableBookingModes"] = param[:table_booking_modes] if param[:table_booking_modes] != nil
|
|
180
|
+
r["tableBookingConfig"] = table_booking_config_to_request(param[:table_booking_config]) if param[:table_booking_config] != nil
|
|
184
181
|
result.push(r)
|
|
185
182
|
end
|
|
186
183
|
result
|
|
187
184
|
end
|
|
188
185
|
|
|
186
|
+
def table_booking_config_to_request(table_booking_config)
|
|
187
|
+
result = {}
|
|
188
|
+
result["mode"] = table_booking_config.mode
|
|
189
|
+
result["tables"] = table_booking_config.tables if table_booking_config.tables != nil
|
|
190
|
+
result
|
|
191
|
+
end
|
|
192
|
+
|
|
189
193
|
end
|
|
190
194
|
end
|
data/lib/seatsio/hold_tokens.rb
CHANGED
|
@@ -21,18 +21,18 @@ module Seatsio
|
|
|
21
21
|
body[:expiresInMinutes] = expires_in_minutes
|
|
22
22
|
end
|
|
23
23
|
response = @http_client.post('hold-tokens', body)
|
|
24
|
-
|
|
24
|
+
HoldToken.new(response)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
def retrieve(hold_token)
|
|
28
28
|
response = @http_client.get("/hold-tokens/#{hold_token}")
|
|
29
|
-
|
|
29
|
+
HoldToken.new(response)
|
|
30
30
|
end
|
|
31
31
|
|
|
32
32
|
def expire_in_minutes(hold_token, expires_in_minutes = nil)
|
|
33
33
|
body = {"expiresInMinutes": expires_in_minutes}
|
|
34
34
|
response = @http_client.post("/hold-tokens/#{hold_token}", body)
|
|
35
|
-
|
|
35
|
+
HoldToken.new(response)
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
end
|
data/lib/seatsio/subaccounts.rb
CHANGED
|
@@ -17,7 +17,7 @@ module Seatsio
|
|
|
17
17
|
body['name'] = name if name
|
|
18
18
|
|
|
19
19
|
response = @http_client.post("subaccounts", body)
|
|
20
|
-
|
|
20
|
+
Subaccount.new(response)
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def update(id:, name: nil)
|
|
@@ -50,17 +50,17 @@ module Seatsio
|
|
|
50
50
|
|
|
51
51
|
def retrieve(id:)
|
|
52
52
|
response = @http_client.get("/subaccounts/#{id}")
|
|
53
|
-
|
|
53
|
+
Subaccount.new(response)
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
def copy_chart_to_parent(id: nil, chart_key: nil)
|
|
57
57
|
response = @http_client.post("/subaccounts/#{id}/charts/#{chart_key}/actions/copy-to/parent")
|
|
58
|
-
|
|
58
|
+
Chart.new(response)
|
|
59
59
|
end
|
|
60
60
|
|
|
61
61
|
def copy_chart_to_subaccount(from_id: nil, to_id: nil, chart_key: nil)
|
|
62
62
|
response = @http_client.post("/subaccounts/#{from_id}/charts/#{chart_key}/actions/copy-to/#{to_id}")
|
|
63
|
-
|
|
63
|
+
Chart.new(response)
|
|
64
64
|
end
|
|
65
65
|
|
|
66
66
|
def regenerate_secret_key(id:)
|
|
@@ -75,7 +75,7 @@ module Seatsio
|
|
|
75
75
|
|
|
76
76
|
def cursor(status: nil)
|
|
77
77
|
endpoint = status ? "subaccounts/#{status}" : 'subaccounts'
|
|
78
|
-
Pagination::Cursor.new(
|
|
78
|
+
Pagination::Cursor.new(Subaccount, endpoint, @http_client)
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
end
|
|
@@ -13,19 +13,19 @@ module Seatsio
|
|
|
13
13
|
def summary_for_all_months
|
|
14
14
|
url = "reports/usage"
|
|
15
15
|
body = @http_client.get(url)
|
|
16
|
-
|
|
16
|
+
UsageSummaryForAllMoths.new(body)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def details_for_month(month)
|
|
20
20
|
url = "reports/usage/month/" + month.serialize
|
|
21
21
|
body = @http_client.get(url)
|
|
22
|
-
body.map { |item|
|
|
22
|
+
body.map { |item| UsageDetails.new(item) }
|
|
23
23
|
end
|
|
24
24
|
|
|
25
25
|
def details_for_event_in_month(eventId, month)
|
|
26
26
|
url = "reports/usage/month/" + month.serialize + "/event/" + eventId.to_s
|
|
27
27
|
body = @http_client.get(url)
|
|
28
|
-
body.map { |item|
|
|
28
|
+
body.map { |item| UsageForObject.new(item) }
|
|
29
29
|
end
|
|
30
30
|
end
|
|
31
31
|
end
|
data/lib/seatsio/version.rb
CHANGED
data/lib/seatsio/workspaces.rb
CHANGED
|
@@ -18,7 +18,7 @@ module Seatsio
|
|
|
18
18
|
body['isTest'] = is_test if is_test
|
|
19
19
|
|
|
20
20
|
response = @http_client.post("workspaces", body)
|
|
21
|
-
|
|
21
|
+
Workspace.new(response)
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
def update(key:, name:)
|
|
@@ -52,13 +52,13 @@ module Seatsio
|
|
|
52
52
|
|
|
53
53
|
def retrieve(key:)
|
|
54
54
|
response = @http_client.get("/workspaces/#{key}")
|
|
55
|
-
|
|
55
|
+
Workspace.new(response)
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
private
|
|
59
59
|
|
|
60
60
|
def cursor()
|
|
61
|
-
Pagination::Cursor.new(
|
|
61
|
+
Pagination::Cursor.new(Workspace, 'workspaces', @http_client)
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
end
|
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: 28.0.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-11-15 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|