seatsio 26.0.0 → 28.1.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 +78 -24
- data/lib/seatsio/event_reports.rb +2 -2
- data/lib/seatsio/events.rb +35 -32
- data/lib/seatsio/events/change_object_status_request.rb +2 -1
- 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: f16665209691ecc5c5be881c2c37580dc4525c3d1e2c067780830241aae5c77b
|
|
4
|
+
data.tar.gz: 84ecfa02bb8129ee5bc78f71319201c9ca1650b74cb570666628aa2a57dd9287
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 8882b8209078d93b30db4f410c27f063a79eea273840e02a060b36b01c28eb6953007e46244abfc3f0f863e3ede87de1d15bd804bdbf121024bdad618b9ec341
|
|
7
|
+
data.tar.gz: 13663be3aaf3e6189037d5678c86dc6575785dcb3150a09d197f4a6ab16bd82d20c4edf3822f4d3bcfb7d9cbe414b49a749eae08315b609abe022521d4a442b0
|
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,10 +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
|
-
|
|
28
|
-
|
|
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'])]
|
|
29
38
|
}.to_h
|
|
30
39
|
end
|
|
31
40
|
end
|
|
@@ -61,6 +70,38 @@ module Seatsio::Domain
|
|
|
61
70
|
end
|
|
62
71
|
end
|
|
63
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
|
+
|
|
64
105
|
class Channel
|
|
65
106
|
attr_reader :key, :name, :color, :index, :objects
|
|
66
107
|
|
|
@@ -84,17 +125,16 @@ module Seatsio::Domain
|
|
|
84
125
|
|
|
85
126
|
class Event
|
|
86
127
|
|
|
87
|
-
attr_accessor :id, :key, :chart_key, :
|
|
88
|
-
:
|
|
128
|
+
attr_accessor :id, :key, :chart_key, :supports_best_available,
|
|
129
|
+
:table_booking_config, :for_sale_config, :created_on, :updated_on, :channels,
|
|
89
130
|
:social_distancing_ruleset_key
|
|
90
131
|
|
|
91
132
|
def initialize(data)
|
|
92
133
|
@id = data['id']
|
|
93
134
|
@key = data['key']
|
|
94
135
|
@chart_key = data['chartKey']
|
|
95
|
-
@book_whole_tables = data['bookWholeTables']
|
|
96
136
|
@supports_best_available = data['supportsBestAvailable']
|
|
97
|
-
@
|
|
137
|
+
@table_booking_config = TableBookingConfig::from_json(data['tableBookingConfig'])
|
|
98
138
|
@for_sale_config = ForSaleConfig.new(data['forSaleConfig']) if data['forSaleConfig']
|
|
99
139
|
@created_on = parse_date(data['createdOn'])
|
|
100
140
|
@updated_on = parse_date(data['updatedOn'])
|
|
@@ -185,7 +225,7 @@ module Seatsio::Domain
|
|
|
185
225
|
attr_reader :objects
|
|
186
226
|
|
|
187
227
|
def initialize(data)
|
|
188
|
-
@objects = Seatsio
|
|
228
|
+
@objects = Seatsio.to_object_details(data['objects']);
|
|
189
229
|
end
|
|
190
230
|
end
|
|
191
231
|
|
|
@@ -217,7 +257,7 @@ module Seatsio::Domain
|
|
|
217
257
|
def initialize(data)
|
|
218
258
|
@next_to_each_other = data['nextToEachOther']
|
|
219
259
|
@objects = data['objects']
|
|
220
|
-
@object_details = Seatsio
|
|
260
|
+
@object_details = Seatsio.to_object_details(data['objectDetails'])
|
|
221
261
|
end
|
|
222
262
|
end
|
|
223
263
|
|
|
@@ -475,45 +515,59 @@ module Seatsio::Domain
|
|
|
475
515
|
|
|
476
516
|
class SocialDistancingRuleset
|
|
477
517
|
attr_reader :name, :number_of_disabled_seats_to_the_sides, :disable_seats_in_front_and_behind,
|
|
478
|
-
:number_of_disabled_aisle_seats, :max_group_size, :max_occupancy_absolute,
|
|
479
|
-
:max_occupancy_percentage, :fixed_group_layout, :disabled_seats, :enabled_seats, :index
|
|
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
|
|
480
520
|
|
|
481
|
-
def initialize(name, number_of_disabled_seats_to_the_sides
|
|
482
|
-
max_group_size
|
|
483
|
-
disabled_seats
|
|
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)
|
|
484
524
|
@name = name
|
|
485
525
|
@number_of_disabled_seats_to_the_sides = number_of_disabled_seats_to_the_sides
|
|
486
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
|
|
487
528
|
@number_of_disabled_aisle_seats = number_of_disabled_aisle_seats
|
|
488
529
|
@max_group_size = max_group_size
|
|
489
530
|
@max_occupancy_absolute = max_occupancy_absolute
|
|
490
531
|
@max_occupancy_percentage = max_occupancy_percentage
|
|
532
|
+
@one_group_per_table = one_group_per_table
|
|
491
533
|
@fixed_group_layout = fixed_group_layout
|
|
492
534
|
@disabled_seats = disabled_seats
|
|
493
535
|
@enabled_seats = enabled_seats
|
|
494
536
|
@index = index
|
|
495
537
|
end
|
|
496
538
|
|
|
497
|
-
def self.fixed(name, disabled_seats
|
|
498
|
-
SocialDistancingRuleset.new(name,
|
|
539
|
+
def self.fixed(name, disabled_seats: [], index: 0)
|
|
540
|
+
return SocialDistancingRuleset.new(name, index: index, disabled_seats: disabled_seats, fixed_group_layout: true)
|
|
499
541
|
end
|
|
500
542
|
|
|
501
|
-
def self.rule_based(name, number_of_disabled_seats_to_the_sides
|
|
502
|
-
max_group_size
|
|
503
|
-
disabled_seats
|
|
504
|
-
SocialDistancingRuleset.new(name,
|
|
505
|
-
|
|
506
|
-
|
|
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)
|
|
507
559
|
end
|
|
508
560
|
|
|
509
561
|
def == (other)
|
|
510
562
|
self.name == other.name &&
|
|
511
563
|
self.number_of_disabled_seats_to_the_sides == other.number_of_disabled_seats_to_the_sides &&
|
|
512
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 &&
|
|
513
566
|
self.number_of_disabled_aisle_seats == other.number_of_disabled_aisle_seats &&
|
|
514
567
|
self.max_group_size == other.max_group_size &&
|
|
515
568
|
self.max_occupancy_absolute == other.max_occupancy_absolute &&
|
|
516
569
|
self.max_occupancy_percentage == other.max_occupancy_percentage &&
|
|
570
|
+
self.one_group_per_table == other.one_group_per_table &&
|
|
517
571
|
self.fixed_group_layout == other.fixed_group_layout &&
|
|
518
572
|
self.disabled_seats == other.disabled_seats &&
|
|
519
573
|
self.enabled_seats == other.enabled_seats &&
|
|
@@ -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,77 +46,76 @@ 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
|
-
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,
|
|
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, ignore_social_distancing: nil)
|
|
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, ignore_social_distancing: ignore_social_distancing)
|
|
55
54
|
end
|
|
56
55
|
|
|
57
|
-
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)
|
|
58
|
-
request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, ignore_channels, channel_keys)
|
|
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, ignore_social_distancing: nil)
|
|
57
|
+
request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, ignore_channels, channel_keys, ignore_social_distancing)
|
|
59
58
|
request[:params] = {
|
|
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
|
-
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,
|
|
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, ignore_social_distancing: nil)
|
|
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, ignore_social_distancing: ignore_social_distancing)
|
|
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:)
|
|
98
97
|
@http_client.delete("/events/#{key}")
|
|
99
98
|
end
|
|
100
99
|
|
|
101
|
-
|
|
102
100
|
def retrieve(key:)
|
|
103
101
|
response = @http_client.get("events/#{key}")
|
|
104
|
-
|
|
102
|
+
Event.new(response)
|
|
105
103
|
end
|
|
106
104
|
|
|
107
105
|
def list
|
|
108
|
-
Pagination::Cursor.new(
|
|
106
|
+
Pagination::Cursor.new(Event, 'events', @http_client)
|
|
109
107
|
end
|
|
110
108
|
|
|
111
109
|
def list_status_changes(key, object_id = nil)
|
|
112
110
|
if object_id != nil
|
|
113
111
|
status_changes_for_object key: key, object_id: object_id
|
|
114
112
|
else
|
|
115
|
-
Pagination::Cursor.new(
|
|
113
|
+
Pagination::Cursor.new(StatusChange, "/events/#{key}/status-changes", @http_client)
|
|
116
114
|
end
|
|
117
115
|
end
|
|
118
116
|
|
|
119
117
|
def status_changes_for_object(key:, object_id:)
|
|
120
|
-
Pagination::Cursor.new(
|
|
118
|
+
Pagination::Cursor.new(StatusChange, "/events/#{key}/objects/#{object_id}/status-changes", @http_client)
|
|
121
119
|
end
|
|
122
120
|
|
|
123
121
|
def mark_as_not_for_sale(key:, objects: nil, categories: nil)
|
|
@@ -157,12 +155,11 @@ module Seatsio
|
|
|
157
155
|
payload
|
|
158
156
|
end
|
|
159
157
|
|
|
160
|
-
def build_event_request(chart_key: nil, event_key: nil,
|
|
158
|
+
def build_event_request(chart_key: nil, event_key: nil, table_booking_config: nil, social_distancing_ruleset_key: nil)
|
|
161
159
|
result = {}
|
|
162
160
|
result["chartKey"] = chart_key if chart_key
|
|
163
161
|
result["eventKey"] = event_key if event_key
|
|
164
|
-
result["
|
|
165
|
-
result["tableBookingModes"] = table_booking_modes if table_booking_modes != nil
|
|
162
|
+
result["tableBookingConfig"] = table_booking_config_to_request(table_booking_config) if table_booking_config != nil
|
|
166
163
|
result["socialDistancingRulesetKey"] = social_distancing_ruleset_key if social_distancing_ruleset_key != nil
|
|
167
164
|
result
|
|
168
165
|
end
|
|
@@ -179,12 +176,18 @@ module Seatsio
|
|
|
179
176
|
params.each do |param|
|
|
180
177
|
r = {}
|
|
181
178
|
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
|
|
179
|
+
r["tableBookingConfig"] = table_booking_config_to_request(param[:table_booking_config]) if param[:table_booking_config] != nil
|
|
184
180
|
result.push(r)
|
|
185
181
|
end
|
|
186
182
|
result
|
|
187
183
|
end
|
|
188
184
|
|
|
185
|
+
def table_booking_config_to_request(table_booking_config)
|
|
186
|
+
result = {}
|
|
187
|
+
result["mode"] = table_booking_config.mode
|
|
188
|
+
result["tables"] = table_booking_config.tables if table_booking_config.tables != nil
|
|
189
|
+
result
|
|
190
|
+
end
|
|
191
|
+
|
|
189
192
|
end
|
|
190
193
|
end
|
|
@@ -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, ignore_channels, channel_keys)
|
|
1
|
+
def create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data, ignore_channels, channel_keys, ignore_social_distancing)
|
|
2
2
|
result = {}
|
|
3
3
|
result[:objects] = normalize(object_or_objects)
|
|
4
4
|
result[:status] = status
|
|
@@ -12,6 +12,7 @@ def create_change_object_status_request(object_or_objects, status, hold_token, o
|
|
|
12
12
|
result[:keepExtraData] = keep_extra_data if keep_extra_data != nil
|
|
13
13
|
result[:ignoreChannels] = ignore_channels if ignore_channels != nil
|
|
14
14
|
result[:channelKeys] = channel_keys if channel_keys != nil
|
|
15
|
+
result[:ignoreSocialDistancing] = ignore_social_distancing if ignore_social_distancing != nil
|
|
15
16
|
result
|
|
16
17
|
end
|
|
17
18
|
|
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.1.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-12-14 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|