hcloud 1.0.2 → 1.0.3

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