dnsimple 6.0.0 → 7.0.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a4f667eba7dc3bc3e7718657059de2cc752f966d748b0698326feefad1f93111
4
- data.tar.gz: 82eabdcd7a27df808db076d4d65bfb196343c3aa607e42d61ba1ff8f7b328349
3
+ metadata.gz: 2cf8d057d98c78bf3b8584e15b561624dfb35f1264f80d0c5861e970053b18f3
4
+ data.tar.gz: acc7e6f33680ba4195243b474dca108e566c953ed2474e36fd9631c9f6b1f2fc
5
5
  SHA512:
6
- metadata.gz: 8ee87e28d8fd2fef38a9282905146831321e9a443c08216e2399fc577ba957da835df45d8a31052a4c8a12c7db2373ad8b96ed0b7a86072de20b6c2772b3e56c
7
- data.tar.gz: dae840d8c7d5f3c86af8f959ba07b5310f6e852e351b84c42166621e181de41604fb1d43be6ffe1c651002840f37dcc3b16eebadf6c9beed90d1c46e9f693aa5
6
+ metadata.gz: 504d15c395fcbbb08a4c351912f9cb47e0dac082ae9da5ef22161bc5bc6a5fc6e1f46466ab7c482385c996a558a10dad4d12fc2cd1eac130c417f6c21e70cfd0
7
+ data.tar.gz: 3ebc372cd78a2bc5d4cf3bdcab9168e572856fe0614da843949c5a58a1508399281b25a621e399280b1e4464a72ea5099d9e88e227aec7a564213297d81a6720
@@ -0,0 +1,12 @@
1
+ version: 2
2
+ updates:
3
+ - package-ecosystem: bundler
4
+ directory: /
5
+ schedule:
6
+ interval: daily
7
+ time: '12:00'
8
+ open-pull-requests-limit: 10
9
+ labels:
10
+ - task
11
+ - dependencies
12
+ - backlog-dependencies
data/.rubocop.yml CHANGED
@@ -8,21 +8,12 @@ require:
8
8
  - rubocop-rspec
9
9
 
10
10
  AllCops:
11
+ TargetRubyVersion: 2.6
11
12
  Exclude:
12
13
  - '*.gemspec'
13
14
  - 'Rakefile'
15
+ - 'vendor/**/*'
14
16
 
15
- # [codesmell]
16
- # It's irrelevant here, but it could be a code smell.
17
- # Hence keep it disabled, but don't include it in the DNSimple suite.
18
- Lint/Loop:
19
- Enabled: false
20
-
21
- # It doesn't seem to work as expected.
22
- Style/IfUnlessModifier:
23
- Enabled: false
24
-
25
- # This rule suggest to use safe navigation (&.) operator which was introduced
26
- # with Ruby 2.3. Because we are supporting Ruby 2.0+ we can't use this operator.
27
- Style/SafeNavigation:
17
+ # This rule conflicts with our specs codebase using Ruby 2.x and 3.x
18
+ Lint/NonDeterministicRequireOrder:
28
19
  Enabled: false
data/.rubocop_todo.yml CHANGED
@@ -1,49 +1,36 @@
1
1
  # This configuration was generated by
2
2
  # `rubocop --auto-gen-config`
3
- # on 2021-04-05 15:23:33 UTC using RuboCop version 1.12.1.
3
+ # on 2021-06-01 13:07:05 UTC using RuboCop version 1.16.0.
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: 6
10
- # Configuration parameters: Prefixes.
11
- # Prefixes: when, with, without
12
- RSpec/ContextWording:
13
- Exclude:
14
- - 'spec/dnsimple/client/domains_collaborators_spec.rb'
15
- - 'spec/dnsimple/options/list_options_spec.rb'
16
-
17
- # Offense count: 70
18
- # Configuration parameters: Max.
9
+ # Offense count: 71
10
+ # Configuration parameters: CountAsOne.
19
11
  RSpec/ExampleLength:
20
- Enabled: false
12
+ Max: 17
21
13
 
22
14
  # Offense count: 1
23
15
  RSpec/LeakyConstantDeclaration:
24
16
  Exclude:
25
17
  - 'spec/dnsimple/client/client_service_spec.rb'
