seatsio 51.15.0 → 52.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 901afe13f3641a0cee35f2182d1edfeabd22da9b75ed6017a45007d0aea07144
4
- data.tar.gz: c5c50a8e96c6e90cdbc35aaa65cb7359a223bd20706bcd849c4890a441613a9a
3
+ metadata.gz: 3d0e12bbcf4acc3e39862e05602a569497067a8749501d4453387d0d31d0cb8b
4
+ data.tar.gz: bcaaabc425d672dc7858312e39c8d1ed735098c21839b6616a48c8c964f67424
5
5
  SHA512:
6
- metadata.gz: 4d8f8a1d9380311cbadcf58f524b5c93a3c6a938f2ba1bd763a97d30219906aeb36575ee2b78ed260f472f47f621132a1c30b2d506ccf158282c357783538c4b
7
- data.tar.gz: 6dc6ca0c362fc4f8c21e74aa74a8ae2607ba4f48c82bb9995e893c06ec02028dc5363d91b3ce271b113ac609e0b3be40c54f9cc70cfa60704e2c05fcf0dabb45
6
+ metadata.gz: a9bbda7cc5fa1a0e169d3bed7167b96f1de7f14c870ad4279af378edd976c5bf3d1f090cda7d3de549b1f098cc638dbd683cd8400180e975aa71e198c98ee2f9
7
+ data.tar.gz: 4f2da84d18d0763433f1cf784895d819a7d20587dfa9483fd5fa7baa37b47273a1f865dcad79b9a9e1e63b570faceeaf25dee2a6c0effcf185f5c0f9777eb824
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- seatsio (51.15.0)
4
+ seatsio (52.0.0)
5
5
  base64 (>= 0.2, < 0.4)
6
6
  rest-client (~> 2.0, >= 2.0.2)
7
7
 
@@ -11,12 +11,12 @@ GEM
11
11
  addressable (2.8.7)
12
12
  public_suffix (>= 2.0.2, < 7.0)
13
13
  base64 (0.3.0)
14
- bigdecimal (3.1.9)
15
- crack (1.0.0)
14
+ bigdecimal (3.3.1)
15
+ crack (1.0.1)
16
16
  bigdecimal
17
17
  rexml
18
18
  domain_name (0.6.20240107)
19
- hashdiff (1.1.2)
19
+ hashdiff (1.2.1)
20
20
  http-accept (1.7.0)
21
21
  http-cookie (1.0.8)
22
22
  domain_name (~> 0.5)
@@ -25,20 +25,20 @@ GEM
25
25
  logger
26
26
  mime-types-data (~> 3.2015)
27
27
  mime-types-data (3.2025.0402)
28
- minitest (5.25.5)
28
+ minitest (5.26.0)
29
29
  netrc (0.11.0)
30
30
  parallel (1.27.0)
31
- parallel_tests (5.4.0)
31
+ parallel_tests (5.5.0)
32
32
  parallel
33
33
  public_suffix (6.0.2)
34
- rake (13.3.0)
34
+ rake (13.3.1)
35
35
  rest-client (2.1.0)
36
36
  http-accept (>= 1.7.0, < 2.0)
37
37
  http-cookie (>= 1.0.2, < 2.0)
38
38
  mime-types (>= 1.16, < 4.0)
39
39
  netrc (~> 0.8)
40
- rexml (3.4.2)
41
- webmock (3.25.1)
40
+ rexml (3.4.4)
41
+ webmock (3.26.1)
42
42
  addressable (>= 2.8.0)
43
43
  crack (>= 0.3.2)
44
44
  hashdiff (>= 0.4.0, < 2.0.0)
@@ -49,7 +49,7 @@ PLATFORMS
49
49
  DEPENDENCIES
50
50
  bundler (~> 2.2)
51
51
  minitest (~> 5.0)
52
- parallel_tests (~> 5.4.0)
52
+ parallel_tests (~> 5.5.0)
53
53
  rake (~> 13.0)
54
54
  seatsio!
55
55
  webmock (~> 3.4, >= 3.4.2)
