scalingo 3.0.0 → 3.0.1

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: 888ac51dbfb37ca019f77fd142a1243719d957472802b57ab928020db57b5998
4
- data.tar.gz: 764d9825719123b3140a7caab2fa6a45b05669c83d70247cc689f524d4f4f49d
3
+ metadata.gz: 6d40c7b4678cc9197b5a458363ef014ef2bfd410777000c1f9556296384b8e05
4
+ data.tar.gz: b6805bfca83725d5a95321b1d60bee2112ca3c02643fb0dc6c3cc04245d779ad
5
5
  SHA512:
6
- metadata.gz: 02fc7e709e9fff36442f74727f71f01de94bdca37c307f59fb01f2bc837145d4c3c527e0c3633931789007baa79a1eb62effbd84d165c7d7456b76fdcfbff521
7
- data.tar.gz: 791a7f54c8fa380a5c96d8be8da56beb7f2ae517a69a7976abf92e4c43bbd293e5189cc0b2ac6c48ce73fed8ab172ddacde9788d4e9d10e073796a0cb4a3a4cb
6
+ metadata.gz: c5245c6052411b5cd2615616948a5768c17f608018dd30c24d4c3f6fe0c6c7ab0745f8171db011b70b5cc95d2be3a6b81ae08921d2f487f5b201682befae13e7
7
+ data.tar.gz: 3afeb0434dbb32079f4858f6e09317f4259618e925c2e09b0b0e3f595bc0d1d8ff0c94afdfd5ca75a6526e28fb43f99c318e6142a3413077dcbfc74614fb7bd1
@@ -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,6 +7,14 @@ 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
data/CHANGELOG.md CHANGED
@@ -1,4 +1,6 @@
1
- ## Unreleased
1
+ ## 3.0.1
2
+
3
+ * Internals: allow `unpack` to dig into nested structures
2
4
 
3
5
  ## 3.0.0
4
6
 
data/README.md CHANGED
@@ -144,3 +144,23 @@ scalingo.osc_fr1.apps.all # OR scalingo.region(:osc_fr1).apps.all
144
144
  # Preview the creation of an app on the default region
145
145
  scalingo.apps.create(name: "my-new-app", dry_run: true)
