scalingo 3.0.0.beta.2 → 3.1.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/workflows/publish.yml +28 -0
- data/.github/workflows/ruby.yml +45 -0
- data/.rubocop.yml +16 -0
- data/CHANGELOG.md +24 -0
- data/README.md +25 -20
- data/lib/scalingo/api/client.rb +38 -10
- data/lib/scalingo/api/endpoint.rb +12 -2
- data/lib/scalingo/api/response.rb +11 -2
- data/lib/scalingo/auth/keys.rb +4 -4
- data/lib/scalingo/auth/scm_integrations.rb +4 -4
- data/lib/scalingo/auth/tokens.rb +6 -6
- data/lib/scalingo/auth/two_factor_auth.rb +4 -4
- data/lib/scalingo/auth/user.rb +15 -2
- data/lib/scalingo/bearer_token.rb +15 -0
- data/lib/scalingo/billing/profile.rb +3 -3
- data/lib/scalingo/client.rb +26 -113
- data/lib/scalingo/configuration.rb +8 -36
- data/lib/scalingo/core_client.rb +106 -0
- data/lib/scalingo/regional/addons.rb +21 -8
- data/lib/scalingo/regional/apps.rb +8 -8
- data/lib/scalingo/regional/autoscalers.rb +70 -0
- data/lib/scalingo/regional/collaborators.rb +4 -4
- data/lib/scalingo/regional/containers.rb +4 -4
- data/lib/scalingo/regional/deployments.rb +3 -3
- data/lib/scalingo/regional/domains.rb +5 -5
- data/lib/scalingo/regional/environment.rb +6 -6
- data/lib/scalingo/regional/events.rb +4 -4
- data/lib/scalingo/regional/logs.rb +2 -2
- data/lib/scalingo/regional/metrics.rb +3 -2
- data/lib/scalingo/regional/notifiers.rb +7 -7
- data/lib/scalingo/regional/operations.rb +1 -1
- data/lib/scalingo/regional/scm_repo_links.rb +8 -8
- data/lib/scalingo/regional.rb +2 -0
- data/lib/scalingo/token_holder.rb +31 -0
- data/lib/scalingo/version.rb +1 -1
- data/samples/auth/user/stop-free-trial.json +24 -0
- data/samples/regional/addons/token-200.json +49 -0
- data/samples/regional/addons/token-404.json +24 -0
- data/samples/regional/autoscalers/_meta.json +27 -0
- data/samples/regional/autoscalers/create-201.json +49 -0
- data/samples/regional/autoscalers/create-500.json +32 -0
- data/samples/regional/autoscalers/destroy-204.json +20 -0
- data/samples/regional/autoscalers/destroy-404.json +25 -0
- data/samples/regional/autoscalers/find-200.json +39 -0
- data/samples/regional/autoscalers/find-404.json +25 -0
- data/samples/regional/autoscalers/for-200.json +41 -0
- data/samples/regional/autoscalers/update-200.json +45 -0
- data/samples/regional/autoscalers/update-404.json +31 -0
- data/samples/regional/autoscalers/update-500.json +30 -0
- data/scalingo.gemspec +8 -8
- data/spec/scalingo/api/client_spec.rb +60 -13
- data/spec/scalingo/api/endpoint_spec.rb +18 -3
- data/spec/scalingo/api/response_spec.rb +32 -16
- data/spec/scalingo/auth/user_spec.rb +6 -0
- data/spec/scalingo/auth_spec.rb +1 -1
- data/spec/scalingo/billing_spec.rb +11 -0
- data/spec/scalingo/client_spec.rb +2 -2
- data/spec/scalingo/configuration_spec.rb +32 -30
- data/spec/scalingo/regional/addons_spec.rb +16 -0
- data/spec/scalingo/regional/autoscalers_spec.rb +84 -0
- data/spec/scalingo/regional_spec.rb +3 -3
- metadata +69 -47
- data/.travis.yml +0 -24
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c6c044b3045115cfbb02eb44ff90880f115ad308f72962d3a2e396d094d57a1
|
4
|
+
data.tar.gz: 108a902824f01dd1bfc7ccd347ce3a1915ff5e68298ad236b8cd786d85f7df1a
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2bf6692720bdcaaebf692d5c9e714da314acd0e56cbab9d0d616e308efaeb70ec7bc03e0596e94ba80e554daa9f92bc7519dc8da6eb29faf801c11b4f8099a73
|
7
|
+
data.tar.gz: 2ae4d7349ac2cc5821109273b7adf1d489ee9e99c721694c4c6e1f3449ecf2f7c0a4341aea46874c9bb5fa50d1f4642c48fbc4822fe5409bb646c9ae40322790
|
@@ -0,0 +1,28 @@
|
|
1
|
+
name: Publish gem
|
2
|
+
|
3
|
+
on:
|
4
|
+
workflow_dispatch:
|
5
|
+
release:
|
6
|
+
types: [created]
|
7
|
+
|
8
|
+
jobs:
|
9
|
+
build:
|
10
|
+
runs-on: ubuntu-latest
|
11
|
+
|
12
|
+
steps:
|
13
|
+
- uses: actions/checkout@v2
|
14
|
+
- name: Set up Ruby
|
15
|
+
uses: ruby/setup-ruby@v1
|
16
|
+
with:
|
17
|
+
ruby-version: 3.0
|
18
|
+
bundler-cache: true
|
19
|
+
- name: Publish to RubyGems
|
20
|
+
run: |
|
21
|
+
mkdir -p $HOME/.gem
|
22
|
+
touch $HOME/.gem/credentials
|
23
|
+
chmod 0600 $HOME/.gem/credentials
|
24
|
+
printf -- "---\n:rubygems_api_key: ${GEM_HOST_API_KEY}\n" > $HOME/.gem/credentials
|
25
|
+
gem build *.gemspec
|
26
|
+
gem push *.gem
|
27
|
+
env:
|
28
|
+
GEM_HOST_API_KEY: "${{secrets.RUBYGEMS_AUTH_TOKEN}}"
|
@@ -0,0 +1,45 @@
|
|
1
|
+
# This workflow uses actions that are not certified by GitHub.
|
2
|
+
# They are provided by a third-party and are governed by
|
3
|
+
# separate terms of service, privacy policy, and support
|
4
|
+
# documentation.
|
5
|
+
# This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
|
6
|
+
# For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
|
7
|
+
|
8
|
+
name: CI - PR/master
|
9
|
+
|
10
|
+
on:
|
11
|
+
workflow_dispatch:
|
12
|
+
push:
|
13
|
+
branches: [ master ]
|
14
|
+
pull_request:
|
15
|
+
branches: [ master ]
|
16
|
+
|
17
|
+
jobs:
|
18
|
+
lint:
|
19
|
+
runs-on: ubuntu-latest
|
20
|
+
steps:
|
21
|
+
- uses: actions/checkout@v2
|
22
|
+
- name: Set up Ruby
|
23
|
+
uses: ruby/setup-ruby@v1
|
24
|
+
with:
|
25
|
+
ruby-version: 3.0
|
26
|
+
bundler-cache: true
|
27
|
+
- name: Rubocop checks
|
28
|
+
run: bundle exec rubocop
|
29
|
+
|
30
|
+
test:
|
31
|
+
runs-on: ubuntu-latest
|
32
|
+
strategy:
|
33
|
+
matrix:
|
34
|
+
ruby-version: ['2.6', '2.7', '3.0']
|
35
|
+
steps:
|
36
|
+
- uses: actions/checkout@v2
|
37
|
+
- name: Set up Ruby
|
38
|
+
# To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
|
39
|
+
# change this to (see https://github.com/ruby/setup-ruby#versioning):
|
40
|
+
uses: ruby/setup-ruby@v1
|
41
|
+
with:
|
42
|
+
ruby-version: ${{ matrix.ruby-version }}
|
43
|
+
bundler-cache: true # runs 'bundle install' and caches installed gems automatically
|
44
|
+
- name: Run tests
|
45
|
+
run: bundle exec rake
|
data/.rubocop.yml
CHANGED
@@ -7,10 +7,26 @@ require:
|
|
7
7
|
- standard
|
8
8
|
- rubocop-performance
|
9
9
|
|
10
|
+
AllCops:
|
11
|
+
SuggestExtensions: false
|
12
|
+
Exclude:
|
13
|
+
- 'node_modules/**/*'
|
14
|
+
- 'tmp/**/*'
|
15
|
+
- 'vendor/**/*'
|
16
|
+
- '.git/**/*'
|
17
|
+
|
10
18
|
Style/TrailingCommaInArguments:
|
11
19
|
Enabled: true
|
12
20
|
EnforcedStyleForMultiline: consistent_comma
|
13
21
|
|
22
|
+
Style/TrailingCommaInArrayLiteral:
|
23
|
+
Enabled: true
|
24
|
+
EnforcedStyleForMultiline: consistent_comma
|
25
|
+
|
26
|
+
Style/TrailingCommaInHashLiteral:
|
27
|
+
Enabled: true
|
28
|
+
EnforcedStyleForMultiline: consistent_comma
|
29
|
+
|
14
30
|
Style/Alias:
|
15
31
|
Enabled: true
|
16
32
|
EnforcedStyle: prefer_alias_method
|
data/CHANGELOG.md
CHANGED
@@ -1,5 +1,29 @@
|
|
1
1
|
## Unreleased
|
2
2
|
|
3
|
+
## 3.1.0
|
4
|
+
|
5
|
+
* Compat: support for ActiveSupport (and therefore Rails) 7, @Intrepidd
|
6
|
+
|
7
|
+
## 3.0.1
|
8
|
+
|
9
|
+
* Internals: allow `unpack` to dig into nested structures
|
10
|
+
|
11
|
+
## 3.0.0
|
12
|
+
|
13
|
+
* New: Regional API autoscalers endpoints
|
14
|
+
* New: User#stop_free_trial method
|
15
|
+
|
16
|
+
## 3.0.0.beta.3 - 2020/08/15
|
17
|
+
|
18
|
+
* Change: Requests have the header `Accept: application/json` by default
|
19
|
+
* Private API Change: `unpack` signature
|
20
|
+
* Change: allow api clients standalone use (without a main scalingo client)
|
21
|
+
* Change: remove regions-related configuration, except for the default region
|
22
|
+
* Bugfix: remove `https` configuration option (development artifact) (#20)
|
23
|
+
* Improv: configure the faraday adapter to use (#20)
|
24
|
+
* Improv: prettier `inspect` for common objects (#20)
|
25
|
+
* New: Add `addons#token` endpoint (#20)
|
26
|
+
|
3
27
|
## 3.0.0.beta.2 - 2020/06/18
|
4
28
|
|
5
29
|
* Bugfix: do not "dig" into the response body if it is not a 2XX (#18, #19)
|
data/README.md
CHANGED
@@ -10,15 +10,10 @@ will therefore be `3.x.x`.
|
|
10
10
|
|
11
11
|
You can check the version 2 at [the v2 branch of this repository](https://github.com/Scalingo/scalingo-ruby-api/tree/v2)
|
12
12
|
|
13
|
-
### The road to 3.0.0
|
14
|
-
|
15
|
-
This gem is still in beta version, but its API should not change a lot until a final release.
|
16
|
-
[This issue tracks the remaining work](https://github.com/Scalingo/scalingo-ruby-api/issues/13).
|
17
|
-
|
18
13
|
## Installation
|
19
14
|
|
20
15
|
```ruby
|
21
|
-
gem "scalingo", "3.0.0
|
16
|
+
gem "scalingo", "3.0.0"
|
22
17
|
```
|
23
18
|
|
24
19
|
And then execute:
|
@@ -63,20 +58,7 @@ changing the configuration globally will therefore not affect already existing o
|
|
63
58
|
|
64
59
|
```ruby
|
65
60
|
Scalingo.configure do |config|
|
66
|
-
#
|
67
|
-
config.auth = "https://auth.scalingo.com/v1"
|
68
|
-
|
69
|
-
# Billing API url
|
70
|
-
config.billing = "https://cashmachine.scalingo.com"
|
71
|
-
|
72
|
-
# Known regions and their api's url
|
73
|
-
config.regions = {
|
74
|
-
agora_fr1: "https://api.agora-fr1.scalingo.com/v1",
|
75
|
-
osc_fr1: "https://api.osc-fr1.scalingo.com/v1",
|
76
|
-
osc_secnum_fr1: "https://api.osc-secnum-fr1.scalingo.com/v1"
|
77
|
-
}
|
78
|
-
|
79
|
-
# Default region. Must match an entry in `regions`
|
61
|
+
# Default region. Must be a supported region (agora_fr1, osc_fr1, osc_secnum_fr1)
|
80
62
|
config.default_region = :osc_fr1
|
81
63
|
|
82
64
|
# Configure the User Agent header
|
@@ -95,6 +77,9 @@ Scalingo.configure do |config|
|
|
95
77
|
# These headers will be added to every request. Individual methods may override them.
|
96
78
|
# This should be a hash or a callable object that returns a hash.
|
97
79
|
config.additional_headers = {}
|
80
|
+
|
81
|
+
# Specify an adapter for faraday. Leave nil for the default one (Net::HTTP)
|
82
|
+
config.faraday_adapter = nil
|
98
83
|
end
|
99
84
|
```
|
100
85
|
|
@@ -159,3 +144,23 @@ scalingo.osc_fr1.apps.all # OR scalingo.region(:osc_fr1).apps.all
|
|
159
144
|
# Preview the creation of an app on the default region
|
160
145
|
scalingo.apps.create(name: "my-new-app", dry_run: true)
|
161
146
|
```
|
147
|
+
|
148
|
+
## Development
|
149
|
+
|
150
|
+
### Install
|
151
|
+
|
152
|
+
```bash
|
153
|
+
bundle
|
154
|
+
```
|
155
|
+
|
156
|
+
### Run tests
|
157
|
+
|
158
|
+
```bash
|
159
|
+
bundle exec rake test
|
160
|
+
```
|
161
|
+
|
162
|
+
### Release a new version
|
163
|
+
|
164
|
+
```bash
|
165
|
+
# TODO
|
166
|
+
```
|
data/lib/scalingo/api/client.rb
CHANGED
@@ -1,11 +1,24 @@
|
|
1
|
+
require "scalingo/token_holder"
|
2
|
+
|
1
3
|
module Scalingo
|
2
4
|
module API
|
3
5
|
class Client
|
4
|
-
|
6
|
+
include TokenHolder
|
7
|
+
|
8
|
+
attr_reader :config, :token_holder, :url
|
5
9
|
|
6
|
-
def initialize(scalingo,
|
7
|
-
@scalingo = scalingo
|
10
|
+
def initialize(url, scalingo: nil, config: {})
|
8
11
|
@url = url
|
12
|
+
parent_config = Scalingo.config
|
13
|
+
|
14
|
+
if scalingo
|
15
|
+
@token_holder = scalingo
|
16
|
+
parent_config = scalingo.config
|
17
|
+
else
|
18
|
+
@token_holder = self
|
19
|
+
end
|
20
|
+
|
21
|
+
@config = Configuration.new(config, parent_config)
|
9
22
|
end
|
10
23
|
|
11
24
|
def self.register_handlers!(handlers)
|
@@ -27,13 +40,24 @@ module Scalingo
|
|
27
40
|
end
|
28
41
|
end
|
29
42
|
|
43
|
+
def inspect
|
44
|
+
str = %(<#{self.class}:0x#{object_id.to_s(16)} url:"#{@url}" methods:)
|
45
|
+
|
46
|
+
methods = self.class.instance_methods - Scalingo::API::Client.instance_methods
|
47
|
+
str << methods.to_s
|
48
|
+
|
49
|
+
str << ">"
|
50
|
+
str
|
51
|
+
end
|
52
|
+
|
30
53
|
## Faraday objects
|
31
54
|
def headers
|
32
55
|
hash = {
|
33
|
-
"User-Agent" =>
|
56
|
+
"User-Agent" => config.user_agent,
|
57
|
+
"Accept" => "application/json",
|
34
58
|
}
|
35
59
|
|
36
|
-
if (extra =
|
60
|
+
if (extra = config.additional_headers).present?
|
37
61
|
extra.respond_to?(:call) ? hash.update(extra.call) : hash.update(extra)
|
38
62
|
end
|
39
63
|
|
@@ -43,7 +67,7 @@ module Scalingo
|
|
43
67
|
def connection_options
|
44
68
|
{
|
45
69
|
url: url,
|
46
|
-
headers: headers
|
70
|
+
headers: headers,
|
47
71
|
}
|
48
72
|
end
|
49
73
|
|
@@ -66,6 +90,8 @@ module Scalingo
|
|
66
90
|
@unauthenticated_conn ||= Faraday.new(connection_options) { |conn|
|
67
91
|
conn.response :json, content_type: /\bjson$/, parser_options: {symbolize_names: true}
|
68
92
|
conn.request :json
|
93
|
+
|
94
|
+
conn.adapter(config.faraday_adapter) if config.faraday_adapter
|
69
95
|
}
|
70
96
|
end
|
71
97
|
|
@@ -73,8 +99,8 @@ module Scalingo
|
|
73
99
|
return @connection if @connection
|
74
100
|
|
75
101
|
# Missing token handling. Token expiration is handled in the `value` method.
|
76
|
-
unless
|
77
|
-
if
|
102
|
+
unless token_holder.token&.value
|
103
|
+
if config.raise_on_missing_authentication
|
78
104
|
raise Error::Unauthenticated
|
79
105
|
else
|
80
106
|
return unauthenticated_connection
|
@@ -85,10 +111,12 @@ module Scalingo
|
|
85
111
|
conn.response :json, content_type: /\bjson$/, parser_options: {symbolize_names: true}
|
86
112
|
conn.request :json
|
87
113
|
|
88
|
-
if
|
89
|
-
auth_header = Faraday::Request::Authorization.header "Bearer",
|
114
|
+
if token_holder.token&.value
|
115
|
+
auth_header = Faraday::Request::Authorization.header "Bearer", token_holder.token.value
|
90
116
|
conn.headers[Faraday::Request::Authorization::KEY] = auth_header
|
91
117
|
end
|
118
|
+
|
119
|
+
conn.adapter(config.faraday_adapter) if config.faraday_adapter
|
92
120
|
}
|
93
121
|
end
|
94
122
|
end
|
@@ -13,10 +13,20 @@ module Scalingo
|
|
13
13
|
|
14
14
|
def_delegator :client, :connection
|
15
15
|
|
16
|
+
def inspect
|
17
|
+
str = %(<#{self.class}:0x#{object_id.to_s(16)} base_url:"#{@client.url}" endpoints:)
|
18
|
+
|
19
|
+
methods = self.class.instance_methods - Scalingo::API::Endpoint.instance_methods
|
20
|
+
|
21
|
+
str << methods.to_s
|
22
|
+
str << ">"
|
23
|
+
str
|
24
|
+
end
|
25
|
+
|
16
26
|
private
|
17
27
|
|
18
|
-
def unpack(*
|
19
|
-
Response.unpack(client,
|
28
|
+
def unpack(*keys, &block)
|
29
|
+
Response.unpack(client, keys: keys, &block)
|
20
30
|
end
|
21
31
|
end
|
22
32
|
end
|
@@ -1,7 +1,9 @@
|
|
1
1
|
module Scalingo
|
2
2
|
module API
|
3
3
|
class Response
|
4
|
-
def self.unpack(client,
|
4
|
+
def self.unpack(client, key: nil, keys: nil, &block)
|
5
|
+
response = block.call
|
6
|
+
|
5
7
|
body = response.body
|
6
8
|
has_hash_body = body.present? && body.respond_to?(:key)
|
7
9
|
|
@@ -9,7 +11,10 @@ module Scalingo
|
|
9
11
|
meta = nil
|
10
12
|
|
11
13
|
if has_hash_body
|
12
|
-
|
14
|
+
keys = [key] if key.present?
|
15
|
+
|
16
|
+
data = body.dig(*keys) if response.success? && keys.present?
|
17
|
+
|
13
18
|
meta = body[:meta]
|
14
19
|
end
|
15
20
|
|
@@ -34,6 +39,10 @@ module Scalingo
|
|
34
39
|
@meta = meta
|
35
40
|
end
|
36
41
|
|
42
|
+
def inspect
|
43
|
+
%(<#{self.class}:0x#{object_id.to_s(16)} status:#{@status} data:#{@data} meta:#{@meta}>)
|
44
|
+
end
|
45
|
+
|
37
46
|
def successful?
|
38
47
|
status >= 200 && status < 300
|
39
48
|
end
|
data/lib/scalingo/auth/keys.rb
CHANGED
@@ -12,7 +12,7 @@ module Scalingo
|
|
12
12
|
&block
|
13
13
|
)
|
14
14
|
|
15
|
-
unpack(
|
15
|
+
unpack(:keys) { response }
|
16
16
|
end
|
17
17
|
|
18
18
|
def show(id, headers = nil, &block)
|
@@ -25,7 +25,7 @@ module Scalingo
|
|
25
25
|
&block
|
26
26
|
)
|
27
27
|
|
28
|
-
unpack(
|
28
|
+
unpack(:key) { response }
|
29
29
|
end
|
30
30
|
|
31
31
|
def create(payload, headers = nil, &block)
|
@@ -38,7 +38,7 @@ module Scalingo
|
|
38
38
|
&block
|
39
39
|
)
|
40
40
|
|
41
|
-
unpack(
|
41
|
+
unpack(:key) { response }
|
42
42
|
end
|
43
43
|
|
44
44
|
def destroy(id, headers = nil, &block)
|
@@ -50,7 +50,7 @@ module Scalingo
|
|
50
50
|
&block
|
51
51
|
)
|
52
52
|
|
53
|
-
unpack
|
53
|
+
unpack { response }
|
54
54
|
end
|
55
55
|
end
|
56
56
|
end
|
@@ -12,7 +12,7 @@ module Scalingo
|
|
12
12
|
&block
|
13
13
|
)
|
14
14
|
|
15
|
-
unpack(
|
15
|
+
unpack(:scm_integrations) { response }
|
16
16
|
end
|
17
17
|
|
18
18
|
def show(id, headers = nil, &block)
|
@@ -25,7 +25,7 @@ module Scalingo
|
|
25
25
|
&block
|
26
26
|
)
|
27
27
|
|
28
|
-
unpack(
|
28
|
+
unpack(:scm_integration) { response }
|
29
29
|
end
|
30
30
|
|
31
31
|
def create(payload, headers = nil, &block)
|
@@ -38,7 +38,7 @@ module Scalingo
|
|
38
38
|
&block
|
39
39
|
)
|
40
40
|
|
41
|
-
unpack(
|
41
|
+
unpack(:scm_integration) { response }
|
42
42
|
end
|
43
43
|
|
44
44
|
def destroy(id, headers = nil, &block)
|
@@ -51,7 +51,7 @@ module Scalingo
|
|
51
51
|
&block
|
52
52
|
)
|
53
53
|
|
54
|
-
unpack
|
54
|
+
unpack { response }
|
55
55
|
end
|
56
56
|
end
|
57
57
|
end
|
data/lib/scalingo/auth/tokens.rb
CHANGED
@@ -8,7 +8,7 @@ module Scalingo
|
|
8
8
|
authorization = Faraday::Request::BasicAuthentication.header("", token)
|
9
9
|
|
10
10
|
request_headers = {
|
11
|
-
Faraday::Request::Authorization::KEY => authorization
|
11
|
+
Faraday::Request::Authorization::KEY => authorization,
|
12
12
|
}
|
13
13
|
|
14
14
|
request_headers.update(headers) if headers
|
@@ -20,7 +20,7 @@ module Scalingo
|
|
20
20
|
&block
|
21
21
|
)
|
22
22
|
|
23
|
-
unpack
|
23
|
+
unpack { response }
|
24
24
|
end
|
25
25
|
|
26
26
|
def all(headers = nil, &block)
|
@@ -33,7 +33,7 @@ module Scalingo
|
|
33
33
|
&block
|
34
34
|
)
|
35
35
|
|
36
|
-
unpack(
|
36
|
+
unpack(:tokens) { response }
|
37
37
|
end
|
38
38
|
|
39
39
|
def create(payload, headers = nil, &block)
|
@@ -46,7 +46,7 @@ module Scalingo
|
|
46
46
|
&block
|
47
47
|
)
|
48
48
|
|
49
|
-
unpack(
|
49
|
+
unpack(:token) { response }
|
50
50
|
end
|
51
51
|
|
52
52
|
def renew(id, headers = nil, &block)
|
@@ -59,7 +59,7 @@ module Scalingo
|
|
59
59
|
&block
|
60
60
|
)
|
61
61
|
|
62
|
-
unpack(
|
62
|
+
unpack(:token) { response }
|
63
63
|
end
|
64
64
|
|
65
65
|
def destroy(id, headers = nil, &block)
|
@@ -72,7 +72,7 @@ module Scalingo
|
|
72
72
|
&block
|
73
73
|
)
|
74
74
|
|
75
|
-
unpack
|
75
|
+
unpack { response }
|
76
76
|
end
|
77
77
|
end
|
78
78
|
end
|
@@ -16,7 +16,7 @@ module Scalingo
|
|
16
16
|
&block
|
17
17
|
)
|
18
18
|
|
19
|
-
unpack(
|
19
|
+
unpack(:tfa) { response }
|
20
20
|
end
|
21
21
|
|
22
22
|
def initiate(provider = DEFAULT_PROVIDER, headers = nil, &block)
|
@@ -29,7 +29,7 @@ module Scalingo
|
|
29
29
|
&block
|
30
30
|
)
|
31
31
|
|
32
|
-
unpack(
|
32
|
+
unpack(:tfa) { response }
|
33
33
|
end
|
34
34
|
|
35
35
|
def validate(attempt, headers = nil, &block)
|
@@ -42,7 +42,7 @@ module Scalingo
|
|
42
42
|
&block
|
43
43
|
)
|
44
44
|
|
45
|
-
unpack(
|
45
|
+
unpack(:tfa) { response }
|
46
46
|
end
|
47
47
|
|
48
48
|
def disable(headers = nil, &block)
|
@@ -55,7 +55,7 @@ module Scalingo
|
|
55
55
|
&block
|
56
56
|
)
|
57
57
|
|
58
|
-
unpack(
|
58
|
+
unpack(:tfa) { response }
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
data/lib/scalingo/auth/user.rb
CHANGED
@@ -12,7 +12,7 @@ module Scalingo
|
|
12
12
|
&block
|
13
13
|
)
|
14
14
|
|
15
|
-
unpack(
|
15
|
+
unpack(:user) { response }
|
16
16
|
end
|
17
17
|
|
18
18
|
def update(payload, headers = nil, &block)
|
@@ -25,7 +25,20 @@ module Scalingo
|
|
25
25
|
&block
|
26
26
|
)
|
27
27
|
|
28
|
-
unpack(
|
28
|
+
unpack(:user) { response }
|
29
|
+
end
|
30
|
+
|
31
|
+
def stop_free_trial(headers = nil, &block)
|
32
|
+
data = nil
|
33
|
+
|
34
|
+
response = connection.post(
|
35
|
+
"users/stop_free_trial",
|
36
|
+
data,
|
37
|
+
headers,
|
38
|
+
&block
|
39
|
+
)
|
40
|
+
|
41
|
+
unpack { response }
|
29
42
|
end
|
30
43
|
end
|
31
44
|
end
|
@@ -9,6 +9,21 @@ module Scalingo
|
|
9
9
|
@raise_on_expired = raise_on_expired
|
10
10
|
end
|
11
11
|
|
12
|
+
def inspect
|
13
|
+
str = "<#{self.class}:0x#{object_id.to_s(16)} "
|
14
|
+
|
15
|
+
str << if expired?
|
16
|
+
"(expired) "
|
17
|
+
elsif expires_at.present?
|
18
|
+
"expires_at: #{expires_at} "
|
19
|
+
else
|
20
|
+
"(no expiration) "
|
21
|
+
end
|
22
|
+
|
23
|
+
str << %(value:"#{value}">)
|
24
|
+
str
|
25
|
+
end
|
26
|
+
|
12
27
|
def raise_on_expired?
|
13
28
|
@raise_on_expired
|
14
29
|
end
|
@@ -12,7 +12,7 @@ module Scalingo
|
|
12
12
|
&block
|
13
13
|
)
|
14
14
|
|
15
|
-
unpack(
|
15
|
+
unpack(:profile) { response }
|
16
16
|
end
|
17
17
|
|
18
18
|
def create(payload = {}, headers = nil, &block)
|
@@ -25,7 +25,7 @@ module Scalingo
|
|
25
25
|
&block
|
26
26
|
)
|
27
27
|
|
28
|
-
unpack(
|
28
|
+
unpack(:profile) { response }
|
29
29
|
end
|
30
30
|
|
31
31
|
def update(id, payload = {}, headers = nil, &block)
|
@@ -38,7 +38,7 @@ module Scalingo
|
|
38
38
|
&block
|
39
39
|
)
|
40
40
|
|
41
|
-
unpack(
|
41
|
+
unpack(:profile) { response }
|
42
42
|
end
|
43
43
|
|
44
44
|
alias_method :self, :show
|