dnsimple 8.1.0 → 8.3.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.github/CODEOWNERS +1 -1
- data/.github/dependabot.yml +3 -3
- data/.github/workflows/auto-merge.yml +32 -0
- data/.github/workflows/ci.yml +2 -1
- data/.github/workflows/release.yml +5 -4
- data/.rubocop_todo.yml +8 -7
- data/CHANGELOG.md +13 -0
- data/Gemfile +3 -3
- data/lib/dnsimple/client/certificates.rb +19 -0
- data/lib/dnsimple/client/oauth.rb +5 -0
- data/lib/dnsimple/client/registrar.rb +44 -0
- data/lib/dnsimple/error.rb +17 -0
- data/lib/dnsimple/version.rb +1 -1
- data/spec/dnsimple/client/oauth_spec.rb +19 -0
- data/spec/dnsimple/client/registrar_spec.rb +52 -0
- data/spec/fixtures.http/getDomainRegistration/success.http +20 -0
- data/spec/fixtures.http/getDomainRenewal/success.http +20 -0
- metadata +6 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d47bee5f7278d2aab4a2faa9b88121cbec92c510f6bbb807d5d0dd973429e360
|
4
|
+
data.tar.gz: abf2e8a9fe7a3613fbb3a80bcf375065f7a804fabd8369b1ec91760d8749e6c3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a2bbab24f39ead5c46bb0657bae0d67c2a98e0a5648d45baf9f4a03d497c2a38bb677ffde8f039b1fe6fc380c731376c948211927ddb94c969027ed89dafb828
|
7
|
+
data.tar.gz: f041d09f3b51854c802af60219e2713a3f42544dca0efc2b3cd28f179c8f225d52c4ae46b8aeb6ae18c67a6bdadfee8c3ab84096da1d6f33c850e2ec7636c16b
|
data/.github/CODEOWNERS
CHANGED
@@ -1 +1 @@
|
|
1
|
-
* @dnsimple/
|
1
|
+
* @dnsimple/external-integrations
|
data/.github/dependabot.yml
CHANGED
@@ -4,19 +4,19 @@ updates:
|
|
4
4
|
- package-ecosystem: bundler
|
5
5
|
directory: /
|
6
6
|
schedule:
|
7
|
-
interval:
|
7
|
+
interval: monthly
|
8
8
|
time: '12:00'
|
9
9
|
open-pull-requests-limit: 10
|
10
10
|
labels:
|
11
11
|
- task
|
12
12
|
- dependencies
|
13
|
-
|
14
13
|
- package-ecosystem: "github-actions"
|
15
14
|
directory: "/"
|
16
15
|
schedule:
|
17
|
-
interval:
|
16
|
+
interval: monthly
|
18
17
|
time: '12:00'
|
19
18
|
open-pull-requests-limit: 10
|
20
19
|
labels:
|
21
20
|
- task
|
22
21
|
- dependencies
|
22
|
+
- automerge
|
@@ -0,0 +1,32 @@
|
|
1
|
+
name: Auto-merge
|
2
|
+
|
3
|
+
on:
|
4
|
+
pull_request:
|
5
|
+
types:
|
6
|
+
- labeled
|
7
|
+
- synchronize
|
8
|
+
- opened
|
9
|
+
|
10
|
+
jobs:
|
11
|
+
auto-merge:
|
12
|
+
name: 'Auto-merge'
|
13
|
+
runs-on: ubuntu-latest
|
14
|
+
permissions: write-all
|
15
|
+
|
16
|
+
if: github.event.pull_request.user.login == 'dependabot[bot]' && contains(github.event.pull_request.labels.*.name, 'automerge')
|
17
|
+
steps:
|
18
|
+
- name: Wait for tests to succeed
|
19
|
+
uses: lewagon/wait-on-check-action@v1.3.1
|
20
|
+
timeout-minutes: 15
|
21
|
+
with:
|
22
|
+
ref: ${{ github.ref }}
|
23
|
+
running-workflow-name: 'Auto-merge'
|
24
|
+
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
25
|
+
wait-interval: 10
|
26
|
+
allowed-conclusions: success
|
27
|
+
- uses: juliangruber/merge-pull-request-action@v1
|
28
|
+
with:
|
29
|
+
github-token: "${{ secrets.GITHUB_TOKEN }}"
|
30
|
+
number: ${{ github.event.number }}
|
31
|
+
method: squash
|
32
|
+
repo: dnsimple/dnsimple-ruby
|
data/.github/workflows/ci.yml
CHANGED
@@ -18,7 +18,7 @@ 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.2.0
|
22
22
|
with:
|
23
23
|
files: .
|
24
24
|
config_file: ".markdownlint.yaml"
|
@@ -42,6 +42,7 @@ jobs:
|
|
42
42
|
- '2.7'
|
43
43
|
- '3.0'
|
44
44
|
- '3.1'
|
45
|
+
- '3.2'
|
45
46
|
- 'ruby-head'
|
46
47
|
- 'truffleruby-head'
|
47
48
|
steps:
|
@@ -7,11 +7,11 @@ on:
|
|
7
7
|
jobs:
|
8
8
|
publish:
|
9
9
|
name: Release to RubyGems
|
10
|
-
runs-on: ubuntu-
|
10
|
+
runs-on: ubuntu-20.04
|
11
11
|
|
12
12
|
steps:
|
13
13
|
- name: Wait for tests to succeed
|
14
|
-
uses: lewagon/wait-on-check-action@v1.1
|
14
|
+
uses: lewagon/wait-on-check-action@v1.3.1
|
15
15
|
with:
|
16
16
|
ref: 'refs/heads/main'
|
17
17
|
running-workflow-name: 'Release to RubyGems'
|
@@ -22,7 +22,8 @@ jobs:
|
|
22
22
|
- uses: actions/checkout@v3
|
23
23
|
|
24
24
|
- name: Release Gem
|
25
|
-
uses:
|
25
|
+
uses: simplyqio/publish-rubygems-action@2.0.0
|
26
26
|
env:
|
27
|
+
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
27
28
|
RUBYGEMS_API_KEY: ${{ secrets.RUBYGEMS_API_KEY }}
|
28
|
-
RELEASE_COMMAND: rake
|
29
|
+
RELEASE_COMMAND: "rake build && gem push pkg/*.gem"
|
data/.rubocop_todo.yml
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# This configuration was generated by
|
2
2
|
# `rubocop --auto-gen-config`
|
3
|
-
# on
|
3
|
+
# on 2023-01-26 12:48:02 UTC using RuboCop version 1.44.1.
|
4
4
|
# The point is for the user to remove these configuration records
|
5
5
|
# one by one as the offenses are removed from the code base.
|
6
6
|
# Note that changes in the inspected code, or installation of new
|
7
7
|
# versions of RuboCop, may require this file to be generated again.
|
8
8
|
|
9
|
-
# Offense count:
|
9
|
+
# Offense count: 74
|
10
10
|
# Configuration parameters: CountAsOne.
|
11
11
|
RSpec/ExampleLength:
|
12
12
|
Max: 17
|
@@ -16,18 +16,19 @@ RSpec/LeakyConstantDeclaration:
|
|
16
16
|
Exclude:
|
17
17
|
- 'spec/dnsimple/client/client_service_spec.rb'
|
18
18
|
|
19
|
-
# Offense count:
|
19
|
+
# Offense count: 12
|
20
20
|
# Configuration parameters: .
|
21
21
|
# SupportedStyles: have_received, receive
|
22
22
|
RSpec/MessageSpies:
|
23
23
|
EnforcedStyle: receive
|
24
24
|
|
25
|
-
# Offense count:
|
25
|
+
# Offense count: 115
|
26
26
|
RSpec/MultipleExpectations:
|
27
27
|
Max: 15
|
28
28
|
|
29
|
-
# Offense count:
|
30
|
-
# Configuration parameters: IgnoreSharedExamples.
|
29
|
+
# Offense count: 372
|
30
|
+
# Configuration parameters: EnforcedStyle, IgnoreSharedExamples.
|
31
|
+
# SupportedStyles: always, named_only
|
31
32
|
RSpec/NamedSubject:
|
32
33
|
Enabled: false
|
33
34
|
|
@@ -47,7 +48,7 @@ RSpec/SubjectStub:
|
|
47
48
|
- 'spec/dnsimple/client/zones_spec.rb'
|
48
49
|
- 'spec/dnsimple/client_spec.rb'
|
49
50
|
|
50
|
-
# Offense count:
|
51
|
+
# Offense count: 69
|
51
52
|
# Configuration parameters: AllowedConstants.
|
52
53
|
Style/Documentation:
|
53
54
|
Enabled: false
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,19 @@ This project uses [Semantic Versioning 2.0.0](http://semver.org/).
|
|
4
4
|
|
5
5
|
## main
|
6
6
|
|
7
|
+
## 8.3.1
|
8
|
+
|
9
|
+
- 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`.
|
10
|
+
|
11
|
+
## 8.3.0
|
12
|
+
|
13
|
+
- CHANGED: Wrap 400 errors on the OAuth endpoint in `Dnsimple::OAuthInvalidRequestError` (dnsimple/dnsimple-ruby#336)
|
14
|
+
|
15
|
+
## 8.2.0
|
16
|
+
|
17
|
+
- NEW: Added getDomainRenewal and getDomainRegistration endpoints (dnsimple/dnsimple-ruby#332)
|
18
|
+
- NEW: Documented the new `signature_algorithm` parameter for the Lets Encrypt certificate purchase endpoint (dnsimple/dnsimple-ruby#331)
|
19
|
+
|
7
20
|
## 8.1.0
|
8
21
|
|
9
22
|
- CHANGED: Fixed and updated documentation for domain endpoints (dnsimple/dnsimple-ruby#300)
|
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.48.0', require: false
|
9
|
+
gem 'rubocop-performance', '1.16.0', require: false
|
10
10
|
gem 'rubocop-rake', '0.6.0', require: false
|
11
|
-
gem 'rubocop-rspec', '2.
|
11
|
+
gem 'rubocop-rspec', '2.19.0', require: false
|
@@ -124,6 +124,7 @@ module Dnsimple
|
|
124
124
|
# @option attributes [String] :name the certificate name (optional)
|
125
125
|
# @option attributes [Array<String>] :alternate_names the certificate alternate names (optional)
|
126
126
|
# @option attributes [TrueClass,FalseClass] :auto_renew enable certificate auto renew (optional)
|
127
|
+
# @option attributes [String] :signature_algorithm the signature algorithm used to sign the certificate (optional)
|
127
128
|
# @param options[Hash]
|
128
129
|
#
|
129
130
|
# @return [Dnsimple::Response<Dnsimple::Struct::CertificatPurchase>]
|
@@ -166,6 +167,15 @@ module Dnsimple
|
|
166
167
|
# certificate.common_name # => "www.example.com"
|
167
168
|
# certificate.alternate_names # => []
|
168
169
|
# certificate.auto_renew # => true
|
170
|
+
#
|
171
|
+
# @example Signature Algorithm
|
172
|
+
# response = client.certificates.purchase_letsencrypt_certificate(1010, "example.com", signature_algorithm: "RSA")
|
173
|
+
# certificate = response.data
|
174
|
+
#
|
175
|
+
# certificate.id # => 100
|
176
|
+
# certificate.common_name # => "www.example.com"
|
177
|
+
# certificate.alternate_names # => []
|
178
|
+
# certificate.auto_renew # => false
|
169
179
|
def purchase_letsencrypt_certificate(account_id, domain_id, attributes = {}, options = {})
|
170
180
|
response = client.post(Client.versioned("/%s/domains/%s/certificates/letsencrypt" % [account_id, domain_id]), attributes, options)
|
171
181
|
|
@@ -209,6 +219,7 @@ module Dnsimple
|
|
209
219
|
# @param certificate_id [Integer] the certificate ID
|
210
220
|
# @param attributes [Hash]
|
211
221
|
# @option attributes [TrueClass,FalseClass] :auto_renew enable certificate auto renew (optional)
|
222
|
+
# @option attributes [String] :signature_algorithm the signature algorithm used to sign the certificate (optional)
|
212
223
|
# @param options [Hash]
|
213
224
|
#
|
214
225
|
# @return [Dnsimple::Response<Dnsimple::Struct::CertificateRenewal>]
|
@@ -231,6 +242,14 @@ module Dnsimple
|
|
231
242
|
# certificate_renewal.id # => 999
|
232
243
|
# certificate_renewal.old_certificate_id # => 200
|
233
244
|
# certificate_renewal.new_certificate_id # => 300
|
245
|
+
#
|
246
|
+
# @example Signature Algorithm
|
247
|
+
# response = client.certificates.purchase_letsencrypt_certificate_renewal(1010, "example.com", 200, signature_algorithm: "RSA")
|
248
|
+
# certificate_renewal = response.data
|
249
|
+
#
|
250
|
+
# certificate_renewal.id # => 999
|
251
|
+
# certificate_renewal.old_certificate_id # => 200
|
252
|
+
# certificate_renewal.new_certificate_id # => 300
|
234
253
|
def purchase_letsencrypt_certificate_renewal(account_id, domain_id, certificate_id, attributes = {}, options = {})
|
235
254
|
response = client.post(Client.versioned("/%s/domains/%s/certificates/letsencrypt/%s/renewals" % [account_id, domain_id, certificate_id]), attributes, options)
|
236
255
|
|
@@ -19,6 +19,11 @@ module Dnsimple
|
|
19
19
|
attributes[:redirect_uri] = options.delete(:redirect_uri) if options.key?(:redirect_uri)
|
20
20
|
response = client.post(Client.versioned("/oauth/access_token"), attributes, options)
|
21
21
|
Struct::OauthToken.new(response)
|
22
|
+
|
23
|
+
rescue Dnsimple::RequestError => exception
|
24
|
+
raise exception unless exception.http_response.code == 400
|
25
|
+
|
26
|
+
raise Dnsimple::OAuthInvalidRequestError, exception.http_response
|
22
27
|
end
|
23
28
|
|
24
29
|
# Gets the URL to authorize an user for an application via the OAuth2 flow.
|
@@ -67,6 +67,28 @@ module Dnsimple
|
|
67
67
|
Dnsimple::Response.new(response, Struct::DomainRegistration.new(response["data"]))
|
68
68
|
end
|
69
69
|
|
70
|
+
# Retrieves the details of an existing domain registration.
|
71
|
+
#
|
72
|
+
# @see https://developer.dnsimple.com/v2/registrar/#getDomainRegistration
|
73
|
+
#
|
74
|
+
# @example Retrieve the registration 42 for example.com:
|
75
|
+
# client.registrar.get_domain_registration(1010, "example.com", 42)
|
76
|
+
#
|
77
|
+
# @param [Integer] account_id the account ID
|
78
|
+
# @param [#to_s] domain_name the domain name
|
79
|
+
# @param [Integer] domain_registration_id the domain registration ID
|
80
|
+
# @param [Hash] options
|
81
|
+
# @return [Struct::DomainRegistration]
|
82
|
+
#
|
83
|
+
# @raise [NotFoundError] When record is not found.
|
84
|
+
# @raise [RequestError] When the request fails.
|
85
|
+
def get_domain_registration(account_id, domain_name, domain_registration_id, options = {})
|
86
|
+
endpoint = Client.versioned("/%s/registrar/domains/%s/registrations/%s" % [account_id, domain_name, domain_registration_id])
|
87
|
+
response = client.get(endpoint, options)
|
88
|
+
|
89
|
+
Dnsimple::Response.new(response, Struct::DomainRegistration.new(response["data"]))
|
90
|
+
end
|
91
|
+
|
70
92
|
# Renews a domain.
|
71
93
|
#
|
72
94
|
# @see https://developer.dnsimple.com/v2/registrar/#renew
|
@@ -88,6 +110,28 @@ module Dnsimple
|
|
88
110
|
Dnsimple::Response.new(response, Struct::DomainRenewal.new(response["data"]))
|
89
111
|
end
|
90
112
|
|
113
|
+
# Retrieve the details of an existing domain renewal.
|
114
|
+
#
|
115
|
+
# @see https://developer.dnsimple.com/v2/registrar/#getDomainRenewal
|
116
|
+
#
|
117
|
+
# @example Retrieve the renewal 42 for example.com:
|
118
|
+
# client.registrar.get_domain_renewal(1010, "example.com", 42)
|
119
|
+
#
|
120
|
+
# @param [Integer] account_id the account ID
|
121
|
+
# @param [#to_s] domain_name the domain name
|
122
|
+
# @param [Integer] domain_renewal_id the domain renewal ID
|
123
|
+
# @param [Hash] options
|
124
|
+
# @return [Struct::DomainRenewal]
|
125
|
+
#
|
126
|
+
# @raise [NotFoundError] When record is not found.
|
127
|
+
# @raise [RequestError] When the request fails.
|
128
|
+
def get_domain_renewal(account_id, domain_name, domain_renewal_id, options = {})
|
129
|
+
endpoint = Client.versioned("/%s/registrar/domains/%s/renewals/%s" % [account_id, domain_name, domain_renewal_id])
|
130
|
+
response = client.get(endpoint, options)
|
131
|
+
|
132
|
+
Dnsimple::Response.new(response, Struct::DomainRenewal.new(response["data"]))
|
133
|
+
end
|
134
|
+
|
91
135
|
# Starts the transfer of a domain to DNSimple.
|
92
136
|
#
|
93
137
|
# @see https://developer.dnsimple.com/v2/registrar/#transfer
|
data/lib/dnsimple/error.rb
CHANGED
@@ -48,4 +48,21 @@ module Dnsimple
|
|
48
48
|
class AuthenticationFailed < AuthenticationError
|
49
49
|
end
|
50
50
|
|
51
|
+
class OAuthInvalidRequestError < Error
|
52
|
+
attr_reader :http_response, :error, :error_description
|
53
|
+
|
54
|
+
def initialize(http_response)
|
55
|
+
@http_response = http_response
|
56
|
+
@error = http_response.parsed_response["error"]
|
57
|
+
@error_description = http_response.parsed_response["error_description"]
|
58
|
+
super(message)
|
59
|
+
end
|
60
|
+
|
61
|
+
private
|
62
|
+
|
63
|
+
def message
|
64
|
+
"#{error}: #{error_description}"
|
65
|
+
end
|
66
|
+
end
|
67
|
+
|
51
68
|
end
|
data/lib/dnsimple/version.rb
CHANGED
@@ -46,6 +46,25 @@ describe Dnsimple::Client, ".oauth" do
|
|
46
46
|
.with(headers: { 'Accept' => 'application/json' })
|
47
47
|
end
|
48
48
|
end
|
49
|
+
|
50
|
+
context "when the request fails with 400" do
|
51
|
+
before do
|
52
|
+
stub_request(:post, %r{/v2/oauth/access_token$})
|
53
|
+
.to_return(read_http_fixture("oauthAccessToken/error-invalid-request.http"))
|
54
|
+
end
|
55
|
+
|
56
|
+
it "raises OAuthInvalidRequestError" do
|
57
|
+
expect {
|
58
|
+
subject.exchange_authorization_for_token(code, client_id, client_secret, state: state)
|
59
|
+
}.to raise_error(Dnsimple::OAuthInvalidRequestError) do |e|
|
60
|
+
error = "invalid_request"
|
61
|
+
error_description = "Invalid \"state\": value doesn't match the \"state\" in the authorization request"
|
62
|
+
expect(e.error).to eq(error)
|
63
|
+
expect(e.error_description).to eq(error_description)
|
64
|
+
expect(e.to_s).to eq("#{error}: #{error_description}")
|
65
|
+
end
|
66
|
+
end
|
67
|
+
end
|
49
68
|
end
|
50
69
|
|
51
70
|
describe "#authorize_url" do
|
@@ -112,6 +112,32 @@ describe Dnsimple::Client, ".registrar" do
|
|
112
112
|
end
|
113
113
|
end
|
114
114
|
|
115
|
+
describe "#get_domain_registration" do
|
116
|
+
let(:account_id) { 1010 }
|
117
|
+
|
118
|
+
before do
|
119
|
+
stub_request(:get, %r{/v2/#{account_id}/registrar/domains/.+/registrations/.+$})
|
120
|
+
.to_return(read_http_fixture("getDomainRegistration/success.http"))
|
121
|
+
end
|
122
|
+
|
123
|
+
it "builds the correct request" do
|
124
|
+
subject.get_domain_registration(account_id, domain_name = "example.com", registration_id = 361)
|
125
|
+
|
126
|
+
expect(WebMock).to have_requested(:get, "https://api.dnsimple.test/v2/#{account_id}/registrar/domains/#{domain_name}/registrations/#{registration_id}")
|
127
|
+
.with(headers: { "Accept" => "application/json" })
|
128
|
+
end
|
129
|
+
|
130
|
+
it "returns the domain transfer" do
|
131
|
+
response = subject.get_domain_registration(account_id, "example.com", 361)
|
132
|
+
expect(response).to be_a(Dnsimple::Response)
|
133
|
+
|
134
|
+
result = response.data
|
135
|
+
expect(result).to be_a(Dnsimple::Struct::DomainRegistration)
|
136
|
+
expect(result.id).to be_a(Integer)
|
137
|
+
expect(result.domain_id).to be_a(Integer)
|
138
|
+
end
|
139
|
+
end
|
140
|
+
|
115
141
|
describe "#renew_domain" do
|
116
142
|
let(:account_id) { 1010 }
|
117
143
|
let(:attributes) { { period: "3" } }
|
@@ -152,6 +178,32 @@ describe Dnsimple::Client, ".registrar" do
|
|
152
178
|
end
|
153
179
|
end
|
154
180
|
|
181
|
+
describe "#get_domain_renewal" do
|
182
|
+
let(:account_id) { 1010 }
|
183
|
+
|
184
|
+
before do
|
185
|
+
stub_request(:get, %r{/v2/#{account_id}/registrar/domains/.+/renewals/.+$})
|
186
|
+
.to_return(read_http_fixture("getDomainRenewal/success.http"))
|
187
|
+
end
|
188
|
+
|
189
|
+
it "builds the correct request" do
|
190
|
+
subject.get_domain_renewal(account_id, domain_name = "example.com", renewal_id = 361)
|
191
|
+
|
192
|
+
expect(WebMock).to have_requested(:get, "https://api.dnsimple.test/v2/#{account_id}/registrar/domains/#{domain_name}/renewals/#{renewal_id}")
|
193
|
+
.with(headers: { "Accept" => "application/json" })
|
194
|
+
end
|
195
|
+
|
196
|
+
it "returns the domain renewal" do
|
197
|
+
response = subject.get_domain_renewal(account_id, "example.com", 361)
|
198
|
+
expect(response).to be_a(Dnsimple::Response)
|
199
|
+
|
200
|
+
result = response.data
|
201
|
+
expect(result).to be_a(Dnsimple::Struct::DomainRenewal)
|
202
|
+
expect(result.id).to be_a(Integer)
|
203
|
+
expect(result.domain_id).to be_a(Integer)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
155
207
|
describe "#transfer_domain" do
|
156
208
|
let(:account_id) { 1010 }
|
157
209
|
let(:attributes) { { registrant_id: "10", auth_code: "x1y2z3" } }
|
@@ -0,0 +1,20 @@
|
|
1
|
+
HTTP/1.1 200 OK
|
2
|
+
Server: nginx
|
3
|
+
Date: Fri, 05 Jun 2020 18:23:53 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Connection: keep-alive
|
6
|
+
X-RateLimit-Limit: 2400
|
7
|
+
X-RateLimit-Remaining: 2392
|
8
|
+
X-RateLimit-Reset: 1591384034
|
9
|
+
ETag: W/"80c5827934c13b1ca87a587d96e7d1e8"
|
10
|
+
Cache-Control: max-age=0, private, must-revalidate
|
11
|
+
X-Request-Id: 9f4959ee-06a9-488c-906e-27a570cafbbf
|
12
|
+
X-Runtime: 0.078429
|
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
|
+
Strict-Transport-Security: max-age=31536000
|
19
|
+
|
20
|
+
{"data":{"id":361,"domain_id":104040,"registrant_id":2715,"period":1,"state":"registering","auto_renew":false,"whois_privacy":false,"created_at":"2023-01-27T17:44:32Z","updated_at":"2023-01-27T17:44:40Z"}}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
HTTP/1.1 201 Created
|
2
|
+
Server: nginx
|
3
|
+
Date: Fri, 09 Dec 2016 19:46:57 GMT
|
4
|
+
Content-Type: application/json; charset=utf-8
|
5
|
+
Connection: keep-alive
|
6
|
+
X-RateLimit-Limit: 2400
|
7
|
+
X-RateLimit-Remaining: 2394
|
8
|
+
X-RateLimit-Reset: 1481315245
|
9
|
+
ETag: W/"179d85ea8a26a3d5dc76e42de2d7918e"
|
10
|
+
Cache-Control: max-age=0, private, must-revalidate
|
11
|
+
X-Request-Id: ba6f2707-5df0-4ffa-b91b-51d4460bab8e
|
12
|
+
X-Runtime: 13.571302
|
13
|
+
X-Content-Type-Options: nosniff
|
14
|
+
X-Download-Options: noopen
|
15
|
+
X-Frame-Options: DENY
|
16
|
+
X-Permitted-Cross-Domain-Policies: none
|
17
|
+
X-XSS-Protection: 1; mode=block
|
18
|
+
Strict-Transport-Security: max-age=31536000
|
19
|
+
|
20
|
+
{"data":{"id":1,"domain_id":999,"period":1,"state":"renewed","created_at":"2016-12-09T19:46:45Z","updated_at":"2016-12-12T19:46:45Z"}}
|
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.1
|
4
|
+
version: 8.3.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- DNSimple
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-03-10 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: httparty
|
@@ -90,6 +90,7 @@ extra_rdoc_files:
|
|
90
90
|
files:
|
91
91
|
- ".github/CODEOWNERS"
|
92
92
|
- ".github/dependabot.yml"
|
93
|
+
- ".github/workflows/auto-merge.yml"
|
93
94
|
- ".github/workflows/ci.yml"
|
94
95
|
- ".github/workflows/release.yml"
|
95
96
|
- ".gitignore"
|
@@ -276,6 +277,8 @@ files:
|
|
276
277
|
- spec/fixtures.http/getDomainPremiumPrice/success.http
|
277
278
|
- spec/fixtures.http/getDomainPrices/failure.http
|
278
279
|
- spec/fixtures.http/getDomainPrices/success.http
|
280
|
+
- spec/fixtures.http/getDomainRegistration/success.http
|
281
|
+
- spec/fixtures.http/getDomainRenewal/success.http
|
279
282
|
- spec/fixtures.http/getDomainTransfer/success.http
|
280
283
|
- spec/fixtures.http/getEmailForward/success.http
|
281
284
|
- spec/fixtures.http/getPrimaryServer/success.http
|
@@ -375,7 +378,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
375
378
|
- !ruby/object:Gem::Version
|
376
379
|
version: '0'
|
377
380
|
requirements: []
|
378
|
-
rubygems_version: 3.
|
381
|
+
rubygems_version: 3.4.6
|
379
382
|
signing_key:
|
380
383
|
specification_version: 4
|
381
384
|
summary: The DNSimple API client for Ruby
|