@@ -101,6 +101,32 @@ module Seatsio
101
101
  end
102
102
  end
103
103
 
104
+ class EditForSaleConfigResult
105
+ attr_reader :for_sale_config, :rate_limit_info
106
+
107
+ def initialize(for_sale_config, rate_limit_info)
108
+ @for_sale_config = for_sale_config
109
+ @rate_limit_info = rate_limit_info
110
+ end
111
+
112
+ def self.from_json(data)
113
+ EditForSaleConfigResult.new(ForSaleConfig.from_json(data['forSaleConfig']), ForSaleRateLimitInfo.from_json(data['rateLimitInfo']))
114
+ end
115
+ end
116
+
117
+ class ForSaleRateLimitInfo
118
+ attr_reader :rate_limit_remaining_calls, :rate_limit_reset_date
119
+
120
+ def initialize(rate_limit_remaining_calls, rate_limit_reset_date)
121
+ @rate_limit_remaining_calls = rate_limit_remaining_calls
122
+ @rate_limit_reset_date = rate_limit_reset_date
123
+ end
124
+
125
+ def self.from_json(data)
126
+ ForSaleRateLimitInfo.new(data['rateLimitRemainingCalls'], parse_date(data['rateLimitResetDate']))
127
+ end
128
+ end
129
+
104
130
  class Category
105
131
 
106
132
  attr_reader :key, :label, :color, :accessible
@@ -246,12 +272,13 @@ module Seatsio
246
272
 
247
273
  class Season < Event
248
274
 
249
- attr_accessor :partial_season_keys, :events
275
+ attr_accessor :partial_season_keys, :events, :for_sale_propagated
250
276
 
251
277
  def initialize(data)
252
278
  super(data)
253
279
  @partial_season_keys = data['partialSeasonKeys']
254
280
  @events = data['events'] ? Event.create_list(data['events']) : nil
281
+ @for_sale_propagated = data['forSalePropagated']
255
282
  end
256
283
 
257
284
  def is_season
@@ -150,18 +150,41 @@ module Seatsio
150
150
  Pagination::Cursor.new(StatusChange, "events/#{key}/objects/#{object_id}/status-changes", @http_client)
151
151
  end
152
152
 
153
- def mark_as_not_for_sale(key:, objects: nil, area_places: nil, categories: nil)
153
+ def edit_for_sale_config(key:, for_sale: nil, not_for_sale: nil)
154
+ request = {}
155
+ request[:forSale] = for_sale if for_sale
156
+ request[:notForSale] = not_for_sale if not_for_sale
157
+ response = @http_client.post("events/#{key}/actions/edit-for-sale-config", request)
158
+ EditForSaleConfigResult.from_json(response)
159
+ end
160
+
161
+ def edit_for_sale_config_for_events(events)
162
+ request = build_parameters_for_edit_for_sale_config_for_events(events)
163
+ response = @http_client.post("events/actions/edit-for-sale-config", request)
164
+ response.each do |key, value|
165
+ response[key] = EditForSaleConfigResult.from_json(value)
166
+ end
167
+ response
168
+ end
169
+
170
+ def replace_for_sale_config(key:, for_sale:, objects: nil, area_places: nil, categories: nil)
171
+ action = for_sale ? "mark-as-for-sale" : "mark-as-not-for-sale"
154
172
  request = build_parameters_for_mark_as_sale objects, area_places, categories
155
- @http_client.post("events/#{key}/actions/mark-as-not-for-sale", request)
173
+ @http_client.post("events/#{key}/actions/#{action}", request)
156
174
  end
157
175
 
158
- def mark_everything_as_for_sale(key: nil)
159
- @http_client.post("events/#{key}/actions/mark-everything-as-for-sale")
176
+ # @deprecated Use {#replace_for_sale_config} instead
177
+ def mark_as_not_for_sale(key:, objects: nil, area_places: nil, categories: nil)
178
+ replace_for_sale_config(key: key, for_sale: false, objects: objects, area_places: area_places, categories: categories)
160
179
  end
161
180
 
