seatsio 22 → 23.7.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: ec1d4c214dfcab163284ddb2d393ec973be88caaca8d597225125d657b24b037
4
- data.tar.gz: 16d74ad7f467a299e1a9178c778fc82cc58d7a8256da1f64ee8caaa38acdc766
3
+ metadata.gz: 3e0a832bc8680b57d66e65becb775ddfdd971d08be16a8161b79bf0a217543db
4
+ data.tar.gz: c40d677bd0dea2bde3c492408c09a2cc79f3fcb8518d439c68f17f65f1c3c419
5
5
  SHA512:
6
- metadata.gz: 8cce5386a6d962c113a0a7d3899e2978422635be1631a89d5ac45bdc79f116386beafa504744a1cfde8be1eb08710d28cebe195ebe021e1268fa7ef8a74feb1a
7
- data.tar.gz: e249ddad6f59c000c8e9304df61d157f89250d6ced614520694c14ad9e97c0670a92f7934a5afbfeff8d8d990bf454e594a1e9d51f35e8e4cd19149eb34f39c5
6
+ metadata.gz: 48d9cc13e42919696a9bcf58b5d0c05016049e3930db5f0a3499f42bc86d2a6400a85da2d0e761883e507b5623a8e8b87befe1c81217865c575a446b567072b8
7
+ data.tar.gz: 68da6c6511e13ae20d77471c67da82d7d962db355852c91a5d9342b24a885c9f67ae98a2a70adbd68b86eb5c4822e0d4e22f89c649100426d9f9396b087b8a78
@@ -0,0 +1 @@
1
+ 2.3.0
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- seatsio (22)
4
+ seatsio (23.7.0)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
@@ -21,7 +21,7 @@ GEM
21
21
  minitest (5.11.3)
22
22
  netrc (0.11.0)
23
23
  public_suffix (3.1.0)
24
- rake (10.5.0)
24
+ rake (13.0.1)
25
25
  rest-client (2.0.2)
26
26
  http-cookie (>= 1.0.2, < 2.0)
27
27
  mime-types (>= 1.16, < 4.0)
@@ -41,10 +41,10 @@ PLATFORMS
41
41
  DEPENDENCIES
42
42
  bundler (~> 1.16)
43
43
  minitest (~> 5.0)
44
- rake (~> 10.0)
44
+ rake (~> 13.0)
45
45
  rest-client (~> 2.0, >= 2.0.2)
46
46
  seatsio!
47
47
  webmock (~> 3.4, >= 3.4.2)
48
48
 
49
49
  BUNDLED WITH
50
- 1.17.3
50
+ 1.17.2
data/README.md CHANGED
@@ -4,12 +4,9 @@
4
4
 
