droplet_kit 1.2.2 → 1.2.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 +4 -4
- data/lib/droplet_kit/mappings/size_mapping.rb +6 -1
- data/lib/droplet_kit/models/size.rb +6 -1
- data/lib/droplet_kit/resources/domain_record_resource.rb +2 -1
- data/lib/droplet_kit/resources/domain_resource.rb +2 -1
- data/lib/droplet_kit/resources/droplet_upgrade_resource.rb +0 -1
- data/lib/droplet_kit/resources/image_action_resource.rb +2 -1
- data/lib/droplet_kit/resources/region_resource.rb +2 -1
- data/lib/droplet_kit/resources/size_resource.rb +2 -1
- data/lib/droplet_kit/resources/ssh_key_resource.rb +2 -1
- data/lib/droplet_kit/version.rb +1 -1
- data/spec/fixtures/sizes/all.json +5 -3
- data/spec/lib/droplet_kit/resources/action_resource_spec.rb +5 -0
- data/spec/lib/droplet_kit/resources/domain_record_resource_spec.rb +6 -1
- data/spec/lib/droplet_kit/resources/domain_resource_spec.rb +6 -1
- data/spec/lib/droplet_kit/resources/droplet_resource_spec.rb +29 -0
- data/spec/lib/droplet_kit/resources/image_action_resource_spec.rb +5 -0
- data/spec/lib/droplet_kit/resources/image_resource_spec.rb +5 -0
- data/spec/lib/droplet_kit/resources/region_resource_spec.rb +5 -0
- data/spec/lib/droplet_kit/resources/size_resource_spec.rb +6 -1
- data/spec/lib/droplet_kit/resources/ssh_key_resource_spec.rb +6 -1
- data/spec/support/shared_examples/paginated_endpoint.rb +13 -0
- metadata +4 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8248d66e3b2a7ea6e7525aa221378fefd3089202
|
4
|
+
data.tar.gz: 2fc041cce279e282b2775a7dfc183aff9fd3dbb8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f8546836585fd8f04ed333ab3a66e66e3d7ac9bc34690e09e91323090d9d60c2a908ed968dc3412826177f4b67e72482f51fe190d6d9e31cfceba60ab9c6279b
|
7
|
+
data.tar.gz: 5b3bbc5443f5119c09bfeca6138f6d0636ea6b193e50cf75011ee6df591ab93cd85621cc34c591e8b651a4a6b690f6e72cb1c434094ea7acd350fd1e71412f88
|
@@ -7,9 +7,14 @@ module DropletKit
|
|
7
7
|
root_key singular: 'size', plural: 'sizes', scopes: [:read]
|
8
8
|
|
9
9
|
property :slug, scopes: [:read]
|
10
|
+
property :memory, scopes: [:read]
|
11
|
+
property :vcpus, scopes: [:read]
|
12
|
+
property :disk, scopes: [:read]
|
10
13
|
property :transfer, scopes: [:read]
|
11
14
|
property :price_monthly, scopes: [:read]
|
12
15
|
property :price_hourly, scopes: [:read]
|
16
|
+
property :regions, scopes: [:read]
|
17
|
+
property :available, scopes: [:read]
|
13
18
|
end
|
14
19
|
end
|
15
|
-
end
|
20
|
+
end
|
@@ -1,8 +1,13 @@
|
|
1
1
|
module DropletKit
|
2
2
|
class Size < BaseModel
|
3
3
|
attribute :slug
|
4
|
+
attribute :memory
|
5
|
+
attribute :vcpus
|
6
|
+
attribute :disk
|
4
7
|
attribute :transfer
|
5
8
|
attribute :price_monthly
|
6
9
|
attribute :price_hourly
|
10
|
+
attribute :regions
|
11
|
+
attribute :available
|
7
12
|
end
|
8
|
-
end
|
13
|
+
end
|
@@ -2,6 +2,7 @@ module DropletKit
|
|
2
2
|
class DomainRecordResource < ResourceKit::Resource
|
3
3
|
resources do
|
4
4
|
action :all, 'GET /v2/domains/:for_domain/records' do
|
5
|
+
query_keys :per_page, :page
|
5
6
|
handler(200) { |response| DomainRecordMapping.extract_collection(response.body, :read) }
|
6
7
|
end
|
7
8
|
|
@@ -28,4 +29,4 @@ module DropletKit
|
|
28
29
|
PaginatedResource.new(action(:all), self, *args)
|
29
30
|
end
|
30
31
|
end
|
31
|
-
end
|
32
|
+
end
|
@@ -2,6 +2,7 @@ module DropletKit
|
|
2
2
|
class DomainResource < ResourceKit::Resource
|
3
3
|
resources do
|
4
4
|
action :all, 'GET /v2/domains' do
|
5
|
+
query_keys :per_page, :page
|
5
6
|
handler(200) { |response| DomainMapping.extract_collection(response.body, :read) }
|
6
7
|
end
|
7
8
|
|
@@ -23,4 +24,4 @@ module DropletKit
|
|
23
24
|
PaginatedResource.new(action(:all), self, *args)
|
24
25
|
end
|
25
26
|
end
|
26
|
-
end
|
27
|
+
end
|
@@ -12,6 +12,7 @@ module DropletKit
|
|
12
12
|
end
|
13
13
|
|
14
14
|
action :all, 'GET /v2/images/:image_id/actions' do
|
15
|
+
query_keys :per_page, :page
|
15
16
|
handler(200) { |response| ImageActionMapping.extract_collection(response.body, :read) }
|
16
17
|
end
|
17
18
|
|
@@ -24,4 +25,4 @@ module DropletKit
|
|
24
25
|
PaginatedResource.new(action(:all), self, *args)
|
25
26
|
end
|
26
27
|
end
|
27
|
-
end
|
28
|
+
end
|
@@ -2,6 +2,7 @@ module DropletKit
|
|
2
2
|
class RegionResource < ResourceKit::Resource
|
3
3
|
resources do
|
4
4
|
action :all, 'GET /v2/regions' do
|
5
|
+
query_keys :per_page, :page
|
5
6
|
handler(200) { |r| RegionMapping.extract_collection(r.body, :read) }
|
6
7
|
end
|
7
8
|
end
|
@@ -10,4 +11,4 @@ module DropletKit
|
|
10
11
|
PaginatedResource.new(action(:all), self, *args)
|
11
12
|
end
|
12
13
|
end
|
13
|
-
end
|
14
|
+
end
|
@@ -2,6 +2,7 @@ module DropletKit
|
|
2
2
|
class SizeResource < ResourceKit::Resource
|
3
3
|
resources do
|
4
4
|
action :all, 'GET /v2/sizes' do
|
5
|
+
query_keys :per_page, :page
|
5
6
|
handler(200) { |r| SizeMapping.extract_collection(r.body, :read) }
|
6
7
|
end
|
7
8
|
end
|
@@ -10,4 +11,4 @@ module DropletKit
|
|
10
11
|
PaginatedResource.new(action(:all), self, *args)
|
11
12
|
end
|
12
13
|
end
|
13
|
-
end
|
14
|
+
end
|
@@ -4,6 +4,7 @@ module DropletKit
|
|
4
4
|
default_handler(:ok, :created) {|r| SSHKeyMapping.extract_single(r.body, :read) }
|
5
5
|
|
6
6
|
action :all, 'GET /v2/account/keys' do
|
7
|
+
query_keys :per_page, :page
|
7
8
|
handler(:ok) { |response| SSHKeyMapping.extract_collection(response.body, :read) }
|
8
9
|
end
|
9
10
|
|
@@ -23,4 +24,4 @@ module DropletKit
|
|
23
24
|
PaginatedResource.new(action(:all), self, *args)
|
24
25
|
end
|
25
26
|
end
|
26
|
-
end
|
27
|
+
end
|
data/lib/droplet_kit/version.rb
CHANGED
@@ -12,7 +12,8 @@
|
|
12
12
|
"nyc1",
|
13
13
|
"ams1",
|
14
14
|
"sfo1"
|
15
|
-
]
|
15
|
+
],
|
16
|
+
"available": true
|
16
17
|
},
|
17
18
|
{
|
18
19
|
"slug": "1gb",
|
@@ -26,10 +27,11 @@
|
|
26
27
|
"nyc1",
|
27
28
|
"ams1",
|
28
29
|
"sfo1"
|
29
|
-
]
|
30
|
+
],
|
31
|
+
"available": true
|
30
32
|
}
|
31
33
|
],
|
32
34
|
"meta": {
|
33
35
|
"total": 2
|
34
36
|
}
|
35
|
-
}
|
37
|
+
}
|
@@ -34,6 +34,11 @@ RSpec.describe DropletKit::ActionResource do
|
|
34
34
|
expect(actions.first.region.available).to be(true)
|
35
35
|
expect(actions.first.region.features).to include("virtio", "private_networking", "backups", "ipv6", "metadata")
|
36
36
|
end
|
37
|
+
|
38
|
+
it_behaves_like 'a paginated index' do
|
39
|
+
let(:fixture_path) { 'actions/all' }
|
40
|
+
let(:api_path) { '/v2/actions' }
|
41
|
+
end
|
37
42
|
end
|
38
43
|
|
39
44
|
describe '#find' do
|
@@ -15,6 +15,11 @@ RSpec.describe DropletKit::DomainRecordResource do
|
|
15
15
|
expect(returned_records).to all(be_kind_of(DropletKit::DomainRecord))
|
16
16
|
expect(returned_records).to eq(expected_records)
|
17
17
|
end
|
18
|
+
|
19
|
+
it_behaves_like 'a paginated index' do
|
20
|
+
let(:fixture_path) {'domain_records/all'}
|
21
|
+
let(:api_path) {'/v2/domains/example.com/records'}
|
22
|
+
end
|
18
23
|
end
|
19
24
|
|
20
25
|
describe '#create' do
|
@@ -80,4 +85,4 @@ RSpec.describe DropletKit::DomainRecordResource do
|
|
80
85
|
expect(updated_domain_record.data).to eq('@')
|
81
86
|
end
|
82
87
|
end
|
83
|
-
end
|
88
|
+
end
|
@@ -12,6 +12,11 @@ RSpec.describe DropletKit::DomainResource do
|
|
12
12
|
|
13
13
|
expect(resource.all).to eq(expected_domains)
|
14
14
|
end
|
15
|
+
|
16
|
+
it_behaves_like 'a paginated index' do
|
17
|
+
let(:fixture_path) {'domains/all'}
|
18
|
+
let(:api_path) {'/v2/domains'}
|
19
|
+
end
|
15
20
|
end
|
16
21
|
|
17
22
|
describe '#create' do
|
@@ -50,4 +55,4 @@ RSpec.describe DropletKit::DomainResource do
|
|
50
55
|
expect(request).to have_been_made
|
51
56
|
end
|
52
57
|
end
|
53
|
-
end
|
58
|
+
end
|
@@ -75,6 +75,11 @@ RSpec.describe DropletKit::DropletResource do
|
|
75
75
|
droplets = resource.all.map(&:id)
|
76
76
|
expect(droplets).to be_empty
|
77
77
|
end
|
78
|
+
|
79
|
+
it_behaves_like 'a paginated index' do
|
80
|
+
let(:fixture_path) { 'droplets/all' }
|
81
|
+
let(:api_path) { '/v2/droplets' }
|
82
|
+
end
|
78
83
|
end
|
79
84
|
|
80
85
|
describe '#find' do
|
@@ -143,6 +148,12 @@ RSpec.describe DropletKit::DropletResource do
|
|
143
148
|
expect(kernels[1].name).to eq('Ubuntu 14.04 x64 vmlinuz-3.13.0-24-generic (1221)')
|
144
149
|
expect(kernels[1].version).to eq('3.13.0-24-generic')
|
145
150
|
end
|
151
|
+
|
152
|
+
it 'returns a paginated resource' do
|
153
|
+
stub_do_api('/v2/droplets/1066/kernels', :get).to_return(body: api_fixture('droplets/list_kernels'))
|
154
|
+
kernels = resource.kernels(id: 1066, page: 1, per_page: 1)
|
155
|
+
expect(kernels).to be_kind_of(DropletKit::PaginatedResource)
|
156
|
+
end
|
146
157
|
end
|
147
158
|
|
148
159
|
describe '#snapshots' do
|
@@ -159,6 +170,12 @@ RSpec.describe DropletKit::DropletResource do
|
|
159
170
|
expect(snapshots[0].regions).to eq(["nyc1"])
|
160
171
|
expect(snapshots[0].created_at).to eq("2014-07-29T14:35:38Z")
|
161
172
|
end
|
173
|
+
|
174
|
+
it 'returns a paginated resource' do
|
175
|
+
stub_do_api('/v2/droplets/1066/snapshots', :get).to_return(body: api_fixture('droplets/list_snapshots'))
|
176
|
+
snapshots = resource.snapshots(id: 1066, page: 1, per_page: 1)
|
177
|
+
expect(snapshots).to be_kind_of(DropletKit::PaginatedResource)
|
178
|
+
end
|
162
179
|
end
|
163
180
|
|
164
181
|
describe '#backups' do
|
@@ -175,6 +192,12 @@ RSpec.describe DropletKit::DropletResource do
|
|
175
192
|
expect(backups[0].regions).to eq(["nyc1"])
|
176
193
|
expect(backups[0].created_at).to eq("2014-07-29T14:35:38Z")
|
177
194
|
end
|
195
|
+
|
196
|
+
it 'returns a paginated resource' do
|
197
|
+
stub_do_api('/v2/droplets/1066/backups', :get).to_return(body: api_fixture('droplets/list_backups'))
|
198
|
+
backups = resource.backups(id: 1066, page: 1, per_page: 1)
|
199
|
+
expect(backups).to be_kind_of(DropletKit::PaginatedResource)
|
200
|
+
end
|
178
201
|
end
|
179
202
|
|
180
203
|
describe '#actions' do
|
@@ -198,6 +221,12 @@ RSpec.describe DropletKit::DropletResource do
|
|
198
221
|
expect(actions[0].region.available).to be(true)
|
199
222
|
expect(actions[0].region.features).to include("virtio", "private_networking", "backups", "ipv6", "metadata")
|
200
223
|
end
|
224
|
+
|
225
|
+
it 'returns a paginated resource' do
|
226
|
+
stub_do_api('/v2/droplets/1066/actions', :get).to_return(body: api_fixture('droplets/list_actions'))
|
227
|
+
actions = resource.actions(id: 1066, page: 1, per_page: 1)
|
228
|
+
expect(actions).to be_kind_of(DropletKit::PaginatedResource)
|
229
|
+
end
|
201
230
|
end
|
202
231
|
|
203
232
|
describe '#delete' do
|
@@ -113,6 +113,11 @@ RSpec.describe DropletKit::ImageActionResource do
|
|
113
113
|
expect(action.region).to eq(nil)
|
114
114
|
expect(action.region_slug).to eq(nil)
|
115
115
|
end
|
116
|
+
|
117
|
+
it_behaves_like 'a paginated index' do
|
118
|
+
let(:fixture_path) {'image_actions/all'}
|
119
|
+
let(:api_path) {'/v2/images/45646587/actions'}
|
120
|
+
end
|
116
121
|
end
|
117
122
|
|
118
123
|
describe '#find' do
|
@@ -32,6 +32,11 @@ RSpec.describe DropletKit::ImageResource do
|
|
32
32
|
|
33
33
|
expect(resource.all(type: :application)).to eq(expected_images)
|
34
34
|
end
|
35
|
+
|
36
|
+
it_behaves_like 'a paginated index' do
|
37
|
+
let(:fixture_path) { 'images/all' }
|
38
|
+
let(:api_path) { '/v2/images' }
|
39
|
+
end
|
35
40
|
end
|
36
41
|
|
37
42
|
describe '#find' do
|
@@ -16,6 +16,11 @@ RSpec.describe DropletKit::SSHKeyResource do
|
|
16
16
|
expect(ssh_keys.first.public_key).to eq("ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAAAQQDGk5V68BJ4P3Ereh779Vi/Ft2qs/rbXrcjKLGo6zsyeyFUE0svJUpRDEJvFSf8RlezKx1/1ulJu9+kZsxRiUKn example")
|
17
17
|
expect(ssh_keys.first.name).to eq("Example Key")
|
18
18
|
end
|
19
|
+
|
20
|
+
it_behaves_like 'a paginated index' do
|
21
|
+
let(:fixture_path) {'ssh_keys/all'}
|
22
|
+
let(:api_path) {'/v2/ssh_keys'}
|
23
|
+
end
|
19
24
|
end
|
20
25
|
|
21
26
|
describe '#create' do
|
@@ -77,4 +82,4 @@ RSpec.describe DropletKit::SSHKeyResource do
|
|
77
82
|
expect(request).to have_been_made
|
78
83
|
end
|
79
84
|
end
|
80
|
-
end
|
85
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
# To use this, `fixture_path`, `api_path` and a `resource` must be defined
|
2
|
+
# using `let`s.
|
3
|
+
shared_examples_for 'a paginated index' do
|
4
|
+
let(:fixture_path) { }
|
5
|
+
let(:api_path) { }
|
6
|
+
|
7
|
+
it 'returns a paginated resource' do
|
8
|
+
fixture = api_fixture(fixture_path)
|
9
|
+
stub_do_api(api_path, :get).to_return(body: fixture)
|
10
|
+
response = resource.all(page: 1, per_page: 1)
|
11
|
+
expect(response).to be_kind_of(DropletKit::PaginatedResource)
|
12
|
+
end
|
13
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: droplet_kit
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.2.
|
4
|
+
version: 1.2.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Robert Ross
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-07-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: virtus
|
@@ -289,6 +289,7 @@ files:
|
|
289
289
|
- spec/support/null_hash_load.rb
|
290
290
|
- spec/support/request_stub_helpers.rb
|
291
291
|
- spec/support/resource_context.rb
|
292
|
+
- spec/support/shared_examples/paginated_endpoint.rb
|
292
293
|
homepage: ''
|
293
294
|
licenses:
|
294
295
|
- MIT
|
@@ -364,3 +365,4 @@ test_files:
|
|
364
365
|
- spec/support/null_hash_load.rb
|
365
366
|
- spec/support/request_stub_helpers.rb
|
366
367
|
- spec/support/resource_context.rb
|
368
|
+
- spec/support/shared_examples/paginated_endpoint.rb
|