dnsimple 8.3.1 → 8.4.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/dependabot.yml +0 -1
- data/.github/workflows/ci.yml +2 -11
- data/CHANGELOG.md +7 -0
- data/Gemfile +3 -3
- data/README.md +2 -2
- data/lib/dnsimple/client/zones.rb +34 -0
- data/lib/dnsimple/version.rb +1 -1
- data/spec/dnsimple/client/zones_spec.rb +81 -1
- data/spec/fixtures.http/activateZoneService/success.http +16 -0
- data/spec/fixtures.http/deactivateZoneService/success.http +16 -0
- metadata +8 -7
- data/.yamllint.yml +0 -29
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 34867970ac25f062a88e64df5c8ffc1a4cebb69612aea702cf6075ca79a9f9e7
|
4
|
+
data.tar.gz: 79ffa15c0875466c11c175feeda98df3467ddeb0b2229c16aa6c92aecf1e0a39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d7d71422305173c73b5dc948ffaf006d76b651697afc072b90e494dd9051c90424409ad7f16366bbec4ea5992fadcad6463c133c7b0ef522bbabe03c6b78f766
|
7
|
+
data.tar.gz: 980c1e8c59db95933ab3d6e95eea871fcaaf9234b4866efbfc105c7da2fb841097a8e9aec2deb467d3ca1a6a7e9db79bcaed9b3851c6da4429c5799e3ded2a92
|
data/.github/dependabot.yml
CHANGED
data/.github/workflows/ci.yml
CHANGED
@@ -18,22 +18,13 @@ jobs:
|
|
18
18
|
- name: Checkout Code
|
19
19
|
uses: actions/checkout@v3
|
20
20
|
- name: Run markdownlint-cli
|
21
|
-
uses: nosborn/github-action-markdown-cli@v3.
|
21
|
+
uses: nosborn/github-action-markdown-cli@v3.3.0
|
22
22
|
with:
|
23
23
|
files: .
|
24
24
|
config_file: ".markdownlint.yaml"
|
25
25
|
|
26
|
-
yamllint:
|
27
|
-
name: Lint YAML
|
28
|
-
runs-on: ubuntu-latest
|
29
|
-
steps:
|
30
|
-
- name: Checkout Code
|
31
|
-
uses: actions/checkout@v3
|
32
|
-
- name: Run YAML Lint
|
33
|
-
uses: actionshub/yamllint@main
|
34
|
-
|
35
26
|
test:
|
36
|
-
needs: [markdownlint-cli
|
27
|
+
needs: [markdownlint-cli]
|
37
28
|
runs-on: ubuntu-latest
|
38
29
|
name: Ruby ${{ matrix.ruby-version }}
|
39
30
|
strategy:
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,13 @@ This project uses [Semantic Versioning 2.0.0](http://semver.org/).
|
|
4
4
|
|
5
5
|
## main
|
6
6
|
|
7
|
+
## 8.4.0
|
8
|
+
|
9
|
+
FEATURES:
|
10
|
+
|
11
|
+
- NEW: Added `Dnsimple::Client::Zones#activate_dns` to activate DNS services (resolution) for a zone. (dnsimple/dnsimple-ruby#354)
|
12
|
+
- NEW: Added `Dnsimple::Client::Zones#deactivate_dns` to deactivate DNS services (resolution) for a zone. (dnsimple/dnsimple-ruby#354)
|
13
|
+
|
7
14
|
## 8.3.1
|
8
15
|
|
9
16
|
- FIXED: Our release process had failed to push correctly `8.2.0` and `8.3.0` to RubyGems resulting in empty gem releases. This releases fixes the issue and contains the same changes of `8.2.0` and `8.3.0`.
|
data/Gemfile
CHANGED
@@ -5,7 +5,7 @@ source 'https://rubygems.org'
|
|
5
5
|
gemspec
|
6
6
|
|
7
7
|
gem 'coveralls', require: false
|
8
|
-
gem 'rubocop', '1.
|
9
|
-
gem 'rubocop-performance', '1.
|
8
|
+
gem 'rubocop', '1.55.1', require: false
|
9
|
+
gem 'rubocop-performance', '1.18.0', require: false
|
10
10
|
gem 'rubocop-rake', '0.6.0', require: false
|
11
|
-
gem 'rubocop-rspec', '2.
|
11
|
+
gem 'rubocop-rspec', '2.23.0', require: false
|
data/README.md
CHANGED
@@ -23,7 +23,7 @@ gem install dnsimple
|
|
23
23
|
Or use Bundler and define it as a dependency in your Gemfile:
|
24
24
|
|
25
25
|
```ruby
|
26
|
-
gem 'dnsimple', '~>
|
26
|
+
gem 'dnsimple', '~> 8.0'
|
27
27
|
```
|
28
28
|
|
29
29
|
## Documentation
|
@@ -110,4 +110,4 @@ puts response.data
|
|
110
110
|
|
111
111
|
## License
|
112
112
|
|
113
|
-
Copyright (c) 2010-
|
113
|
+
Copyright (c) 2010-2023 DNSimple Corporation. This is Free Software distributed under the MIT license.
|
@@ -95,6 +95,40 @@ module Dnsimple
|
|
95
95
|
Dnsimple::Response.new(response, Struct::ZoneFile.new(response["data"]))
|
96
96
|
end
|
97
97
|
|
98
|
+
# Activate DNS resolution for the zone in the account.
|
99
|
+
#
|
100
|
+
# @see https://developer.dnsimple.com/v2/zones/#activateZoneService
|
101
|
+
#
|
102
|
+
# @param [#to_s] account_id the account ID
|
103
|
+
# @param [#to_s] zone_id the zone name
|
104
|
+
# @param [Hash] options
|
105
|
+
# @return [Dnsimple::Response<Dnsimple::Struct::Zone>]
|
106
|
+
#
|
107
|
+
# @raise [Dnsimple::NotFoundError]
|
108
|
+
# @raise [Dnsimple::RequestError]
|
109
|
+
def activate_dns(account_id, zone_id, options = {})
|
110
|
+
response = client.put(Client.versioned("/%s/zones/%s/activation" % [account_id, zone_id]), options)
|
111
|
+
|
112
|
+
Dnsimple::Response.new(response, Struct::Zone.new(response["data"]))
|
113
|
+
end
|
114
|
+
|
115
|
+
# Deactivate DNS resolution for the zone in the account.
|
116
|
+
#
|
117
|
+
# @see https://developer.dnsimple.com/v2/zones/#deactivateZoneService
|
118
|
+
#
|
119
|
+
# @param [#to_s] account_id the account ID
|
120
|
+
# @param [#to_s] zone_id the zone name
|
121
|
+
# @param [Hash] options
|
122
|
+
# @return [Dnsimple::Response<Dnsimple::Struct::Zone>]
|
123
|
+
#
|
124
|
+
# @raise [Dnsimple::NotFoundError]
|
125
|
+
# @raise [Dnsimple::RequestError]
|
126
|
+
def deactivate_dns(account_id, zone_id, options = {})
|
127
|
+
response = client.delete(Client.versioned("/%s/zones/%s/activation" % [account_id, zone_id]), options)
|
128
|
+
|
129
|
+
Dnsimple::Response.new(response, Struct::Zone.new(response["data"]))
|
130
|
+
end
|
131
|
+
|
98
132
|
end
|
99
133
|
end
|
100
134
|
end
|
data/lib/dnsimple/version.rb
CHANGED
@@ -3,7 +3,6 @@
|
|
3
3
|
require 'spec_helper'
|
4
4
|
|
5
5
|
describe Dnsimple::Client, ".zones" do
|
6
|
-
|
7
6
|
subject { described_class.new(base_url: "https://api.dnsimple.test", access_token: "a1b2c3").zones }
|
8
7
|
|
9
8
|
|
@@ -173,4 +172,85 @@ describe Dnsimple::Client, ".zones" do
|
|
173
172
|
end
|
174
173
|
end
|
175
174
|
|
175
|
+
describe "#activate_dns" do
|
176
|
+
let(:account_id) { 1010 }
|
177
|
+
|
178
|
+
before do
|
179
|
+
stub_request(:put, %r{/v2/#{account_id}/zones/.+/activation})
|
180
|
+
.to_return(read_http_fixture("activateZoneService/success.http"))
|
181
|
+
end
|
182
|
+
|
183
|
+
it "builds the correct request" do
|
184
|
+
subject.activate_dns(account_id, zone = "example.com")
|
185
|
+
|
186
|
+
expect(WebMock).to have_requested(:put, "https://api.dnsimple.test/v2/#{account_id}/zones/#{zone}/activation")
|
187
|
+
.with(headers: { 'Accept' => 'application/json' })
|
188
|
+
end
|
189
|
+
|
190
|
+
it "returns the zone" do
|
191
|
+
response = subject.activate_dns(account_id, "example.com")
|
192
|
+
expect(response).to be_a(Dnsimple::Response)
|
193
|
+
|
194
|
+
result = response.data
|
195
|
+
expect(result).to be_a(Dnsimple::Struct::Zone)
|
196
|
+
expect(result.id).to eq(1)
|
197
|
+
expect(result.account_id).to eq(1010)
|
198
|
+
expect(result.name).to eq("example.com")
|
199
|
+
expect(result.reverse).to be(false)
|
200
|
+
expect(result.created_at).to eq("2022-09-28T04:45:24Z")
|
201
|
+
expect(result.updated_at).to eq("2023-07-06T11:19:48Z")
|
202
|
+
end
|
203
|
+
|
204
|
+
context "when the zone does not exist" do
|
205
|
+
it "raises NotFoundError" do
|
206
|
+
stub_request(:put, %r{/v2})
|
207
|
+
.to_return(read_http_fixture("notfound-zone.http"))
|
208
|
+
|
209
|
+
expect {
|
210
|
+
subject.activate_dns(account_id, "example.com")
|
211
|
+
}.to raise_error(Dnsimple::NotFoundError)
|
212
|
+
end
|
213
|
+
end
|
214
|
+
end
|
215
|
+
|
216
|
+
describe "#deactivate_dns" do
|
217
|
+
let(:account_id) { 1010 }
|
218
|
+
|
219
|
+
before do
|
220
|
+
stub_request(:delete, %r{/v2/#{account_id}/zones/.+/activation})
|
221
|
+
.to_return(read_http_fixture("deactivateZoneService/success.http"))
|
222
|
+
end
|
223
|
+
|
224
|
+
it "builds the correct request" do
|
225
|
+
subject.deactivate_dns(account_id, zone = "example.com")
|
226
|
+
|
227
|
+
expect(WebMock).to have_requested(:delete, "https://api.dnsimple.test/v2/#{account_id}/zones/#{zone}/activation")
|
228
|
+
.with(headers: { 'Accept' => 'application/json' })
|
229
|
+
end
|
230
|
+
|
231
|
+
it "returns the zone" do
|
232
|
+
response = subject.deactivate_dns(account_id, "example.com")
|
233
|
+
expect(response).to be_a(Dnsimple::Response)
|
234
|
+
|
235
|
+
result = response.data
|
236
|
+
expect(result).to be_a(Dnsimple::Struct::Zone)
|
237
|
+
expect(result.id).to eq(1)
|
238
|
+
expect(result.account_id).to eq(1010)
|
239
|
+
expect(result.name).to eq("example.com")
|
240
|
+
expect(result.reverse).to be(false)
|
241
|
+
expect(result.created_at).to eq("2022-09-28T04:45:24Z")
|
242
|
+
expect(result.updated_at).to eq("2023-08-08T04:19:52Z")
|
243
|
+
end
|
244
|
+
|
245
|
+
context "when the zone does not exist" do
|
246
|
+
it "raises NotFoundError" do
|
247
|
+
stub_request(:delete, %r{/v2})
|
248
|
+
.to_return(read_http_fixture("notfound-zone.http"))
|
249
|
+
|
250
|
+
expect {
|
251
|
+
subject.deactivate_dns(account_id, "example.com")
|
252
|
+
}.to raise_error(Dnsimple::NotFoundError)
|
253
|
+
end
|
254
|
+
end
|
255
|
+
end
|
176
256
|
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx
|
3
|
+
Date: Tue, 08 Aug 2023 04:19:23 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Connection: keep-alive
|
6
|
+
X-RateLimit-Limit: 2400
|
7
|
+
X-RateLimit-Remaining: 2399
|
8
|
+
X-RateLimit-Reset: 1691471963
|
9
|
+
X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs
|
10
|
+
ETag: W/"fe6afd982459be33146933235343d51d"
|
11
|
+
Cache-Control: max-age=0, private, must-revalidate
|
12
|
+
X-Request-Id: 8e8ac535-9f46-4304-8440-8c68c30427c3
|
13
|
+
X-Runtime: 0.176579
|
14
|
+
Strict-Transport-Security: max-age=63072000
|
15
|
+
|
16
|
+
{"data":{"id":1,"account_id":1010,"name":"example.com","reverse":false,"secondary":false,"last_transferred_at":null,"active":true,"created_at":"2022-09-28T04:45:24Z","updated_at":"2023-07-06T11:19:48Z"}}
|
@@ -0,0 +1,16 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx
|
3
|
+
Date: Tue, 08 Aug 2023 04:19:52 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Connection: keep-alive
|
6
|
+
X-RateLimit-Limit: 2400
|
7
|
+
X-RateLimit-Remaining: 2398
|
8
|
+
X-RateLimit-Reset: 1691471962
|
9
|
+
X-WORK-WITH-US: Love automation? So do we! https://dnsimple.com/jobs
|
10
|
+
ETag: W/"5f30a37d01b99bb9e620ef1bbce9a014"
|
11
|
+
Cache-Control: max-age=0, private, must-revalidate
|
12
|
+
X-Request-Id: d2f7bba4-4c81-4818-81d2-c9bbe95f104e
|
13
|
+
X-Runtime: 0.133278
|
14
|
+
Strict-Transport-Security: max-age=63072000
|
15
|
+
|
16
|
+
{"data":{"id":1,"account_id":1010,"name":"example.com","reverse":false,"secondary":false,"last_transferred_at":null,"active":false,"created_at":"2022-09-28T04:45:24Z","updated_at":"2023-08-08T04:19:52Z"}}
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dnsimple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.
|
4
|
+
version: 8.4.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DNSimple
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-
|
11
|
+
date: 2023-08-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -99,7 +99,6 @@ files:
|
|
99
99
|
- ".rubocop.yml"
|
100
100
|
- ".rubocop_dnsimple.yml"
|
101
101
|
- ".rubocop_todo.yml"
|
102
|
-
- ".yamllint.yml"
|
103
102
|
- CHANGELOG.md
|
104
103
|
- CONTRIBUTING.md
|
105
104
|
- Gemfile
|
@@ -212,6 +211,7 @@ files:
|
|
212
211
|
- spec/fixtures.http/acceptPush/success.http
|
213
212
|
- spec/fixtures.http/accounts/success-account.http
|
214
213
|
- spec/fixtures.http/accounts/success-user.http
|
214
|
+
- spec/fixtures.http/activateZoneService/success.http
|
215
215
|
- spec/fixtures.http/addCollaborator/invite-success.http
|
216
216
|
- spec/fixtures.http/addCollaborator/success.http
|
217
217
|
- spec/fixtures.http/appliedServices/success.http
|
@@ -245,6 +245,7 @@ files:
|
|
245
245
|
- spec/fixtures.http/createWebhook/created.http
|
246
246
|
- spec/fixtures.http/createZoneRecord/created-apex.http
|
247
247
|
- spec/fixtures.http/createZoneRecord/created.http
|
248
|
+
- spec/fixtures.http/deactivateZoneService/success.http
|
248
249
|
- spec/fixtures.http/deleteContact/error-contact-in-use.http
|
249
250
|
- spec/fixtures.http/deleteContact/success.http
|
250
251
|
- spec/fixtures.http/deleteDelegationSignerRecord/success.http
|
@@ -363,7 +364,7 @@ files:
|
|
363
364
|
homepage: https://github.com/dnsimple/dnsimple-ruby
|
364
365
|
licenses: []
|
365
366
|
metadata: {}
|
366
|
-
post_install_message:
|
367
|
+
post_install_message:
|
367
368
|
rdoc_options: []
|
368
369
|
require_paths:
|
369
370
|
- lib
|
@@ -378,8 +379,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
378
379
|
- !ruby/object:Gem::Version
|
379
380
|
version: '0'
|
380
381
|
requirements: []
|
381
|
-
rubygems_version: 3.4.
|
382
|
-
signing_key:
|
382
|
+
rubygems_version: 3.4.10
|
383
|
+
signing_key:
|
383
384
|
specification_version: 4
|
384
385
|
summary: The DNSimple API client for Ruby
|
385
386
|
test_files: []
|
data/.yamllint.yml
DELETED
@@ -1,29 +0,0 @@
|
|
1
|
-
---
|
2
|
-
|
3
|
-
extends: default
|
4
|
-
|
5
|
-
rules:
|
6
|
-
braces:
|
7
|
-
level: warning
|
8
|
-
max-spaces-inside: 1
|
9
|
-
brackets:
|
10
|
-
level: warning
|
11
|
-
max-spaces-inside: 1
|
12
|
-
colons:
|
13
|
-
level: warning
|
14
|
-
commas:
|
15
|
-
level: warning
|
16
|
-
comments: disable
|
17
|
-
comments-indentation: disable
|
18
|
-
document-start: disable
|
19
|
-
empty-lines:
|
20
|
-
level: warning
|
21
|
-
hyphens:
|
22
|
-
level: warning
|
23
|
-
indentation:
|
24
|
-
level: warning
|
25
|
-
indent-sequences: consistent
|
26
|
-
line-length:
|
27
|
-
level: warning
|
28
|
-
allow-non-breakable-inline-mappings: true
|
29
|
-
truthy: disable
|