26
18
 
27
- # Offense count: 21
19
+ # Offense count: 11
28
20
  # Configuration parameters: .
29
21
  # SupportedStyles: have_received, receive
30
22
  RSpec/MessageSpies:
31
23
  EnforcedStyle: receive
32
24
 
33
- # Offense count: 117
25
+ # Offense count: 112
34
26
  RSpec/MultipleExpectations:
35
- Max: 16
27
+ Max: 15
36
28
 
37
- # Offense count: 374
29
+ # Offense count: 375
38
30
  # Configuration parameters: IgnoreSharedExamples.
39
31
  RSpec/NamedSubject:
40
32
  Enabled: false
41
33
 
42
- # Offense count: 10
43
- RSpec/StubbedMock:
44
- Exclude:
45
- - 'spec/dnsimple/client_spec.rb'
46
-
47
34
  # Offense count: 16
48
35
  RSpec/SubjectStub:
49
36
  Exclude:
@@ -60,13 +47,7 @@ RSpec/SubjectStub:
60
47
  - 'spec/dnsimple/client/zones_spec.rb'
61
48
  - 'spec/dnsimple/client_spec.rb'
62
49
 
63
- # Offense count: 5
64
- # Configuration parameters: IgnoreNameless, IgnoreSymbolicNames.
65
- RSpec/VerifiedDoubles:
66
- Exclude:
67
- - 'spec/dnsimple/client_spec.rb'
68
-
69
- # Offense count: 39
50
+ # Offense count: 37
70
51
  # Configuration parameters: AllowedConstants.
71
52
  Style/Documentation:
72
53
  Enabled: false
data/.travis.yml CHANGED
@@ -1,16 +1,20 @@
1
+ dist: focal
2
+
1
3
  language: ruby
2
4
 
3
5
  rvm:
4
- - 2.4
5
- - 2.5
6
6
  - 2.6
7
7
  - 2.7
8
8
  - 3.0
9
9
  - ruby-head
10
+ - truffleruby-head
11
+
12
+ cache: bundler
10
13
 
11
- matrix:
14
+ jobs:
12
15
  allow_failures:
13
16
  - rvm: ruby-head
17
+ - rvm: truffleruby-head
14
18
 
15
19
  env:
16
20
  - COVERALL=1
