dnsimple 4.5.0 → 4.6.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.travis.yml +2 -5
- data/CHANGELOG.md +5 -0
- data/lib/dnsimple/client.rb +2 -2
- data/lib/dnsimple/client/registrar_whois_privacy.rb +21 -1
- data/lib/dnsimple/struct.rb +1 -0
- data/lib/dnsimple/struct/whois_privacy_renewal.rb +28 -0
- data/lib/dnsimple/version.rb +1 -1
- data/spec/dnsimple/client/registrar_whois_privacy_spec.rb +55 -0
- data/spec/fixtures.http/renewWhoisPrivacy/success.http +21 -0
- data/spec/fixtures.http/renewWhoisPrivacy/whois-privacy-duplicated-order.http +19 -0
- data/spec/fixtures.http/renewWhoisPrivacy/whois-privacy-not-found.http +19 -0
- metadata +10 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ccd26ac738f667185d2005071eb215045dcce8bdcaaf48ba5b1b31f9187bdcf
|
4
|
+
data.tar.gz: a8474bcd18275b39465931d06230fd07434a839a39dbfeead1e130289929f7a6
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bb079ccceb1587b61ce3d0660a9963dad812d01da3634d0581dc80095fb2157fc86a191d711590bfb8d85c48c9c47e47a6a30b7e6e14c107b50195894e552c67
|
7
|
+
data.tar.gz: e7a5735a36b36dca5dee66104d90c0bbdb83afa878a9e5423bcac5b46b965a5324e16ad6380cb9f8a51ee91d3df8baa3bff47633c750b9ce529d0a9ed62c0e78
|
data/.travis.yml
CHANGED
@@ -1,21 +1,18 @@
|
|
1
1
|
language: ruby
|
2
2
|
|
3
|
-
sudo: false
|
4
|
-
|
5
3
|
rvm:
|
6
4
|
- 2.1
|
7
5
|
- 2.2
|
8
6
|
- 2.3
|
9
7
|
- 2.4
|
10
8
|
- 2.5
|
9
|
+
- 2.6
|
11
10
|
|
12
11
|
env:
|
13
12
|
- COVERALL=1
|
14
13
|
|
15
14
|
before_install:
|
16
|
-
-
|
17
|
-
- gem update --system
|
18
|
-
- gem install bundler
|
15
|
+
- gem install bundler -v 1.17.3
|
19
16
|
|
20
17
|
notifications:
|
21
18
|
slack:
|
data/CHANGELOG.md
CHANGED
data/lib/dnsimple/client.rb
CHANGED
@@ -50,7 +50,7 @@ module Dnsimple
|
|
50
50
|
# client.registrar.disable_whois_privacy(1010, "example.com")
|
51
51
|
#
|
52
52
|
# @param [Integer] account_id the account ID
|
53
|
-
# @param [#to_s] domain_name The domain name
|
53
|
+
# @param [#to_s] domain_name The domain name
|
54
54
|
# @param [Hash] options
|
55
55
|
# @return [Struct::WhoisPrivacy]
|
56
56
|
#
|
@@ -62,6 +62,26 @@ module Dnsimple
|
|
62
62
|
Dnsimple::Response.new(response, Struct::WhoisPrivacy.new(response["data"]))
|
63
63
|
end
|
64
64
|
|
65
|
+
# Renews whois privacy for the domain.
|
66
|
+
#
|
67
|
+
# @see https://developer.dnsimple.com/v2/registrar/whois-privacy/#renew
|
68
|
+
#
|
69
|
+
# @example Renew whois privacy for "example.com":
|
70
|
+
# client.registrar.renew_whois_privacy(1010, "example.com")
|
71
|
+
#
|
72
|
+
# @param account_id [Integer] the account ID
|
73
|
+
# @param domain_name [#to_s] The domain name
|
74
|
+
# @param options [Hash]
|
75
|
+
# @return [Struct::WhoisPrivacy]
|
76
|
+
#
|
77
|
+
# @raise [RequestError] When the request fails.
|
78
|
+
def renew_whois_privacy(account_id, domain_name, options = {})
|
79
|
+
endpoint = whois_privacy_endpoint(account_id, domain_name) + "/renewals"
|
80
|
+
response = client.post(endpoint, nil, options)
|
81
|
+
|
82
|
+
Dnsimple::Response.new(response, Struct::WhoisPrivacyRenewal.new(response["data"]))
|
83
|
+
end
|
84
|
+
|
65
85
|
|
66
86
|
private
|
67
87
|
|
data/lib/dnsimple/struct.rb
CHANGED
@@ -40,6 +40,7 @@ require_relative 'struct/tld'
|
|
40
40
|
require_relative 'struct/user'
|
41
41
|
require_relative 'struct/vanity_name_server'
|
42
42
|
require_relative 'struct/whois_privacy'
|
43
|
+
require_relative 'struct/whois_privacy_renewal'
|
43
44
|
require_relative 'struct/zone'
|
44
45
|
require_relative 'struct/zone_file'
|
45
46
|
require_relative 'struct/zone_distribution'
|
@@ -0,0 +1,28 @@
|
|
1
|
+
module Dnsimple
|
2
|
+
module Struct
|
3
|
+
|
4
|
+
class WhoisPrivacyRenewal < Base
|
5
|
+
# @return [Integer] The associated domain ID.
|
6
|
+
attr_accessor :domain_id
|
7
|
+
|
8
|
+
# @return [Integer] The associated WHOIS Privacy ID.
|
9
|
+
attr_accessor :whois_privacy_id
|
10
|
+
|
11
|
+
# @return [String] The WHOIS Privacy order state.
|
12
|
+
attr_accessor :state
|
13
|
+
|
14
|
+
# @return [Boolean] Whether the WHOIS Privacy is enabled for the domain.
|
15
|
+
attr_accessor :enabled
|
16
|
+
|
17
|
+
# @return [String] The date the WHOIS Privacy will expire on.
|
18
|
+
attr_accessor :expires_on
|
19
|
+
|
20
|
+
# @return [String] When the WHOIS Privacy was created in DNSimple.
|
21
|
+
attr_accessor :created_at
|
22
|
+
|
23
|
+
# @return [String] When the WHOIS Privacy was last updated in DNSimple.
|
24
|
+
attr_accessor :updated_at
|
25
|
+
end
|
26
|
+
|
27
|
+
end
|
28
|
+
end
|
data/lib/dnsimple/version.rb
CHANGED
@@ -116,4 +116,59 @@ describe Dnsimple::Client, ".registrar" do
|
|
116
116
|
end
|
117
117
|
end
|
118
118
|
|
119
|
+
|
120
|
+
describe "#renew_whois_privacy" do
|
121
|
+
let(:account_id) { 1010 }
|
122
|
+
|
123
|
+
before do
|
124
|
+
stub_request(:post, %r{/v2/#{account_id}/registrar/domains/.+/whois_privacy/renewals$})
|
125
|
+
.to_return(read_http_fixture("renewWhoisPrivacy/success.http"))
|
126
|
+
end
|
127
|
+
|
128
|
+
it "builds the correct request" do
|
129
|
+
subject.renew_whois_privacy(account_id, domain_name = "example.com")
|
130
|
+
|
131
|
+
expect(WebMock).to have_requested(:post, "https://api.dnsimple.test/v2/#{account_id}/registrar/domains/#{domain_name}/whois_privacy/renewals")
|
132
|
+
.with(headers: { "Accept" => "application/json" })
|
133
|
+
end
|
134
|
+
|
135
|
+
it "returns the whois privacy order" do
|
136
|
+
response = subject.renew_whois_privacy(account_id, "example.com")
|
137
|
+
expect(response).to be_a(Dnsimple::Response)
|
138
|
+
|
139
|
+
result = response.data
|
140
|
+
expect(result).to be_a(Dnsimple::Struct::WhoisPrivacyRenewal)
|
141
|
+
expect(result.domain_id).to be_kind_of(Integer)
|
142
|
+
expect(result.whois_privacy_id).to be_kind_of(Integer)
|
143
|
+
expect(result.enabled).to be(true)
|
144
|
+
expect(result.expires_on).to be_kind_of(String)
|
145
|
+
end
|
146
|
+
|
147
|
+
context "when whois privacy was't previously purchased" do
|
148
|
+
before do
|
149
|
+
stub_request(:post, %r{/v2/#{account_id}/registrar/domains/.+/whois_privacy/renewals$})
|
150
|
+
.to_return(read_http_fixture("renewWhoisPrivacy/whois-privacy-not-found.http"))
|
151
|
+
end
|
152
|
+
|
153
|
+
it "raises error" do
|
154
|
+
expect do
|
155
|
+
subject.renew_whois_privacy(account_id, "example.com")
|
156
|
+
end.to raise_error(Dnsimple::RequestError, "WHOIS privacy not found for example.com")
|
157
|
+
end
|
158
|
+
end
|
159
|
+
|
160
|
+
context "when there is already a whois privacy renewal order in progress" do
|
161
|
+
before do
|
162
|
+
stub_request(:post, %r{/v2/#{account_id}/registrar/domains/.+/whois_privacy/renewals$})
|
163
|
+
.to_return(read_http_fixture("renewWhoisPrivacy/whois-privacy-duplicated-order.http"))
|
164
|
+
end
|
165
|
+
|
166
|
+
it "raises error" do
|
167
|
+
expect do
|
168
|
+
subject.renew_whois_privacy(account_id, "example.com")
|
169
|
+
end.to raise_error(Dnsimple::RequestError, "The whois privacy for example.com has just been renewed, a new renewal cannot be started at this time")
|
170
|
+
end
|
171
|
+
end
|
172
|
+
end
|
173
|
+
|
119
174
|
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
HTTP/1.1 201 Created
|
2
|
+
Server: nginx
|
3
|
+
Date: Thu, 10 Jan 2019 12:12:50 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
X-RateLimit-Limit: 2400
|
8
|
+
X-RateLimit-Remaining: 2398
|
9
|
+
X-RateLimit-Reset: 1547125899
|
10
|
+
ETag: W/"e5bf5d90a6c95e5f1443dcbaf2cc27c6"
|
11
|
+
Cache-Control: max-age=0, private, must-revalidate
|
12
|
+
X-Request-Id: 6e80e830-21ae-46ea-9191-98811884808a
|
13
|
+
X-Runtime: 1.459325
|
14
|
+
X-Frame-Options: DENY
|
15
|
+
X-Content-Type-Options: nosniff
|
16
|
+
X-XSS-Protection: 1; mode=block
|
17
|
+
X-Download-Options: noopen
|
18
|
+
X-Permitted-Cross-Domain-Policies: none
|
19
|
+
Strict-Transport-Security: max-age=31536000
|
20
|
+
|
21
|
+
{"data":{"id":1,"domain_id":100,"whois_privacy_id":999,"state":"new","expires_on":"2020-01-10","enabled":true,"created_at":"2019-01-10T12:12:48Z","updated_at":"2019-01-10T12:12:48Z"}}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
HTTP/1.1 400 Bad Request
|
2
|
+
Server: nginx
|
3
|
+
Date: Thu, 10 Jan 2019 12:13:21 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
X-RateLimit-Limit: 2400
|
8
|
+
X-RateLimit-Remaining: 2397
|
9
|
+
X-RateLimit-Reset: 1547125899
|
10
|
+
Cache-Control: no-cache
|
11
|
+
X-Request-Id: 16cc92bb-fe38-434b-b483-602d77ac77d3
|
12
|
+
X-Runtime: 0.122201
|
13
|
+
X-Frame-Options: DENY
|
14
|
+
X-Content-Type-Options: nosniff
|
15
|
+
X-XSS-Protection: 1; mode=block
|
16
|
+
X-Download-Options: noopen
|
17
|
+
X-Permitted-Cross-Domain-Policies: none
|
18
|
+
|
19
|
+
{"message":"The whois privacy for example.com has just been renewed, a new renewal cannot be started at this time","errors":{}}
|
@@ -0,0 +1,19 @@
|
|
1
|
+
HTTP/1.1 400 Bad Request
|
2
|
+
Server: nginx
|
3
|
+
Date: Thu, 10 Jan 2019 12:11:39 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Transfer-Encoding: chunked
|
6
|
+
Connection: keep-alive
|
7
|
+
X-RateLimit-Limit: 2400
|
8
|
+
X-RateLimit-Remaining: 2399
|
9
|
+
X-RateLimit-Reset: 1547125899
|
10
|
+
Cache-Control: no-cache
|
11
|
+
X-Request-Id: 2727b7c4-97af-4e22-9c7f-bd84e20f2dc1
|
12
|
+
X-Runtime: 0.139925
|
13
|
+
X-Frame-Options: DENY
|
14
|
+
X-Content-Type-Options: nosniff
|
15
|
+
X-XSS-Protection: 1; mode=block
|
16
|
+
X-Download-Options: noopen
|
17
|
+
X-Permitted-Cross-Domain-Policies: none
|
18
|
+
|
19
|
+
{"message":"WHOIS privacy not found for example.com","errors":{}}
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dnsimple
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Anthony Eden
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date:
|
14
|
+
date: 2019-02-01 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: httparty
|
@@ -172,6 +172,7 @@ files:
|
|
172
172
|
- lib/dnsimple/struct/webhook.rb
|
173
173
|
- lib/dnsimple/struct/whoami.rb
|
174
174
|
- lib/dnsimple/struct/whois_privacy.rb
|
175
|
+
- lib/dnsimple/struct/whois_privacy_renewal.rb
|
175
176
|
- lib/dnsimple/struct/zone.rb
|
176
177
|
- lib/dnsimple/struct/zone_distribution.rb
|
177
178
|
- lib/dnsimple/struct/zone_file.rb
|
@@ -324,6 +325,9 @@ files:
|
|
324
325
|
- spec/fixtures.http/removeCollaborator/success.http
|
325
326
|
- spec/fixtures.http/renewDomain/error-tooearly.http
|
326
327
|
- spec/fixtures.http/renewDomain/success.http
|
328
|
+
- spec/fixtures.http/renewWhoisPrivacy/success.http
|
329
|
+
- spec/fixtures.http/renewWhoisPrivacy/whois-privacy-duplicated-order.http
|
330
|
+
- spec/fixtures.http/renewWhoisPrivacy/whois-privacy-not-found.http
|
327
331
|
- spec/fixtures.http/resetDomainToken/success.http
|
328
332
|
- spec/fixtures.http/response.http
|
329
333
|
- spec/fixtures.http/success-with-malformed-json.http
|
@@ -359,8 +363,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
359
363
|
- !ruby/object:Gem::Version
|
360
364
|
version: '0'
|
361
365
|
requirements: []
|
362
|
-
|
363
|
-
rubygems_version: 2.7.7
|
366
|
+
rubygems_version: 3.0.2
|
364
367
|
signing_key:
|
365
368
|
specification_version: 4
|
366
369
|
summary: The DNSimple API client for Ruby
|
@@ -512,6 +515,9 @@ test_files:
|
|
512
515
|
- spec/fixtures.http/removeCollaborator/success.http
|
513
516
|
- spec/fixtures.http/renewDomain/error-tooearly.http
|
514
517
|
- spec/fixtures.http/renewDomain/success.http
|
518
|
+
- spec/fixtures.http/renewWhoisPrivacy/success.http
|
519
|
+
- spec/fixtures.http/renewWhoisPrivacy/whois-privacy-duplicated-order.http
|
520
|
+
- spec/fixtures.http/renewWhoisPrivacy/whois-privacy-not-found.http
|
515
521
|
- spec/fixtures.http/resetDomainToken/success.http
|
516
522
|
- spec/fixtures.http/response.http
|
517
523
|
- spec/fixtures.http/success-with-malformed-json.http
|