181
+ # @deprecated Use {#replace_for_sale_config} instead
162
182
  def mark_as_for_sale(key:, objects: nil, area_places: nil, categories: nil)
163
- request = build_parameters_for_mark_as_sale objects, area_places, categories
164
- @http_client.post("events/#{key}/actions/mark-as-for-sale", request)
183
+ replace_for_sale_config(key: key, for_sale: true, objects: objects, area_places: area_places, categories: categories)
184
+ end
185
+
186
+ def mark_everything_as_for_sale(key: nil)
187
+ @http_client.post("events/#{key}/actions/mark-everything-as-for-sale")
165
188
  end
166
189
 
167
190
  def move_to_new_chart_copy(event_key)
@@ -169,6 +192,35 @@ module Seatsio
169
192
  Event.from_json(response)
170
193
  end
171
194
 
195
+ def self.table_booking_config_to_request(table_booking_config)
196
+ result = {}
197
+ result["mode"] = table_booking_config.mode
198
+ result["tables"] = table_booking_config.tables if table_booking_config.tables != nil
199
+ result
200
+ end
201
+
202
+ def self.categories_to_request(categories)
203
+ result = []
204
+ categories.each do |category|
205
+ r = {}
206
+ r["key"] = category.key if category.key != nil
207
+ r["label"] = category.label if category.label != nil
208
+ r["color"] = category.color if category.color != nil
209
+ r["accessible"] = category.accessible if category.accessible != nil
210
+ result.push(r)
211
+ end
212
+ result
213
+ end
214
+
215
+ def self.for_sale_config_to_request(for_sale_config)
216
+ result = {}
217
+ result["forSale"] = for_sale_config.for_sale
218
+ result["objects"] = for_sale_config.objects if for_sale_config.objects != nil
219
+ result["areaPlaces"] = for_sale_config.area_places if for_sale_config.area_places != nil
220
+ result["categories"] = for_sale_config.categories if for_sale_config.categories != nil
221
+ result
222
+ end
223
+
172
224
  private
173
225
 
174
226
  def build_parameters_for_mark_as_sale(objects, area_places, categories)
@@ -179,6 +231,20 @@ module Seatsio
179
231
  request
180
232
  end
181
233
 
234
+ def build_parameters_for_edit_for_sale_config_for_events(events)
235
+ request = {}
236
+ request[:events] = {}
237
+
238
+ events.each do |event|
239
+ event_request = {}
240
+ event_request[:forSale] = event[1][:for_sale] if event[1][:for_sale]
241
+ event_request[:notForSale] = event[1][:not_for_sale] if event[1][:not_for_sale]
242
+ request[:events][event[0]] = event_request
243
+ end
244
+
245
+ request
246
+ end
247
+
182
248
  def build_extra_data_request(extra_data)
183
249
  payload = {}
184
250
  payload[:extraData] = extra_data if extra_data
@@ -191,12 +257,12 @@ module Seatsio
191
257
  result["eventKey"] = event_key if event_key
192
258
  result["name"] = name if name
193
259
  result["date"] = date.iso8601 if date
194
- result["tableBookingConfig"] = table_booking_config_to_request(table_booking_config) if table_booking_config != nil
260
+ result["tableBookingConfig"] = EventsClient::table_booking_config_to_request(table_booking_config) if table_booking_config != nil
195
261
  result["objectCategories"] = object_categories if object_categories != nil
196
- result["categories"] = categories_to_request(categories) if categories != nil
262
+ result["categories"] = EventsClient::categories_to_request(categories) if categories != nil
197
263
  result["channels"] = ChannelsClient::channels_to_request(channels) if channels != nil
198
264
  result["isInThePast"] = is_in_the_past if is_in_the_past != nil
199
- result["forSaleConfig"] = for_sale_config_to_request(for_sale_config) if for_sale_config != nil
265
+ result["forSaleConfig"] = EventsClient::for_sale_config_to_request(for_sale_config) if for_sale_config != nil
200
266
  result
201
267
  end
202
268
 
@@ -214,44 +280,15 @@ module Seatsio
214
280
  r["eventKey"] = param[:event_key] if param[:event_key] != nil