data/CHANGELOG.md CHANGED
@@ -4,6 +4,11 @@ This project uses [Semantic Versioning 2.0.0](http://semver.org/).
4
4
 
5
5
  ## main
6
6
 
7
+ ## 0.7.0
8
+
9
+ - CHANGED: Minimum Ruby version is now 2.6
10
+ - CHANGED: Deprecates `registrar.getDomainPremiumPrice` in favour of `registrar.getDomainPrices`
11
+
7
12
  ## 6.0.0
8
13
 
9
14
  - NEW: Added `registrar.get_domain_prices` to retrieve whether a domain is premium and the prices to register, transfer, and renew. (dnsimple/dnsimple-ruby#230)
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.12.1', require: false
8
+ gem 'rubocop', '1.16.0', require: false
9
9
  gem 'rubocop-performance', require: false
10
10
  gem 'rubocop-rake', require: false
11
11
  gem 'rubocop-rspec', require: false
data/dnsimple.gemspec CHANGED
@@ -11,7 +11,7 @@ Gem::Specification.new do |s|
11
11
  s.summary = 'The DNSimple API client for Ruby'
12
12
  s.description = 'The DNSimple API client for Ruby.'
13
13
 
14
- s.required_ruby_version = ">= 2.4"
14
+ s.required_ruby_version = ">= 2.6"
15
15
 
16
16
  s.require_paths = ['lib']
17
17
  s.files = `git ls-files`.split("\n")
@@ -98,14 +98,15 @@ module Dnsimple
98
98
  options = args.pop
99
99
  response = nil
100
100
 
101
- begin
101
+ loop do
102
102
  current_page += 1
103
103
  query = Extra.deep_merge(options, query: { page: current_page, per_page: 100 })
104
104
 
105
105
  response = send(method, *(args + [query]))
106
106
  total_pages ||= response.total_pages
107
107
  collection.concat(response.data)
108
- end while current_page < total_pages
108
+ break unless current_page < total_pages
109
+ end
109
110
 
110
111
  CollectionResponse.new(response.http_response, collection)
111
112
  end
@@ -42,7 +42,10 @@ module Dnsimple
42
42
  # @return [Struct::DomainPremiumPrice]
43
43
  #
44
44
  # @raise [RequestError] When the request fails.
45
+ #
46
+ # @deprecated Use {#get_domain_prices} instead of this one as it will soon be removed from the API.
45
47
  def domain_premium_price(account_id, domain_name, options = {})
48
+ Dnsimple.deprecate("Use {#get_domain_prices} instead of this one as it will soon be removed from the API.")
46
49
  endpoint = Client.versioned("/%s/registrar/domains/%s/premium_price" % [account_id, domain_name])
47
50
  options[:query] = { action: options.delete(:action) } if options.key?(:action)
48
51
  response = client.get(endpoint, options)
@@ -18,7 +18,7 @@ module Dnsimple
18
18
 
19
19
  def message_from(http_response)
20
20
  content_type = http_response.headers["Content-Type"]
21
- if content_type && content_type.start_with?("application/json")
21
+ if content_type&.start_with?("application/json")
22
22
  http_response.parsed_response["message"]
23
23
  else
24
24
  net_http_response = http_response.response
@@ -55,7 +55,7 @@ module Dnsimple
55
55
  # @raise [ArgumentError]
56
56
  def self.validate_mandatory_attributes(attributes, required)
57
57
  required.each do |name|
58
- attributes && attributes.key?(name) or raise(ArgumentError, ":#{name} is required")
58
+ attributes&.key?(name) or raise(ArgumentError, ":#{name} is required")
59
59
  end
60
60
  end
61
61
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Dnsimple
4
- VERSION = "6.0.0"
4
+ VERSION = "7.0.0"
5
5
  end
@@ -63,7 +63,7 @@ describe Dnsimple::Client, ".domains" do
63
63
  let(:account_id) { 1010 }
64
64
  let(:domain_id) { "example.com" }
65
65
 
66
- context "invite user already registered on DNSimple" do
66
+ context "when inviting a user already registered on DNSimple" do
67
67
  before do
68
68
  stub_request(:post, %r{/v2/#{account_id}/domains/#{domain_id}/collaborators$})
69
69
  .to_return(read_http_fixture("addCollaborator/success.http"))
@@ -93,7 +93,7 @@ describe Dnsimple::Client, ".domains" do
93
93
  end
94
94
  end
95
95
 
96
- context "invite not registered on DNSimple" do
96
+ context "when inviting a user not registered on DNSimple" do
97
97
  before do
98
98
  stub_request(:post, %r{/v2/#{account_id}/domains/#{domain_id}/collaborators$})
99
99
  .to_return(read_http_fixture("addCollaborator/invite-success.http"))
@@ -49,35 +49,35 @@ describe Dnsimple::Client do
49
49
 
50
50
  describe "#get" do
51
51
  it "delegates to #request" do
52
- expect(subject).to receive(:execute).with(:get, "path", nil, foo: "bar").and_return(:returned)
52
+ allow(subject).to receive(:execute).with(:get, "path", nil, foo: "bar").and_return(:returned)
53
53
  expect(subject.get("path", foo: "bar")).to eq(:returned)
54
54
  end
55
55
  end
56
56
 
57
57
  describe "#post" do
58
58
  it "delegates to #request" do
59
- expect(subject).to receive(:execute).with(:post, "path", { foo: "bar" }, {}).and_return(:returned)
59
+ allow(subject).to receive(:execute).with(:post, "path", { foo: "bar" }, {}).and_return(:returned)
60
60
  expect(subject.post("path", foo: "bar")).to eq(:returned)
61
61
  end
62
62
  end
63
63
 
64
64
  describe "#put" do
65
65
  it "delegates to #request" do
66
- expect(subject).to receive(:execute).with(:put, "path", { foo: "bar" }, {}).and_return(:returned)
66
+ allow(subject).to receive(:execute).with(:put, "path", { foo: "bar" }, {}).and_return(:returned)
67
67
  expect(subject.put("path", foo: "bar")).to eq(:returned)
68
68
  end
69
69
  end
70
70
 
71
71
  describe "#patch" do
72
72
  it "delegates to #request" do
73
- expect(subject).to receive(:execute).with(:patch, "path", { foo: "bar" }, {}).and_return(:returned)
73
+ allow(subject).to receive(:execute).with(:patch, "path", { foo: "bar" }, {}).and_return(:returned)
74
74
  expect(subject.patch("path", foo: "bar")).to eq(:returned)
75
75
  end
76
76
  end
77
77
 
78
78
  describe "#delete" do
79
79
  it "delegates to #request" do
80
- expect(subject).to receive(:execute).with(:delete, "path", { foo: "bar" }, {}).and_return(:returned)
80
+ allow(subject).to receive(:execute).with(:delete, "path", { foo: "bar" }, {}).and_return(:returned)
81
81
  expect(subject.delete("path", foo: "bar")).to eq(:returned)
82
82
  end
83
83
  end
@@ -126,20 +126,20 @@ describe Dnsimple::Client do
126
126
  it "delegates to HTTParty" do
127
127
  stub_request(:get, %r{/foo})
128
128
 
129
- expect(HTTParty).to receive(:get)
129
+ allow(HTTParty).to receive(:get)
130
130
  .with(
131
131
  "#{subject.base_url}foo",
132
132
  format: :json,
133
133
  basic_auth: { username: "user", password: "pass" },
134
134
  headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT }
135
135
  )
136
- .and_return(double('response', code: 200))
136
+ .and_return(instance_double('response', code: 200))
137
137
 
138
138
  subject.request(:get, 'foo')
139
139
  end
140
140
 
141
141
  it "properly extracts processes options and encodes data" do
142
- expect(HTTParty).to receive(:put)
142
+ allow(HTTParty).to receive(:put)
143
143
  .with(
144
144
  "#{subject.base_url}foo",
145
145
  format: :json,
@@ -148,13 +148,13 @@ describe Dnsimple::Client do
148
148
  basic_auth: { username: "user", password: "pass" },
149
149
  headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT, "Custom" => "Header" }
150
150
  )
151
- .and_return(double('response', code: 200))
151
+ .and_return(instance_double('response', code: 200))
152
152
 
153
153
  subject.request(:put, 'foo', { something: "else" }, { query: { foo: "bar" }, headers: { "Custom" => "Header" } })
154
154
  end
155
155
 
156
156
  it "handles non application/json content types" do
157
- expect(HTTParty).to receive(:post)
157
+ allow(HTTParty).to receive(:post)
158
158
  .with(
159
159
  "#{subject.base_url}foo",
160
160
  format: :json,
@@ -162,13 +162,13 @@ describe Dnsimple::Client do
162
162
  basic_auth: { username: "user", password: "pass" },
163
163
  headers: { 'Accept' => 'application/json', 'Content-Type' => 'application/x-www-form-urlencoded', 'User-Agent' => Dnsimple::Default::USER_AGENT }
164
164
  )
165
- .and_return(double('response', code: 200))
165
+ .and_return(instance_double('response', code: 200))
166
166
 
167
167
  subject.request(:post, 'foo', { something: "else" }, { headers: { "Content-Type" => "application/x-www-form-urlencoded" } })
168
168
  end
169
169
 
170
170
  it "includes options for proxy support" do
171
- expect(HTTParty).to receive(:get)
171
+ allow(HTTParty).to receive(:get)
172
172
  .with(
173
173
  "#{subject.base_url}test",
174
174
  format: :json,
@@ -176,20 +176,20 @@ describe Dnsimple::Client do
176
176
  http_proxyport: "4321",
177
177
  headers: { 'Accept' => 'application/json', 'User-Agent' => Dnsimple::Default::USER_AGENT }
178
178
  )
179
- .and_return(double('response', code: 200))
179
+ .and_return(instance_double('response', code: 200))
180
180
 
181
181
  subject = described_class.new(proxy: "example-proxy.com:4321")
182
182
  subject.request(:get, "test", nil, {})
183
183
  end
184
184
 
185
185
  it "supports custom user agent" do
186
- expect(HTTParty).to receive(:get)
186
+ allow(HTTParty).to receive(:get)
187
187
  .with(
188
188
  "#{subject.base_url}test",
189
189
  format: :json,
190
190
  headers: hash_including("User-Agent" => "customAgent #{Dnsimple::Default::USER_AGENT}")
191
191
  )
192
- .and_return(double("response", code: 200))
192
+ .and_return(instance_double("response", code: 200))
193
193
 
194
194
  subject = described_class.new(user_agent: "customAgent")
195
195
  subject.request(:get, "test", nil)
@@ -14,14 +14,14 @@ RSpec.describe Dnsimple::Options::ListOptions do
14
14
  expect(options.to_h).to eq({})
15
15
  end
16
16
 
17
- context 'query' do
17
+ describe 'query' do
18
18
  it 'adds "query" key if given options are filled' do
19
19
  options = described_class.new(a: 1)
20
20
  expect(options.to_h).to have_key(:query)
21
21
  end
22
22
  end
23
23
 
24
- context 'pagination' do
24
+ describe 'pagination' do
25
25
  it 'adds "page" to "query"' do
26
26
  raw = { page: '23' }
27
27
  expected = { query: raw }
@@ -47,7 +47,7 @@ RSpec.describe Dnsimple::Options::ListOptions do
47
47
  end
48
48
  end
49
49
 
50
- context 'sorting' do
50
+ describe 'sorting' do
51
51
  it 'adds sorting policy to "query"' do
52
52
  raw = { sort: 'name:desc' }
53
53
  expected = { query: raw }
@@ -73,7 +73,7 @@ RSpec.describe Dnsimple::Options::ListOptions do
73
73
  end
74
74
  end
75
75
 
76
- context 'filtering' do
76
+ describe 'filtering' do
77
77
  it 'adds filtering policy to "query"' do
78
78
  raw = { filter: { name_like: 'example' } }
79
79
  expected = { query: raw.fetch(:filter) }
data/spec/spec_helper.rb CHANGED
@@ -14,4 +14,4 @@ unless defined?(SPEC_ROOT)
14
14
  SPEC_ROOT = File.expand_path(__dir__)
15
15
  end
16
16
 
17
- Dir[File.join(SPEC_ROOT, "support/**/*.rb")].sort.each { |f| require f }
17
+ Dir[File.join(SPEC_ROOT, "support/**/*.rb")].each { |f| require f }
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: 6.0.0
4
+ version: 7.0.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: 2021-04-20 00:00:00.000000000 Z
11
+ date: 2021-06-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: httparty
@@ -88,7 +88,7 @@ extensions: []
88
88
  extra_rdoc_files:
89
89
  - LICENSE.txt
90
90
  files:
91
- - ".dependabot/config.yml"
91
+ - ".github/dependabot.yml"
92
92
  - ".gitignore"
93
93
  - ".rspec"
94
94
  - ".rubocop.yml"
@@ -356,7 +356,7 @@ files:
356
356
  homepage: https://github.com/dnsimple/dnsimple-ruby
357
357
  licenses: []
358
358
  metadata: {}
359
- post_install_message:
359
+ post_install_message:
360
360
  rdoc_options: []
361
361
  require_paths:
362
362
  - lib
@@ -364,15 +364,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
364
364
  requirements:
365
365
  - - ">="
366
366
  - !ruby/object:Gem::Version
367
- version: '2.4'
367
+ version: '2.6'
368
368
  required_rubygems_version: !ruby/object:Gem::Requirement
369
369
  requirements:
370
370
  - - ">="
371
371
  - !ruby/object:Gem::Version
372
372
  version: '0'
373
373
  requirements: []
374
- rubygems_version: 3.2.3
375
- signing_key:
374
+ rubygems_version: 3.1.4
375
+ signing_key:
376
376
  specification_version: 4
377
377
  summary: The DNSimple API client for Ruby
378
378
  test_files:
@@ -1,9 +0,0 @@
1
- version: 1
2
- update_configs:
3
- - package_manager: "ruby:bundler"
4
- directory: "/"
5
- update_schedule: "daily"
6
- default_labels:
7
- - "task"
8
- - "dependencies"
9
- - "backlog-dependencies"