146
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
+ ```
@@ -25,8 +25,8 @@ module Scalingo
25
25
 
26
26
  private
27
27
 
28
- def unpack(key = nil, &block)
29
- Response.unpack(client, key: key, &block)
28
+ def unpack(*keys, &block)
29
+ Response.unpack(client, keys: keys, &block)
30
30
  end
31
31
  end
32
32
  end
@@ -1,7 +1,7 @@
1
1
  module Scalingo
2
2
  module API
3
3
  class Response
4
- def self.unpack(client, key: nil, &block)
4
+ def self.unpack(client, key: nil, keys: nil, &block)
5
5
  response = block.call
6
6
 
7
7
  body = response.body
@@ -11,7 +11,10 @@ module Scalingo
11
11
  meta = nil
12
12
 
13
13
  if has_hash_body
14
- data = body[key] if response.success? && key.present?
14
+ keys = [key] if key.present?
15
+
16
+ data = body.dig(*keys) if response.success? && keys.present?
17
+
15
18
  meta = body[:meta]
16
19
  end
17
20
 
@@ -1,3 +1,3 @@
1
1
  module Scalingo
2
- VERSION = "3.0.0"
2
+ VERSION = "3.0.1"
3
3
  end
data/scalingo.gemspec CHANGED
@@ -35,14 +35,15 @@ Gem::Specification.new do |s|
35
35
  s.test_files = Dir["spec/**/*_spec.rb"]
36
36
 
37
37
  s.add_dependency "activesupport", [">= 5", "< 7"]
38
- s.add_dependency "faraday", "~> 1.0.1"
39
- s.add_dependency "faraday_middleware", "~> 1.0.0"
38
+ s.add_dependency "faraday", "~> 1.0"
39
+ s.add_dependency "faraday_middleware", "~> 1.0"
40
40
  s.add_dependency "multi_json", ">= 1.0.3", "~> 1.0"
41
41
 
42
42
  s.add_development_dependency "bundler", "~> 2.0"
43
43
  s.add_development_dependency "rake", "~> 13.0"
44
44
  s.add_development_dependency "rspec", "~> 3.0"
45
- s.add_development_dependency "standard", "~> 0.10.1"
46
- s.add_development_dependency "pry", "~> 0.13.1"
47
- s.add_development_dependency "webmock", "~> 3.10.0"
45
+ s.add_development_dependency "standard", "~> 1.1.0"
46
+ s.add_development_dependency "rubocop-rspec"
47
+ s.add_development_dependency "pry", "~> 0.14.1"
48
+ s.add_development_dependency "webmock", "~> 3.12.2"
48
49
  end
@@ -79,11 +79,11 @@ RSpec.describe Scalingo::API::Client do
79
79
  expect(mock).to receive(:new).with(instance).and_return("1st").once
80
80
 
81
81
  # Not yet loaded...
82
- expect(instance.instance_variable_get(:"@handler")).to eq(nil)
82
+ expect(instance.instance_variable_get(:@handler)).to eq(nil)
83
83
  instance.handler
84
84
 
85
85
  # Memoized...
86
- expect(instance.instance_variable_get(:"@handler")).not_to eq(nil)
86
+ expect(instance.instance_variable_get(:@handler)).not_to eq(nil)
87
87
 
88
88
  # More calls won't try to perform more instanciations
89
89
  instance.handler
@@ -21,11 +21,25 @@ RSpec.describe Scalingo::API::Endpoint do
21
21
  end
22
22
 
23
23
  describe "unpack" do
24
- it "forwards unpack to Response" do
24
+ it "forwards unpack to Response without keys" do
25
25
  mock = proc { 1 }
26
26
 
27
- expect(Scalingo::API::Response).to receive(:unpack).with(client, key: :a, &mock).and_return(:d).once
27
+ expect(Scalingo::API::Response).to receive(:unpack).with(client, keys: [], &mock).and_return(:d).once
28
+ expect(subject.send(:unpack, &mock)).to eq :d
29
+ end
30
+
31
+ it "forwards unpack to Response with a single key" do
32
+ mock = proc { 1 }
33
+
34
+ expect(Scalingo::API::Response).to receive(:unpack).with(client, keys: [:a], &mock).and_return(:d).once
28
35
  expect(subject.send(:unpack, :a, &mock)).to eq :d
29
36
  end
37
+
38
+ it "forwards unpack to Response with many keys" do
39
+ mock = proc { 1 }
40
+
41
+ expect(Scalingo::API::Response).to receive(:unpack).with(client, keys: [:a, :b], &mock).and_return(:d).once
42
+ expect(subject.send(:unpack, :a, :b, &mock)).to eq :d
43
+ end
30
44
  end
31
45
  end
@@ -161,6 +161,22 @@ RSpec.describe Scalingo::API::Response do
161
161
  expect(object.meta).to eq nil
162
162
  end
163
163
 
164
+ it "with valid keys" do
165
+ object = described_class.unpack(client, keys: [:root, :key]) { response }
166
+
167
+ expect(object.data).to eq(:value)
168
+ expect(object.full_body).to eq body
169
+ expect(object.meta).to eq nil
170
+ end
171
+
172
+ it "with invalid keys" do
173
+ object = described_class.unpack(client, keys: [:root, :other]) { response }
174
+
175
+ expect(object.data).to eq nil
176
+ expect(object.full_body).to eq body
177
+ expect(object.meta).to eq nil
178
+ end
179
+
164
180
  context "with meta" do
165
181
  let(:body) {
166
182
  {root: {key: :value}, meta: {meta1: :value}}
@@ -51,7 +51,7 @@ RSpec.describe Scalingo::Client do
51
51
  context "with access token" do
52
52
  it "is successful with valid token" do
53
53
  fake_response = OpenStruct.new(
54
- "successful?": true,
54
+ successful?: true,
55
55
  data: {token: "response token"},
56
56
  )
57
57
 
@@ -64,7 +64,7 @@ RSpec.describe Scalingo::Client do
64
64
 
65
65
  it "fails with invalid token" do
66
66
  fake_response = OpenStruct.new(
67
- "successful?": false,
67
+ successful?: false,
68
68
  )
69
69
 
70
70
  expect(subject.auth.tokens).to receive(:exchange).and_return(fake_response)
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: scalingo
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.0
4
+ version: 3.0.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Leo Unbekandt
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: exe
11
11
  cert_chain: []
12
- date: 2020-12-02 00:00:00.000000000 Z
12
+ date: 2021-06-16 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: activesupport
@@ -37,28 +37,28 @@ dependencies:
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 1.0.1
40
+ version: '1.0'
41
41
  type: :runtime
42
42
  prerelease: false
43
43
  version_requirements: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: 1.0.1
47
+ version: '1.0'
48
48
  - !ruby/object:Gem::Dependency
49
49
  name: faraday_middleware
50
50
  requirement: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: 1.0.0
54
+ version: '1.0'
55
55
  type: :runtime
56
56
  prerelease: false
57
57
  version_requirements: !ruby/object:Gem::Requirement
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 1.0.0
61
+ version: '1.0'
62
62
  - !ruby/object:Gem::Dependency
63
63
  name: multi_json
64
64
  requirement: !ruby/object:Gem::Requirement
@@ -127,42 +127,56 @@ dependencies:
127
127
  requirements:
128
128
  - - "~>"
129
129
  - !ruby/object:Gem::Version
130
- version: 0.10.1
130
+ version: 1.1.0
131
131
  type: :development
132
132
  prerelease: false
133
133
  version_requirements: !ruby/object:Gem::Requirement
134
134
  requirements:
135
135
  - - "~>"
136
136
  - !ruby/object:Gem::Version
137
- version: 0.10.1
137
+ version: 1.1.0
138
+ - !ruby/object:Gem::Dependency
139
+ name: rubocop-rspec
140
+ requirement: !ruby/object:Gem::Requirement
141
+ requirements:
142
+ - - ">="
143
+ - !ruby/object:Gem::Version
144
+ version: '0'
145
+ type: :development
146
+ prerelease: false
147
+ version_requirements: !ruby/object:Gem::Requirement
148
+ requirements:
149
+ - - ">="
150
+ - !ruby/object:Gem::Version
151
+ version: '0'
138
152
  - !ruby/object:Gem::Dependency
139
153
  name: pry
140
154
  requirement: !ruby/object:Gem::Requirement
141
155
  requirements:
142
156
  - - "~>"
143
157
  - !ruby/object:Gem::Version
144
- version: 0.13.1
158
+ version: 0.14.1
145
159
  type: :development
146
160
  prerelease: false
147
161
  version_requirements: !ruby/object:Gem::Requirement
148
162
  requirements:
149
163
  - - "~>"
150
164
  - !ruby/object:Gem::Version
151
- version: 0.13.1
165
+ version: 0.14.1
152
166
  - !ruby/object:Gem::Dependency
153
167
  name: webmock
154
168
  requirement: !ruby/object:Gem::Requirement
155
169
  requirements:
156
170
  - - "~>"
157
171
  - !ruby/object:Gem::Version
158
- version: 3.10.0
172
+ version: 3.12.2
159
173
  type: :development
160
174
  prerelease: false
161
175
  version_requirements: !ruby/object:Gem::Requirement
162
176
  requirements:
163
177
  - - "~>"
164
178
  - !ruby/object:Gem::Version
165
- version: 3.10.0
179
+ version: 3.12.2
166
180
  description: Ruby client library for the web APIs of Scalingo, a european Platform-as-a-Service
167
181
  email:
168
182
  - leo@scalingo.com
@@ -171,9 +185,9 @@ executables: []
171
185
  extensions: []
172
186
  extra_rdoc_files: []
173
187
  files:
188
+ - ".github/workflows/ruby.yml"
174
189
  - ".gitignore"
175
190
  - ".rubocop.yml"
176
- - ".travis.yml"
177
191
  - CHANGELOG.md
178
192
  - Gemfile
179
193
  - LICENSE.txt
data/.travis.yml DELETED
@@ -1,24 +0,0 @@
1
- language: ruby
2
- cache: bundler
3
- rvm:
4
- - 2.5.8
5
- - 2.6.6
6
- - 2.7.2
7
- before_install:
8
- - gem install bundler
9
- install: bundle update --jobs=3 --retry=3
10
-
11
- stages:
12
- - lint
13
- - test
14
-
15
- jobs:
16
- include:
17
- - stage: lint
18
- name: "Linter"
19
- language: ruby
20
- rvm: 2.7.1
21
- before_install:
22
- - gem install bundler
23
- install: bundle update --jobs=3 --retry=3
24
- script: bundle exec rubocop