seatsio 51.14.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: 87caf71b41f789fc39caede73a4530fe4f35002579d39665b63ab2fb82584a29
4
- data.tar.gz: 71ab7010918ff42f17ed5a524c32526470a13ae6d0b1ea465d7f17939d59f143
3
+ metadata.gz: 3d0e12bbcf4acc3e39862e05602a569497067a8749501d4453387d0d31d0cb8b
4
+ data.tar.gz: bcaaabc425d672dc7858312e39c8d1ed735098c21839b6616a48c8c964f67424
5
5
  SHA512:
6
- metadata.gz: fec5ee952fc46a7e15eb9b07afcc36ee1a551bb62170f1ea358f3ee0ee18ce16c196415c348a31fd8c4566cf0ba4cc0ed3ce6f85819e39af9af5ea9317f4f541
7
- data.tar.gz: 751c24d442631b8dbc959e6db9086d739eb4704e334d16ae06a7050dfb4b0281b36f2f2e90e91891a366dfdc01e3a3ddd8a62db8ab2c2c1582244fe79fc2a030
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.14.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,75 @@ 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)
174
+ end
175
+
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)
179
+ end
180
+
181
+ # @deprecated Use {#replace_for_sale_config} instead
182
+ def mark_as_for_sale(key:, objects: nil, area_places: nil, categories: nil)
183
+ replace_for_sale_config(key: key, for_sale: true, objects: objects, area_places: area_places, categories: categories)
156
184
  end
157
185
 
158
186
  def mark_everything_as_for_sale(key: nil)
159
187
  @http_client.post("events/#{key}/actions/mark-everything-as-for-sale")
160
188
  end
161
189
 
162
- 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)
190
+ def move_to_new_chart_copy(event_key)
191
+ response = @http_client.post("events/#{event_key}/actions/move-to-new-chart-copy")
192
+ Event.from_json(response)
193
+ end
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
165
222
  end
166
223
 
167
224
  private
@@ -174,6 +231,20 @@ module Seatsio
174
231
  request
175
232
  end
176
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
+
177
248
  def build_extra_data_request(extra_data)
178
249
  payload = {}
179
250
  payload[:extraData] = extra_data if extra_data
@@ -186,12 +257,12 @@ module Seatsio
186
257
  result["eventKey"] = event_key if event_key
187
258
  result["name"] = name if name
188
259
  result["date"] = date.iso8601 if date
189
- 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
190
261
  result["objectCategories"] = object_categories if object_categories != nil
191
- result["categories"] = categories_to_request(categories) if categories != nil
262
+ result["categories"] = EventsClient::categories_to_request(categories) if categories != nil
192
263
  result["channels"] = ChannelsClient::channels_to_request(channels) if channels != nil
193
264
  result["isInThePast"] = is_in_the_past if is_in_the_past != nil
194
- 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
195
266
  result
196
267
  end
197
268
 
@@ -209,44 +280,15 @@ module Seatsio
209
280
  r["eventKey"] = param[:event_key] if param[:event_key] != nil
210
281
  r["name"] = param[:name] if param[:name]
211
282
  r["date"] = param[:date].iso8601 if param[:date]
212
- 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
213
284
  r["objectCategories"] = param[:object_categories] if param[:object_categories] != nil
214
- r["categories"] = categories_to_request(param[:categories]) if param[:categories] != nil
285
+ r["categories"] = EventsClient::categories_to_request(param[:categories]) if param[:categories] != nil
215
286
  r["channels"] = ChannelsClient::channels_to_request(param[:channels]) if param[:channels] != nil
216
- r["forSaleConfig"] = for_sale_config_to_request(param[:for_sale_config]) if param[:for_sale_config] != nil
217
- result.push(r)
218
- end
219
- result
220
- end
221
-
222
- def table_booking_config_to_request(table_booking_config)
223
- result = {}
224
- result["mode"] = table_booking_config.mode
225
- result["tables"] = table_booking_config.tables if table_booking_config.tables != nil
226
- result
227
- end
228
-
229
- def categories_to_request(categories)
230
- result = []
231
- categories.each do |category|
232
- r = {}
233
- r["key"] = category.key if category.key != nil
234
- r["label"] = category.label if category.label != nil
235
- r["color"] = category.color if category.color != nil
236
- 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
237
288
  result.push(r)
238
289
  end
239
290
  result
240
291
  end
241
292
 
242
- def for_sale_config_to_request(for_sale_config)
243
- result = {}
244
- result["forSale"] = for_sale_config.for_sale
245
- result["objects"] = for_sale_config.objects if for_sale_config.objects != nil
246
- result["areaPlaces"] = for_sale_config.area_places if for_sale_config.area_places != nil
247
- result["categories"] = for_sale_config.categories if for_sale_config.categories != nil
248
- result
249
- end
250
-
251
293
  end
252
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.14.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.14.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-03 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