5
5
  This is the official Ruby client library for the [Seats.io V2 REST API](https://docs.seats.io/docs/api-overview), supporting Ruby 2.2.0+
6
6
 
7
+ ## Versioning
7
8
 
8
- # Versioning
9
-
10
- seatsio-ruby only uses major version numbers: v5, v6, v7 etc. Each release - backwards compatible or not - receives a new major version number.
11
-
12
- The reason: we want to play safe and assume that each release might break backwards compatibility.
9
+ seatsio-ruby follows semver since v23.3.0.
13
10
 
14
11
  ## Examples
15
12
 
@@ -17,7 +14,7 @@ The reason: we want to play safe and assume that each release might break backwa
17
14
 
18
15
  ```ruby
19
16
  require('seatsio')
20
- client = Seatsio::Client.new("my-secret-key") # can be found on https://app.seats.io/settings
17
+ client = Seatsio::Client.new("my-workspace-secret-key") # can be found on https://app.seats.io/workspace-settings
21
18
  chart = client.charts.create
22
19
  event = client.events.create key: chart.key
23
20
  ```
@@ -26,7 +23,7 @@ event = client.events.create key: chart.key
26
23
 
27
24
  ```ruby
28
25
  require('seatsio')
29
- client = Seatsio::Client.new("my-secret-key")
26
+ client = Seatsio::Client.new("my-workspace-secret-key")
30
27
  client.events.book(event.key, ["A-1", "A-2"])
31
28
  ```
32
29
 
@@ -34,7 +31,7 @@ client.events.book(event.key, ["A-1", "A-2"])
34
31
 
35
32
  ```ruby
36
33
  require('seatsio')
37
- client = Seatsio::Client.new("my-secret-key")
34
+ client = Seatsio::Client.new("my-workspace-secret-key")
38
35
  client.events.release(event.key, ["A-1", "A-2"])
39
36
  ```
40
37
 
@@ -42,7 +39,7 @@ client.events.release(event.key, ["A-1", "A-2"])
42
39
 
43
40
  ```ruby
44
41
  require('seatsio')
45
- client = Seatsio::Client.new("my-secret-key")
42
+ client = Seatsio::Client.new("my-workspace-secret-key")
46
43
  client.events.book(event.key, ["A-1", "A-2"], "a-hold-token")
47
44
  ```
48
45
 
@@ -50,7 +47,7 @@ client.events.book(event.key, ["A-1", "A-2"], "a-hold-token")
50
47
 
51
48
  ```ruby
52
49
  require('seatsio')
53
- client = Seatsio::Client.new("my-secret-key")
50
+ client = Seatsio::Client.new("my-workspace-secret-key")
54
51
  client.events.change_object_status("<EVENT KEY>", ["A-1", "A-2"], "my-custom-status")
55
52
  ```
56
53
 
@@ -58,7 +55,7 @@ client.events.change_object_status("", ["A-1", "A-2"], "my-custom-sta
58
55
 
59
56
  ```ruby
60
57
  require('seatsio')
61
- client = Seatsio::Client.new("my-secret-key")
58
+ client = Seatsio::Client.new("my-workspace-secret-key")
62
59
  charts = client.charts.list
63
60
  charts.each do |chart|
64
61
  puts chart.key
data/Rakefile CHANGED
@@ -8,4 +8,11 @@ Rake::TestTask.new(:test) do |t|
8
8
  t.warning = false
9
9
  end
10
10
 
11
+ Rake::TestTask.new(:singletest) do |t|
12
+ t.libs << "test"
13
+ t.libs << "lib"
14
+ t.test_files = FileList["test/**/update_channels_test.rb", "test/**/assign_objects_to_channels_test.rb"]
15
+ t.warning = false
16
+ end
17
+
11
18
  task :default => :test
@@ -1,6 +1,5 @@
1
1
  require 'seatsio/version'
2
2
  require 'seatsio/charts'
3
- require 'seatsio/accounts'
4
3
  require 'seatsio/subaccounts'
5
4
  require 'seatsio/workspaces'
6
5
  require 'seatsio/events'
@@ -12,12 +11,11 @@ require 'seatsio/usage_reports'
12
11
  module Seatsio
13
12
  # Main Seatsio Class
14
13
  class Client
15
- attr_reader :charts, :accounts, :subaccounts, :workspaces, :events,
14
+ attr_reader :charts, :subaccounts, :workspaces, :events,
16
15
  :hold_tokens, :chart_reports, :event_reports, :usage_reports
17
16
 
18
17
  def initialize(secret_key, workspace_key = nil, base_url = 'https://api.seatsio.net')
19
18
  @charts = ChartsClient.new(secret_key, workspace_key, base_url)
20
- @accounts = AccountsClient.new(secret_key, workspace_key, base_url)
21
19
  @subaccounts = SubaccountsClient.new(secret_key, workspace_key, base_url)
22
20
  @workspaces = WorkspacesClient.new(secret_key, base_url)
23
21
  @events = EventsClient.new(secret_key, workspace_key, base_url)
@@ -71,10 +71,31 @@ module Seatsio::Domain
71
71
  end
72
72
  end
73
73
 
74
+ class Channel
75
+ attr_reader :key, :name, :color, :index, :objects
76
+
77
+ def initialize(key, name, color, index, objects)
78
+ @key = key
79
+ @name = name
80
+ @color = color
81
+ @index = index
82
+ @objects = objects
83
+ end
84
+
85
+ def == (other)
86
+ self.key == other.key &&
87
+ self.name == other.name &&
88
+ self.color == other.color &&
89
+ self.index == other.index &&
90
+ self.objects == other.objects
91
+ end
92
+
93
+ end
94
+
74
95
  class Event
75
96
 
76
97
  attr_accessor :id, :key, :chart_key, :book_whole_tables, :supports_best_available,
77
- :table_booking_modes, :for_sale_config, :created_on, :updated_on
98
+ :table_booking_modes, :for_sale_config, :created_on, :updated_on, :channels
78
99
 
79
100
  def initialize(data)
80
101
  @id = data['id']
@@ -86,6 +107,9 @@ module Seatsio::Domain
86
107
  @for_sale_config = ForSaleConfig.new(data['forSaleConfig']) if data['forSaleConfig']
87
108
  @created_on = parse_date(data['createdOn'])
88
109
  @updated_on = parse_date(data['updatedOn'])
110
+ @channels = data['channels'].map {
111
+ |d| Channel.new(d['key'], d['name'], d['color'], d['index'], d['objects'])
112
+ } if data['channels']
89
113
  end
90
114
 
91
115
  def self.create_list(list = [])
@@ -118,48 +142,16 @@ module Seatsio::Domain
118
142
  end
119
143
  end
120
144
 
121
- class ChartValidationSettings
122
- attr_reader :validate_duplicate_labels, :validate_objects_without_categories,
123
- :validate_unlabeled_objects
124
-
125
- def initialize(data)
126
- @validate_duplicate_labels = data['VALIDATE_DUPLICATE_LABELS']
127
- @validate_objects_without_categories = data['VALIDATE_OBJECTS_WITHOUT_CATEGORIES']
128
- @validate_unlabeled_objects = data['VALIDATE_UNLABELED_OBJECTS']
129
- end
130
- end
131
-
132
- class AccountSettings
133
- attr_reader :draft_chart_drawings_enabled, :hold_on_select_for_gas, :chart_validation
134
-
135
- def initialize(data)
136
- @draft_chart_drawings_enabled = data['draftChartDrawingsEnabled']
137
- @hold_on_select_for_gas = data['holdOnSelectForGAs']
138
- @chart_validation = ChartValidationSettings.new(data['chartValidation'])
139
- end
140
- end
141
-
142
- class Account
143
- attr_reader :id, :secret_key, :designer_key, :name,
144
- :email, :active, :settings
145
+ class Subaccount
146
+ attr_reader :id, :secret_key, :designer_key, :public_key, :name, :active
145
147
 
146
148
  def initialize(data)
147
149
  @id = data['id']
150
+ @public_key = data['publicKey']
148
151
  @secret_key = data['secretKey']
149
152
  @designer_key = data['designerKey']
150
153
  @name = data['name']
151
- @email = data['email']
152
154
  @active = data['active']
153
- @settings = AccountSettings.new(data['settings']) if data['settings'] != nil
154
- end
155
- end
156
-
157
- class Subaccount < Account
158
- attr_reader :public_key, :workspace
159
-
160
- def initialize(data)
161
- super
162
- @public_key = data['publicKey']
163
155
  end
164
156
  end
165
157
 
@@ -203,6 +195,15 @@ module Seatsio::Domain
203
195
  end
204
196
  end
205
197
 
198
+ class ChangeObjectStatusInBatchResult
199
+
200
+ attr_reader :results
201
+
202
+ def initialize(data)
203
+ @results = data['results'].map { |r| ChangeObjectStatusResult.new(r) }
204
+ end
205
+ end
206
+
206
207
  class HoldToken
207
208
 
208
209
  attr_reader :hold_token, :expires_at, :expires_in_seconds, :workspace_key
@@ -228,7 +229,8 @@ module Seatsio::Domain
228
229
 
229
230
  class ChartReportItem
230
231
 
231
- attr_reader :label, :labels, :category_key, :category_label, :section, :entrance, :capacity, :object_type
232
+ attr_reader :label, :labels, :category_key, :category_label, :section, :entrance, :capacity, :object_type,
233
+ :left_neighbour, :right_neighbour
232
234
 
233
235
  def initialize(data)
234
236
  @label = data['label']
@@ -239,6 +241,8 @@ module Seatsio::Domain
239
241
  @entrance = data['entrance']
240
242
  @capacity = data['capacity']
241
243
  @object_type = data['objectType']
244
+ @left_neighbour = data['leftNeighbour']
245
+ @right_neighbour = data['rightNeighbour']
242
246
  end
243
247
  end
244
248
 
@@ -287,7 +291,9 @@ module Seatsio::Domain
287
291
  class EventReportItem
288
292
  attr_reader :labels, :label, :order_id, :extra_data, :capacity, :status,
289
293
  :category_key, :entrance, :object_type, :hold_token, :category_label,
290
- :ticket_type, :num_booked, :num_free, :num_held, :for_sale, :section
294
+ :ticket_type, :num_booked, :num_free, :num_held, :for_sale, :section,
295
+ :is_accessible, :is_companion_seat, :has_restricted_view, :displayed_object_type,
296
+ :left_neighbour, :right_neighbour
291
297
 
292
298
  def initialize(data)
293
299
  @status = data['status']
@@ -307,6 +313,12 @@ module Seatsio::Domain
307
313
  @capacity = data['capacity']
308
314
  @object_type = data['objectType']
309
315
  @extra_data = data['extraData']
316
+ @is_accessible = data['isAccessible']
317
+ @is_companion_seat = data['isCompanionSeat']
318
+ @has_restricted_view = data['hasRestrictedView']
319
+ @displayed_object_type = data['displayedObjectType']
320
+ @left_neighbour = data['leftNeighbour']
321
+ @right_neighbour = data['rightNeighbour']
310
322
  end
311
323
  end
312
324
 
@@ -338,7 +350,7 @@ module Seatsio::Domain
338
350
 
339
351
  def initialize(data)
340
352
  @subaccount = data['subaccount'] ? UsageSubaccount.new(data['subaccount']) : nil
341
- @usage_by_chart = data['usageByChart'].map {|usage| UsageByChart.new(usage)}
353
+ @usage_by_chart = data['usageByChart'].map { |usage| UsageByChart.new(usage) }
342
354
  end
343
355
  end
344
356
 
@@ -356,8 +368,8 @@ module Seatsio::Domain
356
368
  attr_reader :chart, :usage_by_event
357
369
 
358
370
  def initialize(data)
359
- @chart = data['chart'] ? UsageChart.new(data['chart']) : nil
360
- @usage_by_event = data['usageByEvent'].map {|usage| UsageByEvent.new(usage)}
371
+ @chart = data['chart'] ? UsageChart.new(data['chart']) : nil
372
+ @usage_by_event = data['usageByEvent'].map { |usage| UsageByEvent.new(usage) }
361
373
  end
362
374
  end
363
375
 
@@ -59,12 +59,21 @@ module Seatsio
59
59
  def change_object_status(event_key_or_keys, object_or_objects, status, hold_token = nil, order_id = nil, keep_extra_data = nil)
60
60
  request = create_change_object_status_request(object_or_objects, status, hold_token, order_id, event_key_or_keys, keep_extra_data)
61
61
  request[:params] = {
62
- 'expand' => 'objects'
62
+ :expand => 'objects'
63
63
  }
64
64
  response = @http_client.post("seasons/actions/change-object-status", request)
65
65
  Domain::ChangeObjectStatusResult.new(response)
66
66
  end
67
67
 
68
+ def change_object_status_in_batch(status_change_requests)
69
+ request = {
70
+ :statusChanges => status_change_requests,
71
+ :params => { :expand => 'objects' }
72
+ }
73
+ response = @http_client.post("events/actions/change-object-status", request)
74
+ Domain::ChangeObjectStatusInBatchResult.new(response).results
75
+ end
76
+
68
77
  def hold(event_key_or_keys, object_or_objects, hold_token, order_id = nil, keep_extra_data = nil)
69
78
  change_object_status(event_key_or_keys, object_or_objects, Domain::ObjectStatus::HELD, hold_token, order_id, keep_extra_data)
70
79
  end
@@ -127,6 +136,14 @@ module Seatsio
127
136
  @http_client.post("events/#{key}/actions/mark-as-for-sale", request)
128
137
  end
129
138
 
139
+ def update_channels(key:, channels:)
140
+ @http_client.post("events/#{key}/channels/update", channels: channels)
141
+ end
142
+
143
+ def assign_objects_to_channels(key:, channelConfig:)
144
+ @http_client.post("events/#{key}/channels/assign-objects", channelConfig: channelConfig)
145
+ end
146
+
130
147
  private
131
148
 
132
149
  def build_parameters_for_mark_as_sale(objects: nil, categories: nil)
@@ -0,0 +1,6 @@
1
+ def create_change_object_status_in_batch_request(event_key, object_or_objects, status, hold_token = nil , order_id = nil, keep_extra_data = nil)
2
+ result = create_change_object_status_request(object_or_objects, status, hold_token, order_id, '', keep_extra_data)
3
+ result.delete(:events)
4
+ result[:event] = event_key
5
+ result
6
+ end
@@ -1,3 +1,3 @@
1
1
  module Seatsio
2
- VERSION = "22"
2
+ VERSION = "23.7.0"
3
3
  end
@@ -27,6 +27,11 @@ module Seatsio
27
27
  @http_client.post("workspaces/#{key}", body)
28
28
  end
29
29
 
30
+ def regenerate_secret_key(key:)
31
+ response = @http_client.post("workspaces/#{key}/actions/regenerate-secret-key")
32
+ response['secretKey']
33
+ end
34
+
30
35
  def list(filter: nil)
31
36
  extended_cursor = cursor
32
37
  extended_cursor.set_query_param('filter', filter)
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
21
21
  spec.require_paths = ["lib"]
22
22
 
23
23
  spec.add_development_dependency "bundler", "~> 1.16"
24
- spec.add_development_dependency "rake", "~> 10.0"
24
+ spec.add_development_dependency "rake", "~> 13.0"
25
25
  spec.add_development_dependency "minitest", "~> 5.0"
26
26
  spec.add_development_dependency "rest-client", '~> 2.0', '>= 2.0.2'
27
27
  spec.add_development_dependency 'webmock', '~> 3.4', '>= 3.4.2'
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: '22'
4
+ version: 23.7.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-02-28 00:00:00.000000000 Z
11
+ date: 2020-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -30,14 +30,14 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: '10.0'
33
+ version: '13.0'
34
34
  type: :development
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: '10.0'
40
+ version: '13.0'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
43
43
  requirement: !ruby/object:Gem::Requirement
@@ -101,6 +101,7 @@ extra_rdoc_files: []
101
101
  files:
102
102
  - ".editorconfig"
103
103
  - ".gitignore"
104
+ - ".ruby-version"
104
105
  - ".travis.yml"
105
106
  - Gemfile
106
107
  - Gemfile.lock
@@ -109,13 +110,13 @@ files:
109
110
  - bin/console
110
111
  - bin/setup
111
112
  - lib/seatsio.rb
112
- - lib/seatsio/accounts.rb
113
113
  - lib/seatsio/chart_reports.rb
114
114
  - lib/seatsio/charts.rb
115
115
  - lib/seatsio/domain.rb
116
116
  - lib/seatsio/event_reports.rb
117
117
  - lib/seatsio/events.rb
118
118
  - lib/seatsio/events/change_best_available_object_status_request.rb
119
+ - lib/seatsio/events/change_object_status_in_batch_request.rb
119
120
  - lib/seatsio/events/change_object_status_request.rb
120
121
  - lib/seatsio/exception.rb
121
122
  - lib/seatsio/hold_tokens.rb
@@ -1,20 +0,0 @@
1
- require "seatsio/exception"
2
- require "base64"
3
- require "seatsio/httpClient"
4
- require "seatsio/domain"
5
- require "json"
6
- require "cgi"
7
- require "seatsio/domain"
8
-
9
- module Seatsio
10
- class AccountsClient
11
- def initialize(secret_key, workspace_key, base_url)
12
- @http_client = ::Seatsio::HttpClient.new(secret_key, workspace_key, base_url)
13
- end
14
-
15
- def retrieve_my_account
16
- response = @http_client.get('accounts/me')
17
- Domain::Account.new(response)
18
- end
19
- end
20
- end