215
281
  r["name"] = param[:name] if param[:name]
216
282
  r["date"] = param[:date].iso8601 if param[:date]
217
- r["tableBookingConfig"] = table_booking_config_to_request(param[:table_booking_config]) if param[:table_booking_config] != nil
283
+ r["tableBookingConfig"] = EventsClient::table_booking_config_to_request(param[:table_booking_config]) if param[:table_booking_config] != nil
218
284
  r["objectCategories"] = param[:object_categories] if param[:object_categories] != nil
219
- r["categories"] = categories_to_request(param[:categories]) if param[:categories] != nil
285
+ r["categories"] = EventsClient::categories_to_request(param[:categories]) if param[:categories] != nil
220
286
  r["channels"] = ChannelsClient::channels_to_request(param[:channels]) if param[:channels] != nil
221
- r["forSaleConfig"] = for_sale_config_to_request(param[:for_sale_config]) if param[:for_sale_config] != nil
222
- result.push(r)
223
- end
224
- result
225
- end
226
-
227
- def table_booking_config_to_request(table_booking_config)
228
- result = {}
229
- result["mode"] = table_booking_config.mode
230
- result["tables"] = table_booking_config.tables if table_booking_config.tables != nil
231
- result
232
- end
233
-
234
- def categories_to_request(categories)
235
- result = []
236
- categories.each do |category|
237
- r = {}
238
- r["key"] = category.key if category.key != nil
239
- r["label"] = category.label if category.label != nil
240
- r["color"] = category.color if category.color != nil
241
- r["accessible"] = category.accessible if category.accessible != nil
287
+ r["forSaleConfig"] = EventsClient::for_sale_config_to_request(param[:for_sale_config]) if param[:for_sale_config] != nil
242
288
  result.push(r)
243
289
  end
244
290
  result
245
291
  end
246
292
 
247
- def for_sale_config_to_request(for_sale_config)
248
- result = {}
249
- result["forSale"] = for_sale_config.for_sale
250
- result["objects"] = for_sale_config.objects if for_sale_config.objects != nil
251
- result["areaPlaces"] = for_sale_config.area_places if for_sale_config.area_places != nil
252
- result["categories"] = for_sale_config.categories if for_sale_config.categories != nil
253
- result
254
- end
255
-
256
293
  end
257
294
  end
@@ -14,12 +14,18 @@ module Seatsio
14
14
  end
15
15
 
16
16
  def create(chart_key:, key: nil, name: nil, number_of_events: nil, event_keys: nil,
17
- table_booking_config: nil, channels: nil, for_sale_config: nil)
18
- request = build_create_season_request(chart_key, key, name, number_of_events, event_keys, table_booking_config, channels, for_sale_config)
17
+ table_booking_config: nil, object_categories: nil, categories: nil, channels: nil,
18
+ for_sale_config: nil, for_sale_propagated: nil)
19
+ request = build_create_season_request(chart_key, key, name, number_of_events, event_keys, table_booking_config, object_categories, categories, channels, for_sale_config, for_sale_propagated)
19
20
  response = @http_client.post('seasons', request)
20
21
  Season.new(response)
21
22
  end
22
23
 
24
+ def update(key:, event_key: nil, name: nil, table_booking_config: nil, object_categories: nil, categories: nil, for_sale_propagated: nil)
25
+ payload = build_update_season_request(event_key, name, table_booking_config, object_categories, categories, for_sale_propagated)
26
+ @http_client.post("events/#{key}", payload)
27
+ end
28
+
23
29
  def create_partial_season(top_level_season_key:, partial_season_key: nil, name: nil, event_keys: nil)
24
30
  request = {}
25
31
  request['key'] = partial_season_key if partial_season_key
@@ -55,34 +61,31 @@ module Seatsio
55
61
 
56
62
  private
57
63
 
58
- def build_create_season_request(chart_key, key, name, number_of_events, event_keys, table_booking_config, channels, for_sale_config)
64
+ def build_create_season_request(chart_key, key, name, number_of_events, event_keys, table_booking_config, object_categories, categories, channels, for_sale_config, for_sale_propagated)
59
65
  request = {}
