hcloud 1.0.2 → 1.0.3

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: 18d2c416750c8d3b526ef4611036bab5fad744854d4dbe87ff0d309e464048bb
4
- data.tar.gz: 29025be3e528fbc3a57148dce54f0e0c278acb565c47f79e6066d7f6f76c8c55
3
+ metadata.gz: a461edd72b44398c79ea0fb49a47457864551df5157572f9ce7e41fb8761b2c1
4
+ data.tar.gz: 8dcfe208c66dd462d444da2cdcc6e5ef65fa5595cea900c7406fdff0e5da8f7b
5
5
  SHA512:
6
- metadata.gz: 46cbd7f01f5ac6854bb30b04976a970653898c5d775e070e328c7e2bae97320a08a453fea8cf31740ee53d16df0f7810601b6f69c5ef24574867d61a3a73bb32
7
- data.tar.gz: 4a7e9f58c86d49419a4c686f28ef20896342367d7d227cf436953bc49eb44a93fe4f154a1a15e1e56293a42ffcfe369c9bae76b74cf9e1c3d99c44bb957a90e7
6
+ metadata.gz: eabc376f9c8d3fe45a8b09aa30195a8d877cdf7bfa18c2a9dab93d19be45e418a745a270aba90213ccf9adf7eee772a6880e9a8e6cacf20bbe26fc5410985438
7
+ data.tar.gz: 5e4bb090f48e683bbf0895d091ed8b6e74bb53f8d1f965638a5c8749241d1e562b5e9387dfe4306570666dd9b88c10fae00446a52723ff62b663caf6646707b8
@@ -0,0 +1,32 @@
1
+ name: hcloud-ruby ci
2
+ on: [push]
3
+ jobs:
4
+ lint:
5
+ runs-on: ubuntu-latest
6
+ steps:
7
+ - uses: actions/checkout@v2
8
+ - name: Setup Ruby
9
+ uses: ruby/setup-ruby@v1
10
+ with:
11
+ ruby-version: 2.7
12
+ bundler-cache: true
13
+ - name: Run rubocop
14
+ run: bundle exec rubocop --parallel
15
+
16
+ test:
17
+ runs-on: ubuntu-latest
18
+ strategy:
19
+ fail-fast: false
20
+ matrix:
21
+ ruby-version: [ '2.7', '3.0', '3.1' ]
22
+ steps:
23
+ - uses: actions/checkout@v2
24
+ - name: Setup Ruby
25
+ uses: ruby/setup-ruby@v1
26
+ with:
27
+ ruby-version: ${{ matrix.ruby-version }}
28
+ bundler-cache: true
29
+ - name: Run double tests
30
+ run: bundle exec rspec -t doubles --order rand
31
+ - name: Run legacy tests
32
+ run: LEGACY_TESTS=y bundle exec rspec -t ~doubles
data/.rubocop.yml CHANGED
@@ -1,5 +1,8 @@
1
1
  inherit_from: .rubocop_todo.yml
2
2
 
3
+ AllCops:
4
+ TargetRubyVersion: 2.7
5
+
3
6
  Style/GlobalVars:
4
7
  Exclude:
5
8
  - 'spec/**/*.rb'
@@ -10,7 +13,7 @@ Style/Documentation:
10
13
  Naming/ConstantName:
11
14
  Enabled: false
12
15
 
13
- Lint/HandleExceptions:
16
+ Lint/SuppressedException:
14
17
  Enabled: false
15
18
 
16
19
  Lint/AssignmentInCondition:
data/.rubocop_todo.yml CHANGED
@@ -39,7 +39,7 @@ Metrics/PerceivedComplexity:
39
39
  # Offense count: 3
40
40
  # Configuration parameters: MinNameLength, AllowNamesEndingInNumbers, AllowedNames, ForbiddenNames.
41
41
  # AllowedNames: io, id, to, by, on, in, at, ip, db
42
- Naming/UncommunicativeMethodParamName:
42
+ Naming/MethodParameterName:
43
43
  Exclude:
44
44
  - 'lib/hcloud/abstract_resource.rb'
45
45
  - 'spec/fake_service/action.rb'
