aptible-resource 1.1.0 → 1.1.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 +4 -4
- data/.github/CODEOWNERS +1 -0
- data/.travis.yml +2 -2
- data/Gemfile +0 -2
- data/README.md +1 -3
- data/aptible-resource.gemspec +9 -8
- data/lib/aptible/resource/adapter.rb +1 -0
- data/lib/aptible/resource/base.rb +8 -1
- data/lib/aptible/resource/default_retry_coordinator.rb +3 -0
- data/lib/aptible/resource/errors.rb +2 -0
- data/lib/aptible/resource/null_retry_coordinator.rb +2 -3
- data/lib/aptible/resource/version.rb +1 -1
- data/lib/aptible/resource.rb +1 -0
- data/spec/aptible/resource/base_spec.rb +7 -2
- data/spec/aptible/resource/retry_spec.rb +2 -0
- data/spec/fixtures/mainframe.rb +1 -0
- data/spec/fixtures/token.rb +1 -0
- metadata +44 -50
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 4eeb9d01868528de4be4cb015abbb22c9710086bf2d880c075997a60475f06ba
|
4
|
+
data.tar.gz: 6b1f04a38239649c91bc77f930c4d862ea7d068c7c4f77c36684699fed726925
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 87b33183877986d2b1fc2ae9975a256bd361efb0c95f94a7e8d1cd145c36bebd8e3c185fcff32ed394f46076484c65743861004128a52419a5e7fe7541dd35b0
|
7
|
+
data.tar.gz: 90aaa5a7269f47379ed9e8bf7b23e510a3da41072ad7ad7a16a6f8e8ad9332cc473b367a354f88b5743d671230a317425858f42d63b9da95bb120ac1675d51de
|
data/.github/CODEOWNERS
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
* @dawenster
|
data/.travis.yml
CHANGED
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -49,7 +49,5 @@ This gem depends on a vendored version of [HyperResource](https://github.com/gam
|
|
49
49
|
|
50
50
|
MIT License, see [LICENSE](LICENSE.md) for details.
|
51
51
|
|
52
|
-
Copyright (c)
|
53
|
-
|
54
|
-
[<img src="https://s.gravatar.com/avatar/9b58236204e844e3181e43e05ddb0809?s=60" style="border-radius: 50%;" alt="@sandersonet" />](https://github.com/sandersonet)
|
52
|
+
Copyright (c) 2019 [Aptible](https://www.aptible.com) and contributors.
|
55
53
|
|
data/aptible-resource.gemspec
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
# encoding: utf-8
|
2
|
-
|
2
|
+
|
3
|
+
lib = File.expand_path('lib', __dir__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
5
|
|
5
6
|
require 'English'
|
@@ -20,17 +21,17 @@ Gem::Specification.new do |spec|
|
|
20
21
|
spec.require_paths = ['lib']
|
21
22
|
|
22
23
|
# HyperResource dependencies
|
23
|
-
spec.add_dependency '
|
24
|
-
spec.add_dependency 'json'
|
25
|
-
spec.add_dependency 'httpclient', '~> 2.8'
|
24
|
+
spec.add_dependency 'activesupport'
|
26
25
|
spec.add_dependency 'fridge'
|
27
|
-
spec.add_dependency 'activesupport', '>= 4.0', '< 6.0'
|
28
26
|
spec.add_dependency 'gem_config', '~> 0.3.1'
|
27
|
+
spec.add_dependency 'httpclient', '~> 2.8'
|
28
|
+
spec.add_dependency 'json'
|
29
|
+
spec.add_dependency 'uri_template', '>= 0.5.2'
|
29
30
|
|
30
|
-
spec.add_development_dependency 'bundler', '~> 1.3'
|
31
31
|
spec.add_development_dependency 'aptible-tasks'
|
32
|
-
spec.add_development_dependency '
|
33
|
-
spec.add_development_dependency 'rspec', '~> 2.0'
|
32
|
+
spec.add_development_dependency 'bundler'
|
34
33
|
spec.add_development_dependency 'pry'
|
34
|
+
spec.add_development_dependency 'rake', '< 11.0'
|
35
|
+
spec.add_development_dependency 'rspec', '~> 2.0'
|
35
36
|
spec.add_development_dependency 'webmock', '~> 2.3.2'
|
36
37
|
end
|
@@ -5,7 +5,7 @@ require 'active_support/core_ext'
|
|
5
5
|
require 'date'
|
6
6
|
|
7
7
|
# Require vendored HyperResource
|
8
|
-
$LOAD_PATH.unshift File.expand_path('
|
8
|
+
$LOAD_PATH.unshift File.expand_path('..', __dir__)
|
9
9
|
require 'hyper_resource'
|
10
10
|
|
11
11
|
require 'aptible/resource/adapter'
|
@@ -15,12 +15,14 @@ require 'aptible/resource/boolean'
|
|
15
15
|
module Aptible
|
16
16
|
module Resource
|
17
17
|
# rubocop:disable ClassLength
|
18
|
+
# rubocop:disable DuplicateMethods
|
18
19
|
class Base < HyperResource
|
19
20
|
attr_accessor :errors
|
20
21
|
attr_reader :token
|
21
22
|
|
22
23
|
def self.get_data_type_from_response(response)
|
23
24
|
return nil unless response && response.body
|
25
|
+
|
24
26
|
adapter.get_data_type_from_object(adapter.deserialize(response.body))
|
25
27
|
end
|
26
28
|
|
@@ -79,6 +81,7 @@ module Aptible
|
|
79
81
|
new(options).find_by_url(url)
|
80
82
|
rescue HyperResource::ClientError => e
|
81
83
|
return nil if e.response.status == 404
|
84
|
+
|
82
85
|
raise e
|
83
86
|
end
|
84
87
|
|
@@ -182,6 +185,7 @@ module Aptible
|
|
182
185
|
|
183
186
|
define_method iterator_method do |&block|
|
184
187
|
next enum_for(iterator_method) if block.nil?
|
188
|
+
|
185
189
|
send(relation).each(&block)
|
186
190
|
end
|
187
191
|
end
|
@@ -224,6 +228,7 @@ module Aptible
|
|
224
228
|
end
|
225
229
|
end
|
226
230
|
|
231
|
+
# rubocop:disable ReturnInVoidContext
|
227
232
|
def initialize(options = {})
|
228
233
|
return super(options) unless options.is_a?(Hash)
|
229
234
|
|
@@ -231,6 +236,7 @@ module Aptible
|
|
231
236
|
super(options)
|
232
237
|
self.token = options[:token] if options[:token]
|
233
238
|
end
|
239
|
+
# rubocop:enable ReturnInVoidContext
|
234
240
|
|
235
241
|
def populate_default_options!(options)
|
236
242
|
options[:root] ||= root_url
|
@@ -317,5 +323,6 @@ module Aptible
|
|
317
323
|
end
|
318
324
|
end
|
319
325
|
# rubocop:enable ClassLength
|
326
|
+
# rubocop:enable DuplicateMethods
|
320
327
|
end
|
321
328
|
end
|
@@ -35,9 +35,12 @@ module Aptible
|
|
35
35
|
def retry?(method, err)
|
36
36
|
# rubocop:disable Style/CaseEquality
|
37
37
|
return false unless RETRY_ERRORS.any? { |c| c === err }
|
38
|
+
|
38
39
|
return false unless IDEMPOTENT_METHODS.include?(method)
|
40
|
+
|
39
41
|
retry_in = retry_schedule.shift
|
40
42
|
return false if retry_in.nil?
|
43
|
+
|
41
44
|
sleep retry_in
|
42
45
|
true
|
43
46
|
# rubocop:enable Style/CaseEquality
|
@@ -1,6 +1,7 @@
|
|
1
1
|
module Aptible
|
2
2
|
module Resource
|
3
3
|
class Errors
|
4
|
+
# rubocop:disable DuplicateMethods
|
4
5
|
attr_accessor :status_code, :messages, :full_messages
|
5
6
|
|
6
7
|
def self.from_exception(exception)
|
@@ -23,6 +24,7 @@ module Aptible
|
|
23
24
|
def any?
|
24
25
|
full_messages.any?
|
25
26
|
end
|
27
|
+
# rubocop:enable DuplicateMethods
|
26
28
|
end
|
27
29
|
end
|
28
30
|
end
|
data/lib/aptible/resource.rb
CHANGED
@@ -1,5 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
|
+
# rubocop:disable BlockLength
|
4
|
+
# rubocop:disable InterpolationCheck
|
3
5
|
describe Aptible::Resource::Base do
|
4
6
|
let(:hyperresource_exception) { HyperResource::ResponseError.new('403') }
|
5
7
|
let(:error_response) { double 'Faraday::Response' }
|
@@ -36,6 +38,7 @@ describe Aptible::Resource::Base do
|
|
36
38
|
calls << u
|
37
39
|
page = pages[u]
|
38
40
|
raise "Accessed unexpected URL #{u}" if page.nil?
|
41
|
+
|
39
42
|
page
|
40
43
|
end
|
41
44
|
end
|
@@ -87,7 +90,7 @@ describe Aptible::Resource::Base do
|
|
87
90
|
|
88
91
|
before do
|
89
92
|
collection.stub(:entries) { [mainframe] }
|
90
|
-
collection.stub(:links) {
|
93
|
+
collection.stub(:links) { {} }
|
91
94
|
Api::Mainframe.any_instance.stub(:find_by_url) { collection }
|
92
95
|
end
|
93
96
|
|
@@ -269,7 +272,7 @@ describe Aptible::Resource::Base do
|
|
269
272
|
HyperResource.any_instance.stub(:put) { raise hyperresource_exception }
|
270
273
|
begin
|
271
274
|
subject.update!({})
|
272
|
-
rescue
|
275
|
+
rescue StandardError
|
273
276
|
# Allow errors to be populated and tested
|
274
277
|
nil
|
275
278
|
end
|
@@ -743,3 +746,5 @@ describe Aptible::Resource::Base do
|
|
743
746
|
end
|
744
747
|
end
|
745
748
|
end
|
749
|
+
# rubocop:enable InterpolationCheck
|
750
|
+
# rubocop:enable BlockLength
|
@@ -1,6 +1,7 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
# With webmock (fake connections), to check how we handle timeouts.
|
4
|
+
# rubocop:disable BlockLength
|
4
5
|
describe Aptible::Resource::Base do
|
5
6
|
let(:body) do
|
6
7
|
{ 'hello' => '1', '_links' => { 'self' => { 'href' => href } } }
|
@@ -156,3 +157,4 @@ describe Aptible::Resource::Base do
|
|
156
157
|
end
|
157
158
|
end
|
158
159
|
end
|
160
|
+
# rubocop:enable BlockLength
|
data/spec/fixtures/mainframe.rb
CHANGED
data/spec/fixtures/token.rb
CHANGED
metadata
CHANGED
@@ -1,31 +1,31 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: aptible-resource
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Frank Macreery
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-08-31 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: activesupport
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
17
|
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0
|
19
|
+
version: '0'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 0
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: fridge
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - ">="
|
@@ -39,83 +39,77 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '0'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: gem_config
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.3.1
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.3.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
|
-
name:
|
56
|
+
name: httpclient
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version: '
|
61
|
+
version: '2.8'
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version: '
|
68
|
+
version: '2.8'
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
|
-
name:
|
70
|
+
name: json
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
73
|
- - ">="
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '
|
76
|
-
- - "<"
|
77
|
-
- !ruby/object:Gem::Version
|
78
|
-
version: '6.0'
|
75
|
+
version: '0'
|
79
76
|
type: :runtime
|
80
77
|
prerelease: false
|
81
78
|
version_requirements: !ruby/object:Gem::Requirement
|
82
79
|
requirements:
|
83
80
|
- - ">="
|
84
81
|
- !ruby/object:Gem::Version
|
85
|
-
version: '
|
86
|
-
- - "<"
|
87
|
-
- !ruby/object:Gem::Version
|
88
|
-
version: '6.0'
|
82
|
+
version: '0'
|
89
83
|
- !ruby/object:Gem::Dependency
|
90
|
-
name:
|
84
|
+
name: uri_template
|
91
85
|
requirement: !ruby/object:Gem::Requirement
|
92
86
|
requirements:
|
93
|
-
- - "
|
87
|
+
- - ">="
|
94
88
|
- !ruby/object:Gem::Version
|
95
|
-
version: 0.
|
89
|
+
version: 0.5.2
|
96
90
|
type: :runtime
|
97
91
|
prerelease: false
|
98
92
|
version_requirements: !ruby/object:Gem::Requirement
|
99
93
|
requirements:
|
100
|
-
- - "
|
94
|
+
- - ">="
|
101
95
|
- !ruby/object:Gem::Version
|
102
|
-
version: 0.
|
96
|
+
version: 0.5.2
|
103
97
|
- !ruby/object:Gem::Dependency
|
104
|
-
name:
|
98
|
+
name: aptible-tasks
|
105
99
|
requirement: !ruby/object:Gem::Requirement
|
106
100
|
requirements:
|
107
|
-
- - "
|
101
|
+
- - ">="
|
108
102
|
- !ruby/object:Gem::Version
|
109
|
-
version: '
|
103
|
+
version: '0'
|
110
104
|
type: :development
|
111
105
|
prerelease: false
|
112
106
|
version_requirements: !ruby/object:Gem::Requirement
|
113
107
|
requirements:
|
114
|
-
- - "
|
108
|
+
- - ">="
|
115
109
|
- !ruby/object:Gem::Version
|
116
|
-
version: '
|
110
|
+
version: '0'
|
117
111
|
- !ruby/object:Gem::Dependency
|
118
|
-
name:
|
112
|
+
name: bundler
|
119
113
|
requirement: !ruby/object:Gem::Requirement
|
120
114
|
requirements:
|
121
115
|
- - ">="
|
@@ -129,7 +123,7 @@ dependencies:
|
|
129
123
|
- !ruby/object:Gem::Version
|
130
124
|
version: '0'
|
131
125
|
- !ruby/object:Gem::Dependency
|
132
|
-
name:
|
126
|
+
name: pry
|
133
127
|
requirement: !ruby/object:Gem::Requirement
|
134
128
|
requirements:
|
135
129
|
- - ">="
|
@@ -143,33 +137,33 @@ dependencies:
|
|
143
137
|
- !ruby/object:Gem::Version
|
144
138
|
version: '0'
|
145
139
|
- !ruby/object:Gem::Dependency
|
146
|
-
name:
|
140
|
+
name: rake
|
147
141
|
requirement: !ruby/object:Gem::Requirement
|
148
142
|
requirements:
|
149
|
-
- - "
|
143
|
+
- - "<"
|
150
144
|
- !ruby/object:Gem::Version
|
151
|
-
version: '
|
145
|
+
version: '11.0'
|
152
146
|
type: :development
|
153
147
|
prerelease: false
|
154
148
|
version_requirements: !ruby/object:Gem::Requirement
|
155
149
|
requirements:
|
156
|
-
- - "
|
150
|
+
- - "<"
|
157
151
|
- !ruby/object:Gem::Version
|
158
|
-
version: '
|
152
|
+
version: '11.0'
|
159
153
|
- !ruby/object:Gem::Dependency
|
160
|
-
name:
|
154
|
+
name: rspec
|
161
155
|
requirement: !ruby/object:Gem::Requirement
|
162
156
|
requirements:
|
163
|
-
- - "
|
157
|
+
- - "~>"
|
164
158
|
- !ruby/object:Gem::Version
|
165
|
-
version: '0'
|
159
|
+
version: '2.0'
|
166
160
|
type: :development
|
167
161
|
prerelease: false
|
168
162
|
version_requirements: !ruby/object:Gem::Requirement
|
169
163
|
requirements:
|
170
|
-
- - "
|
164
|
+
- - "~>"
|
171
165
|
- !ruby/object:Gem::Version
|
172
|
-
version: '0'
|
166
|
+
version: '2.0'
|
173
167
|
- !ruby/object:Gem::Dependency
|
174
168
|
name: webmock
|
175
169
|
requirement: !ruby/object:Gem::Requirement
|
@@ -191,6 +185,7 @@ executables: []
|
|
191
185
|
extensions: []
|
192
186
|
extra_rdoc_files: []
|
193
187
|
files:
|
188
|
+
- ".github/CODEOWNERS"
|
194
189
|
- ".gitignore"
|
195
190
|
- ".rspec"
|
196
191
|
- ".rubocop.yml"
|
@@ -232,7 +227,7 @@ homepage: https://github.com/aptible/aptible-resource
|
|
232
227
|
licenses:
|
233
228
|
- MIT
|
234
229
|
metadata: {}
|
235
|
-
post_install_message:
|
230
|
+
post_install_message:
|
236
231
|
rdoc_options: []
|
237
232
|
require_paths:
|
238
233
|
- lib
|
@@ -247,9 +242,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
247
242
|
- !ruby/object:Gem::Version
|
248
243
|
version: '0'
|
249
244
|
requirements: []
|
250
|
-
|
251
|
-
|
252
|
-
signing_key:
|
245
|
+
rubygems_version: 3.0.3.1
|
246
|
+
signing_key:
|
253
247
|
specification_version: 4
|
254
248
|
summary: Foundation classes for Aptible resource server gems
|
255
249
|
test_files:
|