60
66
  request['chartKey'] = chart_key if chart_key
61
67
  request['key'] = key if key
62
68
  request['name'] = name if name
63
69
  request['numberOfEvents'] = number_of_events if number_of_events
64
70
  request['eventKeys'] = event_keys if event_keys
65
- request['tableBookingConfig'] = table_booking_config_to_request(table_booking_config) if table_booking_config != nil
71
+ request['tableBookingConfig'] = EventsClient::table_booking_config_to_request(table_booking_config) if table_booking_config != nil
72
+ request["objectCategories"] = object_categories if object_categories != nil
73
+ request["categories"] = EventsClient::categories_to_request(categories) if categories != nil
66
74
  request['channels'] = ChannelsClient::channels_to_request(channels) if channels != nil
67
- request['forSaleConfig'] = for_sale_config_to_request(for_sale_config) if for_sale_config != nil
75
+ request['forSaleConfig'] = EventsClient::for_sale_config_to_request(for_sale_config) if for_sale_config != nil
76
+ request['forSalePropagated'] = for_sale_propagated if for_sale_propagated != nil
68
77
  request
69
78
  end
70
79
 
71
- def table_booking_config_to_request(table_booking_config)
80
+ def build_update_season_request(key, name, table_booking_config, object_categories, categories, for_sale_propagated)
72
81
  request = {}
73
- request['mode'] = table_booking_config.mode
74
- request['tables'] = table_booking_config.tables if table_booking_config.tables != nil
82
+ request['eventKey'] = key if key
83
+ request['name'] = name if name
84
+ request['tableBookingConfig'] = EventsClient::table_booking_config_to_request(table_booking_config) if table_booking_config != nil
85
+ request["objectCategories"] = object_categories if object_categories != nil
86
+ request["categories"] = EventsClient::categories_to_request(categories) if categories != nil
87
+ request['forSalePropagated'] = for_sale_propagated if for_sale_propagated != nil
75
88
  request
76
89
  end
77
-
78
- def for_sale_config_to_request(for_sale_config)
79
- result = {}
80
- result["forSale"] = for_sale_config.for_sale
81
- result["objects"] = for_sale_config.objects if for_sale_config.objects != nil
82
- result["areaPlaces"] = for_sale_config.area_places if for_sale_config.area_places != nil
83
- result["categories"] = for_sale_config.categories if for_sale_config.categories != nil
84
- result
85
- end
86
-
87
90
  end
88
91
  end
@@ -1,3 +1,3 @@
1
1
  module Seatsio
2
- VERSION = "51.15.0"
2
+ VERSION = "52.0.0"
3
3
  end
data/seatsio.gemspec CHANGED
@@ -27,5 +27,5 @@ Gem::Specification.new do |spec|
27
27
  spec.add_development_dependency "rake", "~> 13.0"
28
28
  spec.add_development_dependency "minitest", "~> 5.0"
29
29
  spec.add_development_dependency 'webmock', '~> 3.4', '>= 3.4.2'
30
- spec.add_development_dependency 'parallel_tests', '~> 5.4.0'
30
+ spec.add_development_dependency 'parallel_tests', '~> 5.5.0'
31
31
  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: 51.15.0
4
+ version: 52.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: 2025-10-21 00:00:00.000000000 Z
11
+ date: 2025-11-10 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rest-client
@@ -118,14 +118,14 @@ dependencies:
118
118
  requirements:
119
119
  - - "~>"
120
120
  - !ruby/object:Gem::Version
121
- version: 5.4.0
121
+ version: 5.5.0
122
122
  type: :development
123
123
  prerelease: false
124
124
  version_requirements: !ruby/object:Gem::Requirement
125
125
  requirements:
126
126
  - - "~>"
127
127
  - !ruby/object:Gem::Version
128
- version: 5.4.0
128
+ version: 5.5.0
129
129
  description: This is the official Ruby client library for the Seats.io V2 REST API
130
130
  email:
131
131
  - nahuel@seats.io