data/CHANGELOG.md CHANGED
@@ -1,6 +1,42 @@
1
- # Change Log
1
+ # Changelog
2
+
3
+ ## [v1.0.3](https://github.com/tonobo/hcloud-ruby/tree/v1.0.3) (2022-02-17)
4
+
5
+ [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v1.0.2...v1.0.3)
6
+
7
+ **Closed issues:**
8
+
9
+ - Support Ruby 3.0+ [\#18](https://github.com/tonobo/hcloud-ruby/issues/18)
10
+
11
+ **Merged pull requests:**
12
+
13
+ - lib: adjust code to work with 3.x ruby versions [\#21](https://github.com/tonobo/hcloud-ruby/pull/21) ([Kjarrigan](https://github.com/Kjarrigan))
14
+ - ci: add github workflow [\#20](https://github.com/tonobo/hcloud-ruby/pull/20) ([RaphaelPour](https://github.com/RaphaelPour))
15
+
16
+ ## [v1.0.2](https://github.com/tonobo/hcloud-ruby/tree/v1.0.2) (2020-02-13)
17
+
18
+ [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v1.0.1...v1.0.2)
19
+
20
+ **Closed issues:**
21
+
22
+ - Thank you! [\#14](https://github.com/tonobo/hcloud-ruby/issues/14)
23
+
24
+ ## [v1.0.1](https://github.com/tonobo/hcloud-ruby/tree/v1.0.1) (2020-02-12)
25
+
26
+ [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v1.0.0...v1.0.1)
27
+
28
+ ## [v1.0.0](https://github.com/tonobo/hcloud-ruby/tree/v1.0.0) (2019-10-22)
29
+
30
+ [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v0.1.2...v1.0.0)
31
+
32
+ **Merged pull requests:**
33
+
34
+ - Refactor resource handling [\#15](https://github.com/tonobo/hcloud-ruby/pull/15) ([tonobo](https://github.com/tonobo))
35
+ - Development [\#13](https://github.com/tonobo/hcloud-ruby/pull/13) ([tonobo](https://github.com/tonobo))
36
+ - Mention destroy instead of delete. [\#10](https://github.com/tonobo/hcloud-ruby/pull/10) ([FloHeinle](https://github.com/FloHeinle))
2
37
 
3
38
  ## [v0.1.2](https://github.com/tonobo/hcloud-ruby/tree/v0.1.2) (2018-02-27)
39
+
4
40
  [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v0.1.1...v0.1.2)
5
41
 
6
42
  **Closed issues:**
@@ -14,6 +50,7 @@
14
50
  - Enhance test suite [\#5](https://github.com/tonobo/hcloud-ruby/pull/5) ([tonobo](https://github.com/tonobo))
15
51
 
16
52
  ## [v0.1.1](https://github.com/tonobo/hcloud-ruby/tree/v0.1.1) (2018-02-26)
53
+
17
54
  [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v0.1.0...v0.1.1)
18
55
 
19
56
  **Merged pull requests:**
@@ -21,6 +58,7 @@
21
58
  - Floating IP context [\#4](https://github.com/tonobo/hcloud-ruby/pull/4) ([MarkusFreitag](https://github.com/MarkusFreitag))
22
59
 
23
60
  ## [v0.1.0](https://github.com/tonobo/hcloud-ruby/tree/v0.1.0) (2018-02-25)
61
+
24
62
  [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v0.1.0.pre.alpha4...v0.1.0)
25
63
 
26
64
  **Closed issues:**
@@ -32,9 +70,11 @@
32
70
  - Pagination proposal [\#3](https://github.com/tonobo/hcloud-ruby/pull/3) ([tonobo](https://github.com/tonobo))
33
71
 
34
72
  ## [v0.1.0.pre.alpha4](https://github.com/tonobo/hcloud-ruby/tree/v0.1.0.pre.alpha4) (2018-01-30)
73
+
35
74
  [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v0.1.0.pre.alpha3...v0.1.0.pre.alpha4)
36
75
 
37
76
  ## [v0.1.0.pre.alpha3](https://github.com/tonobo/hcloud-ruby/tree/v0.1.0.pre.alpha3) (2018-01-29)
77
+
38
78
  [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v0.1.0.pre.alpha2...v0.1.0.pre.alpha3)
39
79
 
40
80
  **Merged pull requests:**
@@ -42,12 +82,17 @@
42
82
  - set needed gems to runtime dependency [\#1](https://github.com/tonobo/hcloud-ruby/pull/1) ([bastelfreak](https://github.com/bastelfreak))
43
83
 
44
84
  ## [v0.1.0.pre.alpha2](https://github.com/tonobo/hcloud-ruby/tree/v0.1.0.pre.alpha2) (2018-01-28)
85
+
45
86
  [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v0.1.0.pre.alpha1...v0.1.0.pre.alpha2)
46
87
 
47
88
  ## [v0.1.0.pre.alpha1](https://github.com/tonobo/hcloud-ruby/tree/v0.1.0.pre.alpha1) (2018-01-28)
89
+
48
90
  [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/v0.1.0.pre.alpha0...v0.1.0.pre.alpha1)
49
91
 
50
92
  ## [v0.1.0.pre.alpha0](https://github.com/tonobo/hcloud-ruby/tree/v0.1.0.pre.alpha0) (2018-01-27)
51
93
 
94
+ [Full Changelog](https://github.com/tonobo/hcloud-ruby/compare/7f85d9b10b15c275f44f57d1b6fb6f122d95b5aa...v0.1.0.pre.alpha0)
95
+
96
+
52
97
 
53
- \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)*
98
+ \* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
data/Gemfile.lock CHANGED
@@ -1,125 +1,131 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- hcloud (0.1.2)
5
- activesupport
4
+ hcloud (1.0.3)
5
+ activemodel
6
+ activesupport (= 6.1.4.4)
6
7
  oj
7
8
  typhoeus
8
9
 
9
10
  GEM
10
11
  remote: https://rubygems.org/
11
12
  specs:
12
- activemodel (6.0.0)
13
- activesupport (= 6.0.0)
14
- activesupport (6.0.0)
13
+ activemodel (6.1.4.4)
14
+ activesupport (= 6.1.4.4)
15
+ activesupport (6.1.4.4)
15
16
  concurrent-ruby (~> 1.0, >= 1.0.2)
16
- i18n (>= 0.7, < 2)
17
- minitest (~> 5.1)
18
- tzinfo (~> 1.1)
19
- zeitwerk (~> 2.1, >= 2.1.8)
20
- addressable (2.7.0)
17
+ i18n (>= 1.6, < 2)
18
+ minitest (>= 5.1)
19
+ tzinfo (~> 2.0)
20
+ zeitwerk (~> 2.3)
21
+ addressable (2.8.0)
21
22
  public_suffix (>= 2.0.2, < 5.0)
22
- ast (2.4.0)
23
- axiom-types (0.1.1)
24
- descendants_tracker (~> 0.0.4)
25
- ice_nine (~> 0.11.0)
26
- thread_safe (~> 0.3, >= 0.3.1)
27
- builder (3.2.3)
28
- codecov (0.1.15)
29
- json
30
- simplecov
31
- url
32
- coderay (1.1.2)
33
- coercible (1.0.0)
34
- descendants_tracker (~> 0.0.1)
35
- concurrent-ruby (1.1.5)
36
- crack (0.4.3)
37
- safe_yaml (~> 1.0.0)
38
- descendants_tracker (0.0.4)
39
- thread_safe (~> 0.3, >= 0.3.1)
40
- diff-lcs (1.3)
41
- docile (1.3.2)
42
- equalizer (0.0.11)
43
- ethon (0.12.0)
44
- ffi (>= 1.3.0)
45
- faker (2.6.0)
46
- i18n (>= 1.6, < 1.8)
47
- ffi (1.11.1)
48
- grape (1.2.4)
23
+ ast (2.4.2)
24
+ builder (3.2.4)
25
+ codecov (0.6.0)
26
+ simplecov (>= 0.15, < 0.22)
27
+ coderay (1.1.3)
28
+ concurrent-ruby (1.1.9)
29
+ crack (0.4.5)
30
+ rexml
31
+ diff-lcs (1.5.0)
32
+ docile (1.4.0)
33
+ dry-configurable (0.14.0)
34
+ concurrent-ruby (~> 1.0)
35
+ dry-core (~> 0.6)
36
+ dry-container (0.9.0)
37
+ concurrent-ruby (~> 1.0)
38
+ dry-configurable (~> 0.13, >= 0.13.0)
39
+ dry-core (0.7.1)
40
+ concurrent-ruby (~> 1.0)
41
+ dry-inflector (0.2.1)
42
+ dry-logic (1.2.0)
43
+ concurrent-ruby (~> 1.0)
44
+ dry-core (~> 0.5, >= 0.5)
45
+ dry-types (1.5.1)
46
+ concurrent-ruby (~> 1.0)
47
+ dry-container (~> 0.3)
48
+ dry-core (~> 0.5, >= 0.5)
49
+ dry-inflector (~> 0.1, >= 0.1.2)
50
+ dry-logic (~> 1.0, >= 1.0.2)
51
+ ethon (0.15.0)
52
+ ffi (>= 1.15.0)
53
+ faker (2.19.0)
54
+ i18n (>= 1.6, < 2)
55
+ ffi (1.15.5)
56
+ grape (1.6.2)
49
57
  activesupport
50
58
  builder
59
+ dry-types (>= 1.1)
51
60
  mustermann-grape (~> 1.0.0)
52
61
  rack (>= 1.3.0)
53
62
  rack-accept
54
- virtus (>= 1.0.0)
55
- hashdiff (1.0.0)
56
- i18n (1.7.0)
63
+ hashdiff (1.0.1)
64
+ i18n (1.10.0)
57
65
  concurrent-ruby (~> 1.0)
58
- ice_nine (0.11.2)
59
- jaro_winkler (1.5.3)
60
- json (2.2.0)
61
- method_source (0.9.2)
62
- minitest (5.12.2)
63
- mustermann (1.0.3)
64
- mustermann-grape (1.0.0)
65
- mustermann (~> 1.0.0)
66
- oj (3.9.2)
67
- parallel (1.18.0)
68
- parser (2.6.5.0)
69
- ast (~> 2.4.0)
70
- pry (0.12.2)
71
- coderay (~> 1.1.0)
72
- method_source (~> 0.9.0)
73
- public_suffix (4.0.1)
74
- rack (2.0.7)
66
+ method_source (1.0.0)
67
+ minitest (5.15.0)
68
+ mustermann (1.1.1)
69
+ ruby2_keywords (~> 0.0.1)
70
+ mustermann-grape (1.0.1)
71
+ mustermann (>= 1.0.0)
72
+ oj (3.13.11)
73
+ parallel (1.21.0)
74
+ parser (3.1.0.0)
75
+ ast (~> 2.4.1)
76
+ pry (0.14.1)
77
+ coderay (~> 1.1)
78
+ method_source (~> 1.0)
79
+ public_suffix (4.0.6)
80
+ rack (2.2.3)
75
81
  rack-accept (0.4.5)
76
82
  rack (>= 0.4)
77
- rainbow (3.0.0)
78
- rake (13.0.0)
79
- rspec (3.9.0)
80
- rspec-core (~> 3.9.0)
81
- rspec-expectations (~> 3.9.0)
82
- rspec-mocks (~> 3.9.0)
83
- rspec-core (3.9.0)
84
- rspec-support (~> 3.9.0)
85
- rspec-expectations (3.9.0)
83
+ rainbow (3.1.1)
84
+ rake (13.0.6)
85
+ regexp_parser (2.2.1)
86
+ rexml (3.2.5)
87
+ rspec (3.11.0)
88
+ rspec-core (~> 3.11.0)
89
+ rspec-expectations (~> 3.11.0)
90
+ rspec-mocks (~> 3.11.0)
91
+ rspec-core (3.11.0)
92
+ rspec-support (~> 3.11.0)
93
+ rspec-expectations (3.11.0)
86
94
  diff-lcs (>= 1.2.0, < 2.0)
87
- rspec-support (~> 3.9.0)
88
- rspec-mocks (3.9.0)
95
+ rspec-support (~> 3.11.0)
96
+ rspec-mocks (3.11.0)
89
97
  diff-lcs (>= 1.2.0, < 2.0)
90
- rspec-support (~> 3.9.0)
91
- rspec-support (3.9.0)
92
- rubocop (0.75.1)
93
- jaro_winkler (~> 1.5.1)
98
+ rspec-support (~> 3.11.0)
99
+ rspec-support (3.11.0)
100
+ rubocop (1.25.1)
94
101
  parallel (~> 1.10)
95
- parser (>= 2.6)
102
+ parser (>= 3.1.0.0)
96
103
  rainbow (>= 2.2.2, < 4.0)
104
+ regexp_parser (>= 1.8, < 3.0)
105
+ rexml
106
+ rubocop-ast (>= 1.15.1, < 2.0)
97
107
  ruby-progressbar (~> 1.7)
98
- unicode-display_width (>= 1.4.0, < 1.7)
99
- ruby-progressbar (1.10.1)
100
- safe_yaml (1.0.5)
101
- simplecov (0.17.1)
108
+ unicode-display_width (>= 1.4.0, < 3.0)
109
+ rubocop-ast (1.15.2)
110
+ parser (>= 3.0.1.1)
111
+ ruby-progressbar (1.11.0)
112
+ ruby2_keywords (0.0.5)
113
+ simplecov (0.21.2)
102
114
  docile (~> 1.1)
103
- json (>= 1.8, < 3)
104
- simplecov-html (~> 0.10.0)
105
- simplecov-html (0.10.2)
106
- thread_safe (0.3.6)
107
- typhoeus (1.3.1)
115
+ simplecov-html (~> 0.11)
116
+ simplecov_json_formatter (~> 0.1)
117
+ simplecov-html (0.12.3)
118
+ simplecov_json_formatter (0.1.4)
119
+ typhoeus (1.4.0)
108
120
  ethon (>= 0.9.0)
109
- tzinfo (1.2.5)
110
- thread_safe (~> 0.1)
111
- unicode-display_width (1.6.0)
112
- url (0.3.2)
113
- virtus (1.0.5)
114
- axiom-types (~> 0.1)
115
- coercible (~> 1.0)
116
- descendants_tracker (~> 0.0, >= 0.0.3)
117
- equalizer (~> 0.0, >= 0.0.9)
118
- webmock (3.7.6)
119
- addressable (>= 2.3.6)
121
+ tzinfo (2.0.4)
122
+ concurrent-ruby (~> 1.0)
123
+ unicode-display_width (2.1.0)
124
+ webmock (3.14.0)
125
+ addressable (>= 2.8.0)
120
126
  crack (>= 0.3.2)
121
127
  hashdiff (>= 0.4.0, < 2.0.0)
122
- zeitwerk (2.2.0)
128
+ zeitwerk (2.5.4)
123
129
 
124
130
  PLATFORMS
125
131
  ruby
@@ -127,7 +133,7 @@ PLATFORMS
127
133
 
128
134
  DEPENDENCIES
129
135
  activemodel
130
- activesupport
136
+ activesupport (= 6.1.4.4)
131
137
  bundler
132
138
  codecov
133
139
  faker
@@ -140,4 +146,4 @@ DEPENDENCIES
140
146
  webmock
141
147
 
142
148
  BUNDLED WITH
143
- 1.17.3
149
+ 2.3.7
data/hcloud.gemspec CHANGED
@@ -7,13 +7,15 @@ require 'hcloud/version'
7
7
  Gem::Specification.new do |spec|
8
8
  spec.name = 'hcloud'
9
9
  spec.version = Hcloud::VERSION
10
- spec.authors = ['Tim Foerster']
11
- spec.email = ['github@moo.gl']
10
+ spec.authors = ['Tim Foerster', 'Raphael Pour']
11
+ spec.email = ['github@moo.gl', 'rubygems@evilcookie.de']
12
12
 
13
13
  spec.summary = 'HetznerCloud native Ruby client'
14
- spec.homepage = 'https://github.com/tonobo/hcloud'
14
+ spec.homepage = 'https://github.com/tonobo/hcloud-ruby'
15
15
 
16
- spec.files = `git ls-files -z`.split("\x0").reject do |f|
16
+ spec.required_ruby_version = '>= 2.7.0'
17
+
18
+ spec.files = `git ls-files -z`.split("\x0").reject do |f|
17
19
  f.match(%r{^(test|spec|features)/})
18
20
  end
19
21
  spec.bindir = 'exe'
@@ -21,14 +23,14 @@ Gem::Specification.new do |spec|
21
23
  spec.require_paths = ['lib']
22
24
 
23
25
  spec.add_development_dependency 'activemodel'
24
- spec.add_development_dependency 'activesupport'
26
+ spec.add_development_dependency 'activesupport', '6.1.4.4'
25
27
  spec.add_development_dependency 'bundler'
26
28
  spec.add_development_dependency 'grape'
27
29
  spec.add_development_dependency 'rake'
28
30
  spec.add_development_dependency 'rspec'
29
31
  spec.add_development_dependency 'webmock'
30
32
  spec.add_runtime_dependency 'activemodel'
31
- spec.add_runtime_dependency 'activesupport'
33
+ spec.add_runtime_dependency 'activesupport', '6.1.4.4'
32
34
  spec.add_runtime_dependency 'oj'
33
35
  spec.add_runtime_dependency 'typhoeus'
34
36
  end
@@ -66,8 +66,8 @@ module Hcloud
66
66
  where
67
67
  end
68
68
 
69
- def where(**kwargs)
70
- kwargs.keys.each do |key|
69
+ def where(kwargs = {})
70
+ kwargs.each_key do |key|
71
71
  keys = self.class.filter_attributes.map(&:to_s)
72
72
  next if keys.include?(key.to_s)
73
73
 
@@ -117,16 +117,16 @@ module Hcloud
117
117
  def order(*sort)
118
118
  _dup :@order,
119
119
  begin
120
- sort.flat_map do |s|
121
- case s
122
- when Symbol, String then s.to_s
123
- when Hash then s.map { |k, v| "#{k}:#{v}" }
124
- else
125
- raise ArgumentError,
126
- "Unable to resolve type for given #{s.inspect} from #{sort}"
120
+ sort.flat_map do |s|
121
+ case s
122
+ when Symbol, String then s.to_s
123
+ when Hash then s.map { |k, v| "#{k}:#{v}" }
124
+ else
125
+ raise ArgumentError,
126
+ "Unable to resolve type for given #{s.inspect} from #{sort}"
127
+ end
127
128
  end
128
129
  end
129
- end
130
130
  end
131
131
 
132
132
  def run
@@ -138,10 +138,8 @@ module Hcloud
138
138
  )
139
139
  end
140
140
 
141
- def each
142
- run.each do |member|
143
- yield(member)
144
- end
141
+ def each(&block)
142
+ run.each(&block)
145
143
  end
146
144
 
147
145
  # this is just to keep the actual bevahior
@@ -195,14 +193,13 @@ module Hcloud
195
193
  r.compact.join('&')
196
194
  end
197
195
 
196
+ # rubocop:disable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
198
197
  def __entries__(path, **o)
199
198
  first_page = request(path, o.merge(ep: ep(per_page: 1, page: 1))).run
200
199
  total_entries = first_page.pagination.total_entries
201
200
  return [first_page] if total_entries <= 1 || @limit == 1
202
201
 
203
- unless @limit.nil?
204
- total_entries = @limit if total_entries > @limit
205
- end
202
+ total_entries = @limit if !@limit.nil? && (total_entries > @limit)
206
203
  pages = total_entries / Client::MAX_ENTRIES_PER_PAGE
207
204
  pages += 1 if (total_entries % Client::MAX_ENTRIES_PER_PAGE).positive?
208
205
  pages.times.map do |page|
@@ -215,5 +212,6 @@ module Hcloud
215
212
  end
216
213
  end
217
214
  end
215
+ # rubocop:enable Metrics/CyclomaticComplexity, Metrics/PerceivedComplexity
218
216
  end
219
217
  end
data/lib/hcloud/client.rb CHANGED
@@ -20,6 +20,7 @@ module Hcloud
20
20
  end
21
21
 
22
22
  attr_reader :token, :auto_pagination, :hydra, :user_agent
23
+
23
24
  def initialize(token:, auto_pagination: false, concurrency: 20, user_agent: nil)
24
25
  @token = token
25
26
  @user_agent = user_agent || "hcloud-ruby v#{VERSION}"
@@ -98,7 +99,7 @@ module Hcloud
98
99
  end
99
100
 
100
101
  class ResourceFuture < Delegator
101
- def initialize(request)
102
+ def initialize(request) # rubocop:disable Lint/MissingSuper
102
103
  @request = request
103
104
  end
104
105
 
@@ -107,7 +108,7 @@ module Hcloud
107
108
  end
108
109
  end
109
110
 
110
- def prepare_request(url, **args, &block)
111
+ def prepare_request(url, args = {}, &block)
111
112
  req = request(url, **args.merge(block: block))
112
113
  return req.run.resource unless concurrent?
113
114
 
@@ -115,7 +116,7 @@ module Hcloud
115
116
  ResourceFuture.new(req)
116
117
  end
117
118
 
118
- def request(path, **options) # rubocop:disable Metrics/MethodLength
119
+ def request(path, options = {}) # rubocop:disable Metrics/MethodLength
119
120
  hcloud_attributes = TyphoeusExt.collect_attributes(options)
120
121
  if x = options.delete(:j)
121
122
  options[:body] = Oj.dump(x, mode: :compat)
@@ -127,7 +128,7 @@ module Hcloud
127
128
  q << x.to_param
128
129
  end
129
130
  path = path.dup
130
- path << '?' + q.join('&')
131
+ path << "?#{q.join('&')}"
131
132
  r = Typhoeus::Request.new(
132
133
  "https://api.hetzner.cloud/v1/#{path}",
133
134
  {
@@ -53,7 +53,7 @@ module Hcloud
53
53
 
54
54
  def protectable(*args)
55
55
  define_method(:change_protection) do |**kwargs|
56
- kwargs.keys.each do |key|
56
+ kwargs.each_key do |key|
57
57
  next if args.map(&:to_s).include? key.to_s
58
58
 
59
59
  raise ArgumentError, "#{key} not an allowed protection mode (allowed: #{args})"
@@ -94,7 +94,12 @@ module Hcloud
94
94
 
95
95
  attr_accessor :response
96
96
 
97
- def initialize(client = nil, **kwargs)
97
+ def initialize(client = nil, kwargs = {})
98
+ if client.is_a?(Hash)
99
+ kwargs = client
100
+ client = nil
101
+ end
102
+
98
103
  @client = client
99
104
  _load(kwargs)
100
105
  end
@@ -14,7 +14,7 @@ module Hcloud
14
14
 
15
15
  has_actions
16
16
 
17
- def add_subnet(type:, ip_range: nil, network_zone:)
17
+ def add_subnet(type:, network_zone:, ip_range: nil)
18
18
  prepare_request('actions/add_subnet', j: COLLECT_ARGS.call(__method__, binding))
19
19
  end
20
20
 
@@ -8,10 +8,9 @@ module Hcloud
8
8
 
9
9
  def create(name:,
10
10
  server_type:,
11
- datacenter: nil,
11
+ image:, datacenter: nil,
12
12
  location: nil,
13
13
  start_after_create: nil,
14
- image:,
15
14
  ssh_keys: [],
16
15
  networks: [],
17
16
  user_data: nil)
@@ -30,16 +30,14 @@ module Hcloud
30
30
  def parsed_json
31
31
  return {} if code == 204
32
32
 
33
- @parsed_json ||= begin
34
- Oj.load(body, symbol_keys: true).tap do |json|
35
- next unless request.hydra
36
-
37
- check_for_error(
38
- e_code: json.to_h.dig(:error, :code),
39
- e_message: json.to_h.dig(:error, :message)
40
- )
41
- end
42
- end
33
+ @parsed_json ||= Oj.load(body, symbol_keys: true).tap do |json|
34
+ next unless request.hydra
35
+
36
+ check_for_error(
37
+ e_code: json.to_h.dig(:error, :code),
38
+ e_message: json.to_h.dig(:error, :message)
39
+ )
40
+ end
43
41
  rescue StandardError
44
42
  raise Error::UnexpectedError, "unable to load body: #{body}"
45
43
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Hcloud
4
- VERSION = '1.0.2'
4
+ VERSION = '1.0.3'
5
5
  end
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hcloud
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.2
4
+ version: 1.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Tim Foerster
8
- autorequire:
8
+ - Raphael Pour
9
+ autorequire:
9
10
  bindir: exe
10
11
  cert_chain: []
11
- date: 2020-02-13 00:00:00.000000000 Z
12
+ date: 2022-02-17 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: activemodel
@@ -28,16 +29,16 @@ dependencies:
28
29
  name: activesupport
29
30
  requirement: !ruby/object:Gem::Requirement
30
31
  requirements:
31
- - - ">="
32
+ - - '='
32
33
  - !ruby/object:Gem::Version
33
- version: '0'
34
+ version: 6.1.4.4
34
35
  type: :development
35
36
  prerelease: false
36
37
  version_requirements: !ruby/object:Gem::Requirement
37
38
  requirements:
38
- - - ">="
39
+ - - '='
39
40
  - !ruby/object:Gem::Version
40
- version: '0'
41
+ version: 6.1.4.4
41
42
  - !ruby/object:Gem::Dependency
42
43
  name: bundler
43
44
  requirement: !ruby/object:Gem::Requirement
@@ -126,16 +127,16 @@ dependencies:
126
127
  name: activesupport
127
128
  requirement: !ruby/object:Gem::Requirement
128
129
  requirements:
129
- - - ">="
130
+ - - '='
130
131
  - !ruby/object:Gem::Version
131
- version: '0'
132
+ version: 6.1.4.4
132
133
  type: :runtime
133
134
  prerelease: false
134
135
  version_requirements: !ruby/object:Gem::Requirement
135
136
  requirements:
136
- - - ">="
137
+ - - '='
137
138
  - !ruby/object:Gem::Version
138
- version: '0'
139
+ version: 6.1.4.4
139
140
  - !ruby/object:Gem::Dependency
140
141
  name: oj
141
142
  requirement: !ruby/object:Gem::Requirement
@@ -164,18 +165,19 @@ dependencies:
164
165
  - - ">="
165
166
  - !ruby/object:Gem::Version
166
167
  version: '0'
167
- description:
168
+ description:
168
169
  email:
169
170
  - github@moo.gl
171
+ - rubygems@evilcookie.de
170
172
  executables: []
171
173
  extensions: []
172
174
  extra_rdoc_files: []
173
175
  files:
176
+ - ".github/workflows/ruby.yml"
174
177
  - ".gitignore"
175
178
  - ".rspec"
176
179
  - ".rubocop.yml"
177
180
  - ".rubocop_todo.yml"
178
- - ".travis.yml"
179
181
  - CHANGELOG.md
180
182
  - Gemfile
181
183
  - Gemfile.lock
@@ -214,10 +216,10 @@ files:
214
216
  - lib/hcloud/version.rb
215
217
  - lib/hcloud/volume.rb
216
218
  - lib/hcloud/volume_resource.rb
217
- homepage: https://github.com/tonobo/hcloud
219
+ homepage: https://github.com/tonobo/hcloud-ruby
218
220
  licenses: []
219
221
  metadata: {}
220
- post_install_message:
222
+ post_install_message:
221
223
  rdoc_options: []
222
224
  require_paths:
223
225
  - lib
@@ -225,15 +227,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
225
227
  requirements:
226
228
  - - ">="
227
229
  - !ruby/object:Gem::Version
228
- version: '0'
230
+ version: 2.7.0
229
231
  required_rubygems_version: !ruby/object:Gem::Requirement
230
232
  requirements:
231
233
  - - ">="
232
234
  - !ruby/object:Gem::Version
233
235
  version: '0'
234
236
  requirements: []
235
- rubygems_version: 3.1.2
236
- signing_key:
237
+ rubygems_version: 3.2.22
238
+ signing_key:
237
239
  specification_version: 4
238
240
  summary: HetznerCloud native Ruby client
239
241
  test_files: []
data/.travis.yml DELETED
@@ -1,9 +0,0 @@
1
- language: ruby
2
- script:
3
- - "bundle exec rspec -t doubles --order rand"
4
- - "LEGACY_TESTS=y bundle exec rspec -t ~doubles"
5
- - "bundle exec rubocop"
6
- sudo: false
7
- rvm:
8
- - 2.5
9
- - 2.6