seatsio 22 → 23.7.0

Sign up to get free protection for your applications and to get access to all the features.
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