scalingo 3.0.0 → 3.0.1

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: 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