seatsio 30.1.1 → 32.2.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/.github/workflows/build.yml +26 -0
- data/.github/workflows/publish.yml +21 -0
- data/Gemfile.lock +19 -17
- data/README.md +17 -8
- data/lib/seatsio.rb +30 -2
- data/lib/seatsio/chart_reports.rb +4 -0
- data/lib/seatsio/domain.rb +4 -2
- data/lib/seatsio/event_reports.rb +36 -24
- data/lib/seatsio/httpClient.rb +21 -10
- data/lib/seatsio/pagination/cursor.rb +0 -2
- data/lib/seatsio/version.rb +1 -1
- data/releasing.md +1 -0
- data/seatsio.gemspec +1 -1
- metadata +10 -9
- data/.travis.yml +0 -19
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: deb37b4551b15d8819e8609a2a79ee8e0924bcb0cbc1eb3734ab511865e98127
|
|
4
|
+
data.tar.gz: f63149c1521404c4d9a968717b985a85fb8fc19f90d3f46fd829b694c117d938
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 672aaf5a46b7e2419e4fc62848dc3b195607a1b86e4273bd5704ac51ed70a800f8fa5ba91ffe728df653623cde7963326f78581b5f3ae79fb49aba33e0d7703f
|
|
7
|
+
data.tar.gz: db47b8d5fa509a644d35b7ced4c7a02c526c6b096ef358afc53fb033ca8c034abc7a466f3fc9e81ab0e9e86d25d2854f5f6f44549ee6406296a2e21c0f2ca8e8
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
name: 'Build'
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
push:
|
|
5
|
+
branches: [ master ]
|
|
6
|
+
pull_request:
|
|
7
|
+
branches: [ master ]
|
|
8
|
+
|
|
9
|
+
jobs:
|
|
10
|
+
test:
|
|
11
|
+
|
|
12
|
+
runs-on: ubuntu-latest
|
|
13
|
+
strategy:
|
|
14
|
+
matrix:
|
|
15
|
+
ruby-version: ['2.3']
|
|
16
|
+
|
|
17
|
+
steps:
|
|
18
|
+
- uses: actions/checkout@v2
|
|
19
|
+
- uses: ruby/setup-ruby@v1
|
|
20
|
+
with:
|
|
21
|
+
ruby-version: ${{ matrix.ruby-version }}
|
|
22
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
|
23
|
+
- uses: zcong1993/setup-timezone@master
|
|
24
|
+
with:
|
|
25
|
+
timezone: Europe/Brussels
|
|
26
|
+
- run: bundle exec rake
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
name: 'Publish'
|
|
2
|
+
|
|
3
|
+
on:
|
|
4
|
+
release:
|
|
5
|
+
types: [created]
|
|
6
|
+
|
|
7
|
+
jobs:
|
|
8
|
+
build:
|
|
9
|
+
runs-on: ubuntu-latest
|
|
10
|
+
|
|
11
|
+
steps:
|
|
12
|
+
- uses: actions/checkout@v2
|
|
13
|
+
- run: |
|
|
14
|
+
mkdir -p $HOME/.gem
|
|
15
|
+
touch $HOME/.gem/credentials
|
|
16
|
+
chmod 0600 $HOME/.gem/credentials
|
|
17
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
|
18
|
+
gem build *.gemspec
|
|
19
|
+
gem push *.gem
|
|
20
|
+
env:
|
|
21
|
+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_API_KEY}}"
|
data/Gemfile.lock
CHANGED
|
@@ -1,36 +1,38 @@
|
|
|
1
1
|
PATH
|
|
2
2
|
remote: .
|
|
3
3
|
specs:
|
|
4
|
-
seatsio (
|
|
4
|
+
seatsio (32.2.0)
|
|
5
5
|
|
|
6
6
|
GEM
|
|
7
7
|
remote: https://rubygems.org/
|
|
8
8
|
specs:
|
|
9
|
-
addressable (2.
|
|
10
|
-
public_suffix (>= 2.0.2, <
|
|
11
|
-
crack (0.4.
|
|
12
|
-
|
|
13
|
-
domain_name (0.5.
|
|
9
|
+
addressable (2.7.0)
|
|
10
|
+
public_suffix (>= 2.0.2, < 5.0)
|
|
11
|
+
crack (0.4.5)
|
|
12
|
+
rexml
|
|
13
|
+
domain_name (0.5.20190701)
|
|
14
14
|
unf (>= 0.0.5, < 1.0.0)
|
|
15
|
-
hashdiff (0.
|
|
15
|
+
hashdiff (1.0.1)
|
|
16
|
+
http-accept (1.7.0)
|
|
16
17
|
http-cookie (1.0.3)
|
|
17
18
|
domain_name (~> 0.5)
|
|
18
|
-
mime-types (3.
|
|
19
|
+
mime-types (3.3.1)
|
|
19
20
|
mime-types-data (~> 3.2015)
|
|
20
|
-
mime-types-data (3.
|
|
21
|
-
minitest (5.
|
|
21
|
+
mime-types-data (3.2021.0225)
|
|
22
|
+
minitest (5.14.4)
|
|
22
23
|
netrc (0.11.0)
|
|
23
|
-
public_suffix (
|
|
24
|
-
rake (13.0.
|
|
25
|
-
rest-client (2.0
|
|
24
|
+
public_suffix (4.0.6)
|
|
25
|
+
rake (13.0.3)
|
|
26
|
+
rest-client (2.1.0)
|
|
27
|
+
http-accept (>= 1.7.0, < 2.0)
|
|
26
28
|
http-cookie (>= 1.0.2, < 2.0)
|
|
27
29
|
mime-types (>= 1.16, < 4.0)
|
|
28
30
|
netrc (~> 0.8)
|
|
29
|
-
|
|
31
|
+
rexml (3.2.5)
|
|
30
32
|
unf (0.1.4)
|
|
31
33
|
unf_ext
|
|
32
|
-
unf_ext (0.0.7.
|
|
33
|
-
webmock (3.
|
|
34
|
+
unf_ext (0.0.7.7)
|
|
35
|
+
webmock (3.12.2)
|
|
34
36
|
addressable (>= 2.3.6)
|
|
35
37
|
crack (>= 0.3.2)
|
|
36
38
|
hashdiff (>= 0.4.0, < 2.0.0)
|
|
@@ -39,7 +41,7 @@ PLATFORMS
|
|
|
39
41
|
ruby
|
|
40
42
|
|
|
41
43
|
DEPENDENCIES
|
|
42
|
-
bundler (~>
|
|
44
|
+
bundler (~> 2.2)
|
|
43
45
|
minitest (~> 5.0)
|
|
44
46
|
rake (~> 13.0)
|
|
45
47
|
rest-client (~> 2.0, >= 2.0.2)
|
data/README.md
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# seatsio-ruby, the official Seats.io Ruby client library
|
|
2
2
|
|
|
3
|
-
[](https://github.com/seatsio/seatsio-ruby/actions/workflows/build.yml)
|
|
4
|
+
[](https://badge.fury.io/rb/seatsio)
|
|
4
5
|
|
|
5
6
|
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
7
|
|
|
@@ -14,7 +15,7 @@ seatsio-ruby follows semver since v23.3.0.
|
|
|
14
15
|
|
|
15
16
|
```ruby
|
|
16
17
|
require('seatsio')
|
|
17
|
-
client = Seatsio::Client.new("my-workspace-secret-key") # can be found on https://app.seats.io/workspace-settings
|
|
18
|
+
client = Seatsio::Client.new(Seatsio::Region.EU(), "my-workspace-secret-key") # can be found on https://app.seats.io/workspace-settings
|
|
18
19
|
chart = client.charts.create
|
|
19
20
|
event = client.events.create key: chart.key
|
|
20
21
|
```
|
|
@@ -23,7 +24,7 @@ event = client.events.create key: chart.key
|
|
|
23
24
|
|
|
24
25
|
```ruby
|
|
25
26
|
require('seatsio')
|
|
26
|
-
client = Seatsio::Client.new("my-workspace-secret-key")
|
|
27
|
+
client = Seatsio::Client.new(Seatsio::Region.EU(), "my-workspace-secret-key")
|
|
27
28
|
client.events.book(event.key, ["A-1", "A-2"])
|
|
28
29
|
```
|
|
29
30
|
|
|
@@ -31,7 +32,7 @@ client.events.book(event.key, ["A-1", "A-2"])
|
|
|
31
32
|
|
|
32
33
|
```ruby
|
|
33
34
|
require('seatsio')
|
|
34
|
-
client = Seatsio::Client.new("my-workspace-secret-key")
|
|
35
|
+
client = Seatsio::Client.new(Seatsio::Region.EU(), "my-workspace-secret-key")
|
|
35
36
|
client.events.release(event.key, ["A-1", "A-2"])
|
|
36
37
|
```
|
|
37
38
|
|
|
@@ -39,7 +40,7 @@ client.events.release(event.key, ["A-1", "A-2"])
|
|
|
39
40
|
|
|
40
41
|
```ruby
|
|
41
42
|
require('seatsio')
|
|
42
|
-
client = Seatsio::Client.new("my-workspace-secret-key")
|
|
43
|
+
client = Seatsio::Client.new(Seatsio::Region.EU(), "my-workspace-secret-key")
|
|
43
44
|
client.events.book(event.key, ["A-1", "A-2"], hold_token: "a-hold-token")
|
|
44
45
|
```
|
|
45
46
|
|
|
@@ -47,7 +48,7 @@ client.events.book(event.key, ["A-1", "A-2"], hold_token: "a-hold-token")
|
|
|
47
48
|
|
|
48
49
|
```ruby
|
|
49
50
|
require('seatsio')
|
|
50
|
-
client = Seatsio::Client.new("my-workspace-secret-key")
|
|
51
|
+
client = Seatsio::Client.new(Seatsio::Region.EU(), "my-workspace-secret-key")
|
|
51
52
|
client.events.change_object_status("<EVENT KEY>", ["A-1", "A-2"], "my-custom-status")
|
|
52
53
|
```
|
|
53
54
|
|
|
@@ -55,7 +56,7 @@ client.events.change_object_status("<EVENT KEY>", ["A-1", "A-2"], "my-custom-sta
|
|
|
55
56
|
|
|
56
57
|
```ruby
|
|
57
58
|
require('seatsio')
|
|
58
|
-
client = Seatsio::Client.new("my-workspace-secret-key")
|
|
59
|
+
client = Seatsio::Client.new(Seatsio::Region.EU(), "my-workspace-secret-key")
|
|
59
60
|
charts = client.charts.list
|
|
60
61
|
charts.each do |chart|
|
|
61
62
|
puts chart.key
|
|
@@ -101,7 +102,7 @@ end
|
|
|
101
102
|
|
|
102
103
|
```ruby
|
|
103
104
|
require('seatsio')
|
|
104
|
-
client = Seatsio::Client.new("my-company-admin-key")
|
|
105
|
+
client = Seatsio::Client.new(Seatsio::Region.EU(), "my-company-admin-key")
|
|
105
106
|
client.workspaces.create name: "a workspace"
|
|
106
107
|
```
|
|
107
108
|
|
|
@@ -113,3 +114,11 @@ This exception contains a message string describing what went wrong, and also tw
|
|
|
113
114
|
|
|
114
115
|
* *errors*: a list of errors that the server returned. In most cases, this array will contain only one element, an instance of ApiError, containing an error code and a message.
|
|
115
116
|
* *requestId*: the identifier of the request you made. Please mention this to us when you have questions, as it will make debugging easier.
|
|
117
|
+
|
|
118
|
+
|
|
119
|
+
## Rate limiting - exponential backoff
|
|
120
|
+
|
|
121
|
+
This library supports [exponential backoff](https://en.wikipedia.org/wiki/Exponential_backoff).
|
|
122
|
+
|
|
123
|
+
When you send too many concurrent requests, the server returns an error `429 - Too Many Requests`. The client reacts to this by waiting for a while, and then retrying the request.
|
|
124
|
+
If the request still fails with an error `429`, it waits a little longer, and try again. This happens at most 5 times, before giving up (after approximately 15 seconds).
|
data/lib/seatsio.rb
CHANGED
|
@@ -9,12 +9,12 @@ require 'seatsio/event_reports'
|
|
|
9
9
|
require 'seatsio/usage_reports'
|
|
10
10
|
|
|
11
11
|
module Seatsio
|
|
12
|
-
# Main Seatsio Class
|
|
13
12
|
class Client
|
|
14
13
|
attr_reader :charts, :subaccounts, :workspaces, :events,
|
|
15
14
|
:hold_tokens, :chart_reports, :event_reports, :usage_reports
|
|
16
15
|
|
|
17
|
-
def initialize(secret_key, workspace_key = nil
|
|
16
|
+
def initialize(region, secret_key, workspace_key = nil)
|
|
17
|
+
base_url = region.url
|
|
18
18
|
@charts = ChartsClient.new(secret_key, workspace_key, base_url)
|
|
19
19
|
@subaccounts = SubaccountsClient.new(secret_key, workspace_key, base_url)
|
|
20
20
|
@workspaces = WorkspacesClient.new(secret_key, base_url)
|
|
@@ -25,4 +25,32 @@ module Seatsio
|
|
|
25
25
|
@usage_reports = UsageReportsClient.new(secret_key, workspace_key, base_url)
|
|
26
26
|
end
|
|
27
27
|
end
|
|
28
|
+
|
|
29
|
+
class Region
|
|
30
|
+
attr_reader :url
|
|
31
|
+
|
|
32
|
+
def initialize(url)
|
|
33
|
+
@url = url
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def self.EU()
|
|
37
|
+
return Region.new(Region.url_for_id("eu"))
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
def self.NA()
|
|
41
|
+
return Region.new(Region.url_for_id("na"))
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def self.SA()
|
|
45
|
+
return Region.new(Region.url_for_id("sa"))
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def self.OC()
|
|
49
|
+
return Region.new(Region.url_for_id("oc"))
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def self.url_for_id(id)
|
|
53
|
+
return "https://api-" + id + ".seatsio.net"
|
|
54
|
+
end
|
|
55
|
+
end
|
|
28
56
|
end
|
|
@@ -14,6 +14,10 @@ module Seatsio
|
|
|
14
14
|
get_chart_report('byLabel', chart_key, book_whole_tables)
|
|
15
15
|
end
|
|
16
16
|
|
|
17
|
+
def by_object_type(chart_key, book_whole_tables = nil)
|
|
18
|
+
get_chart_report('byObjectType', chart_key, book_whole_tables)
|
|
19
|
+
end
|
|
20
|
+
|
|
17
21
|
def by_category_key(chart_key, book_whole_tables = nil)
|
|
18
22
|
get_chart_report('byCategoryKey', chart_key, book_whole_tables)
|
|
19
23
|
end
|
data/lib/seatsio/domain.rb
CHANGED
|
@@ -264,7 +264,7 @@ module Seatsio
|
|
|
264
264
|
class ChartReportItem
|
|
265
265
|
|
|
266
266
|
attr_reader :label, :labels, :category_key, :category_label, :section, :entrance, :capacity, :object_type,
|
|
267
|
-
:left_neighbour, :right_neighbour, :book_as_a_whole
|
|
267
|
+
:left_neighbour, :right_neighbour, :book_as_a_whole, :distance_to_focal_point
|
|
268
268
|
|
|
269
269
|
def initialize(data)
|
|
270
270
|
@label = data['label']
|
|
@@ -278,6 +278,7 @@ module Seatsio
|
|
|
278
278
|
@left_neighbour = data['leftNeighbour']
|
|
279
279
|
@right_neighbour = data['rightNeighbour']
|
|
280
280
|
@book_as_a_whole = data['bookAsAWhole']
|
|
281
|
+
@distance_to_focal_point = data['distanceToFocalPoint']
|
|
281
282
|
end
|
|
282
283
|
end
|
|
283
284
|
|
|
@@ -329,7 +330,7 @@ module Seatsio
|
|
|
329
330
|
:ticket_type, :num_booked, :num_free, :num_held, :for_sale, :section,
|
|
330
331
|
:is_accessible, :is_companion_seat, :has_restricted_view, :displayed_object_type,
|
|
331
332
|
:left_neighbour, :right_neighbour, :is_selectable, :is_disabled_by_social_distancing, :channel,
|
|
332
|
-
:book_as_a_whole
|
|
333
|
+
:book_as_a_whole, :distance_to_focal_point
|
|
333
334
|
|
|
334
335
|
def initialize(data)
|
|
335
336
|
@status = data['status']
|
|
@@ -359,6 +360,7 @@ module Seatsio
|
|
|
359
360
|
@is_disabled_by_social_distancing = data['isDisabledBySocialDistancing']
|
|
360
361
|
@channel = data['channel']
|
|
361
362
|
@book_as_a_whole = data['bookAsAWhole']
|
|
363
|
+
@distance_to_focal_point = data['distanceToFocalPoint']
|
|
362
364
|
end
|
|
363
365
|
end
|
|
364
366
|
|
|
@@ -11,6 +11,10 @@ module Seatsio
|
|
|
11
11
|
@http_client = ::Seatsio::HttpClient.new(secret_key, workspace_key, base_url)
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
def by_status(event_key, status = nil)
|
|
15
|
+
fetch_report('byStatus', event_key, status)
|
|
16
|
+
end
|
|
17
|
+
|
|
14
18
|
def summary_by_status(event_key)
|
|
15
19
|
fetch_summary_report('byStatus', event_key)
|
|
16
20
|
end
|
|
@@ -19,6 +23,22 @@ module Seatsio
|
|
|
19
23
|
fetch_deep_summary_report('byStatus', event_key)
|
|
20
24
|
end
|
|
21
25
|
|
|
26
|
+
def by_object_type(event_key, object_type = nil)
|
|
27
|
+
fetch_report('byObjectType', event_key, object_type)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def summary_by_object_type(event_key)
|
|
31
|
+
fetch_summary_report('byObjectType', event_key)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
def deep_summary_by_object_type(event_key)
|
|
35
|
+
fetch_deep_summary_report('byObjectType', event_key)
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def by_category_key(event_key, category_key = nil)
|
|
39
|
+
fetch_report('byCategoryKey', event_key, category_key)
|
|
40
|
+
end
|
|
41
|
+
|
|
22
42
|
def summary_by_category_key(event_key)
|
|
23
43
|
fetch_summary_report('byCategoryKey', event_key)
|
|
24
44
|
end
|
|
@@ -27,6 +47,10 @@ module Seatsio
|
|
|
27
47
|
fetch_deep_summary_report('byCategoryKey', event_key)
|
|
28
48
|
end
|
|
29
49
|
|
|
50
|
+
def by_category_label(event_key, category_label = nil)
|
|
51
|
+
fetch_report('byCategoryLabel', event_key, category_label)
|
|
52
|
+
end
|
|
53
|
+
|
|
30
54
|
def summary_by_category_label(event_key)
|
|
31
55
|
fetch_summary_report('byCategoryLabel', event_key)
|
|
32
56
|
end
|
|
@@ -35,6 +59,10 @@ module Seatsio
|
|
|
35
59
|
fetch_deep_summary_report('byCategoryLabel', event_key)
|
|
36
60
|
end
|
|
37
61
|
|
|
62
|
+
def by_section(event_key, section = nil)
|
|
63
|
+
fetch_report('bySection', event_key, section)
|
|
64
|
+
end
|
|
65
|
+
|
|
38
66
|
def summary_by_section(event_key)
|
|
39
67
|
fetch_summary_report('bySection', event_key)
|
|
40
68
|
end
|
|
@@ -43,6 +71,10 @@ module Seatsio
|
|
|
43
71
|
fetch_deep_summary_report('bySection', event_key)
|
|
44
72
|
end
|
|
45
73
|
|
|
74
|
+
def by_selectability(event_key, selectability = nil)
|
|
75
|
+
fetch_report('bySelectability', event_key, selectability)
|
|
76
|
+
end
|
|
77
|
+
|
|
46
78
|
def summary_by_selectability(event_key)
|
|
47
79
|
fetch_summary_report('bySelectability', event_key)
|
|
48
80
|
end
|
|
@@ -51,6 +83,10 @@ module Seatsio
|
|
|
51
83
|
fetch_deep_summary_report('bySelectability', event_key)
|
|
52
84
|
end
|
|
53
85
|
|
|
86
|
+
def by_channel(event_key, channelKey = nil)
|
|
87
|
+
fetch_report('byChannel', event_key, channelKey)
|
|
88
|
+
end
|
|
89
|
+
|
|
54
90
|
def summary_by_channel(event_key)
|
|
55
91
|
fetch_summary_report('byChannel', event_key)
|
|
56
92
|
end
|
|
@@ -63,34 +99,10 @@ module Seatsio
|
|
|
63
99
|
fetch_report('byLabel', event_key, label)
|
|
64
100
|
end
|
|
65
101
|
|
|
66
|
-
def by_status(event_key, status = nil)
|
|
67
|
-
fetch_report('byStatus', event_key, status)
|
|
68
|
-
end
|
|
69
|
-
|
|
70
|
-
def by_category_label(event_key, category_label = nil)
|
|
71
|
-
fetch_report('byCategoryLabel', event_key, category_label)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
|
-
def by_category_key(event_key, category_key = nil)
|
|
75
|
-
fetch_report('byCategoryKey', event_key, category_key)
|
|
76
|
-
end
|
|
77
|
-
|
|
78
102
|
def by_order_id(event_key, order_id = nil)
|
|
79
103
|
fetch_report('byOrderId', event_key, order_id)
|
|
80
104
|
end
|
|
81
105
|
|
|
82
|
-
def by_section(event_key, section = nil)
|
|
83
|
-
fetch_report('bySection', event_key, section)
|
|
84
|
-
end
|
|
85
|
-
|
|
86
|
-
def by_selectability(event_key, selectability = nil)
|
|
87
|
-
fetch_report('bySelectability', event_key, selectability)
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
def by_channel(event_key, channelKey = nil)
|
|
91
|
-
fetch_report('byChannel', event_key, channelKey)
|
|
92
|
-
end
|
|
93
|
-
|
|
94
106
|
private
|
|
95
107
|
|
|
96
108
|
def fetch_summary_report(report_type, event_key)
|
data/lib/seatsio/httpClient.rb
CHANGED
|
@@ -14,27 +14,24 @@ module Seatsio
|
|
|
14
14
|
|
|
15
15
|
def execute(*args)
|
|
16
16
|
begin
|
|
17
|
-
headers = {:Authorization => "Basic #{@secret_key}"}
|
|
17
|
+
headers = { :Authorization => "Basic #{@secret_key}" }
|
|
18
18
|
unless @workspace_key.nil?
|
|
19
19
|
headers[:'X-Workspace-Key'] = @workspace_key
|
|
20
20
|
end
|
|
21
21
|
if args[2].include? :params
|
|
22
22
|
headers[:params] = args[2][:params]
|
|
23
23
|
end
|
|
24
|
-
#if args[2] != nil || args[0] == :post
|
|
25
|
-
# headers[:params] = args[2]
|
|
26
|
-
#end
|
|
27
24
|
|
|
28
25
|
url = "#{@base_url}/#{args[1]}"
|
|
29
26
|
|
|
30
|
-
request_options = {method: args[0], url: url, headers: headers}
|
|
27
|
+
request_options = { method: args[0], url: url, headers: headers }
|
|
31
28
|
|
|
32
29
|
if args[0] == :post
|
|
33
30
|
args[2].delete :params
|
|
34
31
|
request_options[:payload] = args[2].to_json
|
|
35
32
|
end
|
|
36
33
|
|
|
37
|
-
response =
|
|
34
|
+
response = execute_with_retries(request_options)
|
|
38
35
|
|
|
39
36
|
# If RAW
|
|
40
37
|
if args[3]
|
|
@@ -44,9 +41,6 @@ module Seatsio
|
|
|
44
41
|
rescue RestClient::NotFound => e
|
|
45
42
|
raise Exception::NotFoundException.new(e.response)
|
|
46
43
|
rescue RestClient::ExceptionWithResponse => e
|
|
47
|
-
if e.response.include? "there is no page after" || e.response.empty?
|
|
48
|
-
raise Exception::NoMorePagesException
|
|
49
|
-
end
|
|
50
44
|
raise Exception::SeatsioException.new(e.response)
|
|
51
45
|
rescue RestClient::Exceptions::Timeout
|
|
52
46
|
raise Exception::SeatsioException.new("Timeout ERROR")
|
|
@@ -55,12 +49,29 @@ module Seatsio
|
|
|
55
49
|
end
|
|
56
50
|
end
|
|
57
51
|
|
|
52
|
+
def execute_with_retries(request_options)
|
|
53
|
+
retry_count = 0
|
|
54
|
+
while true
|
|
55
|
+
begin
|
|
56
|
+
return RestClient::Request.execute(request_options)
|
|
57
|
+
rescue RestClient::ExceptionWithResponse => e
|
|
58
|
+
if e.response.code != 429 || retry_count >= 5
|
|
59
|
+
raise e
|
|
60
|
+
else
|
|
61
|
+
wait_time = (2 ** (retry_count + 2)) / 10.0
|
|
62
|
+
sleep(wait_time)
|
|
63
|
+
retry_count += 1
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
end
|
|
67
|
+
end
|
|
68
|
+
|
|
58
69
|
def get_raw(endpoint, params = {})
|
|
59
70
|
execute(:get, endpoint, params, true)
|
|
60
71
|
end
|
|
61
72
|
|
|
62
73
|
def get(endpoint, params = {})
|
|
63
|
-
payload = {:params => params}
|
|
74
|
+
payload = { :params => params }
|
|
64
75
|
execute(:get, endpoint, payload)
|
|
65
76
|
end
|
|
66
77
|
|
data/lib/seatsio/version.rb
CHANGED
data/releasing.md
CHANGED
data/seatsio.gemspec
CHANGED
|
@@ -20,7 +20,7 @@ Gem::Specification.new do |spec|
|
|
|
20
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
21
21
|
spec.require_paths = ["lib"]
|
|
22
22
|
|
|
23
|
-
spec.add_development_dependency "bundler", "~>
|
|
23
|
+
spec.add_development_dependency "bundler", "~> 2.2"
|
|
24
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'
|
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: 32.2.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Seats.io
|
|
8
|
-
autorequire:
|
|
8
|
+
autorequire:
|
|
9
9
|
bindir: exe
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2021-
|
|
11
|
+
date: 2021-04-26 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: bundler
|
|
@@ -16,14 +16,14 @@ dependencies:
|
|
|
16
16
|
requirements:
|
|
17
17
|
- - "~>"
|
|
18
18
|
- !ruby/object:Gem::Version
|
|
19
|
-
version: '
|
|
19
|
+
version: '2.2'
|
|
20
20
|
type: :development
|
|
21
21
|
prerelease: false
|
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
|
23
23
|
requirements:
|
|
24
24
|
- - "~>"
|
|
25
25
|
- !ruby/object:Gem::Version
|
|
26
|
-
version: '
|
|
26
|
+
version: '2.2'
|
|
27
27
|
- !ruby/object:Gem::Dependency
|
|
28
28
|
name: rake
|
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -100,9 +100,10 @@ extensions: []
|
|
|
100
100
|
extra_rdoc_files: []
|
|
101
101
|
files:
|
|
102
102
|
- ".editorconfig"
|
|
103
|
+
- ".github/workflows/build.yml"
|
|
104
|
+
- ".github/workflows/publish.yml"
|
|
103
105
|
- ".gitignore"
|
|
104
106
|
- ".ruby-version"
|
|
105
|
-
- ".travis.yml"
|
|
106
107
|
- Gemfile
|
|
107
108
|
- Gemfile.lock
|
|
108
109
|
- README.md
|
|
@@ -132,7 +133,7 @@ files:
|
|
|
132
133
|
homepage: http://seats.io
|
|
133
134
|
licenses: []
|
|
134
135
|
metadata: {}
|
|
135
|
-
post_install_message:
|
|
136
|
+
post_install_message:
|
|
136
137
|
rdoc_options: []
|
|
137
138
|
require_paths:
|
|
138
139
|
- lib
|
|
@@ -147,8 +148,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
|
147
148
|
- !ruby/object:Gem::Version
|
|
148
149
|
version: '0'
|
|
149
150
|
requirements: []
|
|
150
|
-
rubygems_version: 3.
|
|
151
|
-
signing_key:
|
|
151
|
+
rubygems_version: 3.1.2
|
|
152
|
+
signing_key:
|
|
152
153
|
specification_version: 4
|
|
153
154
|
summary: the official Seats.io Ruby client library
|
|
154
155
|
test_files: []
|
data/.travis.yml
DELETED
|
@@ -1,19 +0,0 @@
|
|
|
1
|
-
sudo: false
|
|
2
|
-
language: ruby
|
|
3
|
-
rvm:
|
|
4
|
-
- 2.3.0
|
|
5
|
-
before_install: gem install bundler -v 1.16.1
|
|
6
|
-
notifications:
|
|
7
|
-
slack:
|
|
8
|
-
rooms:
|
|
9
|
-
- seatsio:AGaZISx4HlvoEx6WTbVaX50V
|
|
10
|
-
on_pull_requests: false
|
|
11
|
-
on_failure: always
|
|
12
|
-
on_success: change
|
|
13
|
-
deploy:
|
|
14
|
-
provider: rubygems
|
|
15
|
-
gem: seatsio
|
|
16
|
-
on:
|
|
17
|
-
tags: true
|
|
18
|
-
api_key:
|
|
19
|
-
secure: mQmsVgbIYF16i0rzDYQoOzcXwG8ppJl/czjTWf/KaEtSCWG5tQKBzflXFIkrfoP7EyjC+2TvT4Z5tWIBUVR4gG2KjcV2lGgq2vV/sVYrmUIXO2LZHBu5n35QHBF//0IOvbZMufm7W8PIVM6do1tMxdRE+qMZVtb5M9YIQpDHc6jXru/PKxOffwTNEWMVX1Xjfz4wtuJCpvhR+BHuBoi9uE4dyWrF5WgkL2aELUvHpUmc2wn0gGypqJ9Whrcxq8n3EREvO0kiSMww+MMdWd57ACo4q5J8Za+h4tXvVd49EyEdevjWMvT0wYx+nSz+/vk4B9vOmd5Un9/gzoLbq8qEpAgEHXKw/J6l9KHlJDMNy2dVsMzqSOceEtBx5LA0fizWD4U2XfI0GaiM5Rdt96iNtVlU9lQuiXPhcz7igEFVRSZAkzTNHlh0cAr2FJIBBh27fffrblF/xRw1ziLwDnjutTg8lZsxmdjTrnMkAAuNWMIXKzWvh7n2bZ+jqwzp5bSqp1ckOCae7ozsG1Kx1eS8pMepsvMtmb5w6dsuWGVAI8ASd8XmYFHKisKmi6xHYOGw7uy7yE7rXHa0Ypx/K4xKCoqhv+5Y7RdTvT2tkqC0mwMOh/Io2eslgjTA0vy87sVKyLTCU/ElKRTd2165cRL2JRNH3l/X0gxglT4WpXQEEXs=
|