seatsio 26.2.0 → 29.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 +1 -1
- data/lib/seatsio/charts.rb +12 -12
- data/lib/seatsio/domain.rb +78 -26
- data/lib/seatsio/event_reports.rb +31 -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: fcf524f68021a82f0ffd1fe6b3cd3ba9f0ab3db78ae014f0da0e73f1627bccd5
|
|
4
|
+
data.tar.gz: 5b5bce5ae300c40909cea6b116b3d6c7ac65037253ac66f57fc6ad0e017c1513
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 67a2f3b7610fae718e882c2742bd1310d47f61a84971b8990a70ccffd565351a8a9e9f739e965c6478bdbdd0d5b54bfd69176b65094e9372cac7bc8acf979ccc
|
|
7
|
+
data.tar.gz: '009503e48798bfa219cbc03832483b0fffdafa1bd087bfe226afb93f295c6e6326c80da15e243203e42b07fd68fcecd0125f4b3256ef16aab89d0db0fd0fcefc'
|
data/Gemfile.lock
CHANGED
|
@@ -28,7 +28,7 @@ module Seatsio
|
|
|
28
28
|
params = book_whole_tables.nil? ? {} : { bookWholeTables: book_whole_tables }
|
|
29
29
|
url = "reports/charts/#{chart_key}/#{report_type}"
|
|
30
30
|
body = @http_client.get(url, params)
|
|
31
|
-
|
|
31
|
+
ChartReport.new(body)
|
|
32
32
|
end
|
|
33
33
|
end
|
|
34
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
|
|
|
@@ -343,15 +383,15 @@ module Seatsio::Domain
|
|
|
343
383
|
|
|
344
384
|
class UsageDetails
|
|
345
385
|
|
|
346
|
-
attr_reader :
|
|
386
|
+
attr_reader :workspace
|
|
347
387
|
|
|
348
388
|
def initialize(data)
|
|
349
|
-
@
|
|
389
|
+
@workspace = data['workspace'] ? UsageWorkspace.new(data['workspace']) : nil
|
|
350
390
|
@usage_by_chart = data['usageByChart'].map { |usage| UsageByChart.new(usage) }
|
|
351
391
|
end
|
|
352
392
|
end
|
|
353
393
|
|
|
354
|
-
class
|
|
394
|
+
class UsageWorkspace
|
|
355
395
|
|
|
356
396
|
attr_reader :id
|
|
357
397
|
|
|
@@ -475,15 +515,16 @@ 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,
|
|
518
|
+
:disable_diagonal_seats_in_front_and_behind, :number_of_disabled_aisle_seats, :max_group_size, :max_occupancy_absolute,
|
|
479
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
|
-
fixed_group_layout
|
|
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
|
|
@@ -495,22 +536,33 @@ module Seatsio::Domain
|
|
|
495
536
|
@index = index
|
|
496
537
|
end
|
|
497
538
|
|
|
498
|
-
def self.fixed(name, disabled_seats
|
|
499
|
-
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)
|
|
500
541
|
end
|
|
501
542
|
|
|
502
|
-
def self.rule_based(name, number_of_disabled_seats_to_the_sides
|
|
503
|
-
max_group_size
|
|
504
|
-
disabled_seats
|
|
505
|
-
SocialDistancingRuleset.new(name,
|
|
506
|
-
|
|
507
|
-
|
|
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)
|
|
508
559
|
end
|
|
509
560
|
|
|
510
561
|
def == (other)
|
|
511
562
|
self.name == other.name &&
|
|
512
563
|
self.number_of_disabled_seats_to_the_sides == other.number_of_disabled_seats_to_the_sides &&
|
|
513
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 &&
|
|
514
566
|
self.number_of_disabled_aisle_seats == other.number_of_disabled_aisle_seats &&
|
|
515
567
|
self.max_group_size == other.max_group_size &&
|
|
516
568
|
self.max_occupancy_absolute == other.max_occupancy_absolute &&
|
|
@@ -15,26 +15,50 @@ module Seatsio
|
|
|
15
15
|
fetch_summary_report('byStatus', event_key)
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
+
def deep_summary_by_status(event_key)
|
|
19
|
+
fetch_deep_summary_report('byStatus', event_key)
|
|
20
|
+
end
|
|
21
|
+
|
|
18
22
|
def summary_by_category_key(event_key)
|
|
19
23
|
fetch_summary_report('byCategoryKey', event_key)
|
|
20
24
|
end
|
|
21
25
|
|
|
26
|
+
def deep_summary_by_category_key(event_key)
|
|
27
|
+
fetch_deep_summary_report('byCategoryKey', event_key)
|
|
28
|
+
end
|
|
29
|
+
|
|
22
30
|
def summary_by_category_label(event_key)
|
|
23
31
|
fetch_summary_report('byCategoryLabel', event_key)
|
|
24
32
|
end
|
|
25
33
|
|
|
34
|
+
def deep_summary_by_category_label(event_key)
|
|
35
|
+
fetch_deep_summary_report('byCategoryLabel', event_key)
|
|
36
|
+
end
|
|
37
|
+
|
|
26
38
|
def summary_by_section(event_key)
|
|
27
39
|
fetch_summary_report('bySection', event_key)
|
|
28
40
|
end
|
|
29
41
|
|
|
42
|
+
def deep_summary_by_section(event_key)
|
|
43
|
+
fetch_deep_summary_report('bySection', event_key)
|
|
44
|
+
end
|
|
45
|
+
|
|
30
46
|
def summary_by_selectability(event_key)
|
|
31
47
|
fetch_summary_report('bySelectability', event_key)
|
|
32
48
|
end
|
|
33
49
|
|
|
50
|
+
def deep_summary_by_selectability(event_key)
|
|
51
|
+
fetch_deep_summary_report('bySelectability', event_key)
|
|
52
|
+
end
|
|
53
|
+
|
|
34
54
|
def summary_by_channel(event_key)
|
|
35
55
|
fetch_summary_report('byChannel', event_key)
|
|
36
56
|
end
|
|
37
57
|
|
|
58
|
+
def deep_summary_by_channel(event_key)
|
|
59
|
+
fetch_deep_summary_report('byChannel', event_key)
|
|
60
|
+
end
|
|
61
|
+
|
|
38
62
|
def by_label(event_key, label = nil)
|
|
39
63
|
fetch_report('byLabel', event_key, label)
|
|
40
64
|
end
|
|
@@ -74,15 +98,20 @@ module Seatsio
|
|
|
74
98
|
@http_client.get(url)
|
|
75
99
|
end
|
|
76
100
|
|
|
101
|
+
def fetch_deep_summary_report(report_type, event_key)
|
|
102
|
+
url = "reports/events/#{event_key}/#{report_type}/summary/deep"
|
|
103
|
+
@http_client.get(url)
|
|
104
|
+
end
|
|
105
|
+
|
|
77
106
|
def fetch_report(report_type, event_key, report_filter = nil)
|
|
78
107
|
if report_filter
|
|
79
108
|
url = "reports/events/#{event_key}/#{report_type}/#{report_filter}"
|
|
80
109
|
body = @http_client.get(url)
|
|
81
|
-
|
|
110
|
+
EventReport.new(body[report_filter])
|
|
82
111
|
else
|
|
83
112
|
url = "reports/events/#{event_key}/#{report_type}"
|
|
84
113
|
body = @http_client.get(url)
|
|
85
|
-
|
|
114
|
+
EventReport.new(body)
|
|
86
115
|
end
|
|
87
116
|
end
|
|
88
117
|
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: 29.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-12-28 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|