dnsimple 4.4.0 → 4.5.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.rubocop_dnsimple.yml +34 -2
- data/.travis.yml +5 -1
- data/CHANGELOG.md +11 -0
- data/CONTRIBUTING.md +12 -7
- data/README.md +1 -2
- data/dnsimple.gemspec +1 -1
- data/lib/dnsimple/client.rb +1 -1
- data/lib/dnsimple/client/accounts.rb +0 -1
- data/lib/dnsimple/client/certificates.rb +1 -0
- data/lib/dnsimple/client/clients.rb +4 -2
- data/lib/dnsimple/client/contacts.rb +0 -5
- data/lib/dnsimple/client/domains.rb +0 -4
- data/lib/dnsimple/client/{collaborators.rb → domains_collaborators.rb} +1 -1
- data/lib/dnsimple/client/registrar_delegation.rb +4 -4
- data/lib/dnsimple/client/services.rb +0 -2
- data/lib/dnsimple/client/tlds.rb +14 -17
- data/lib/dnsimple/client/webhooks.rb +0 -3
- data/lib/dnsimple/client/zones.rb +0 -1
- data/lib/dnsimple/client/zones_distributions.rb +47 -0
- data/lib/dnsimple/client/zones_records.rb +23 -28
- data/lib/dnsimple/struct.rb +2 -0
- data/lib/dnsimple/struct/vanity_name_server.rb +25 -0
- data/lib/dnsimple/struct/zone_distribution.rb +11 -0
- data/lib/dnsimple/version.rb +1 -1
- data/spec/dnsimple/client/{collaborators_spec.rb → domains_collaborators_spec.rb} +0 -0
- data/spec/dnsimple/client/registrar_delegation_spec.rb +3 -2
- data/spec/dnsimple/client/tlds_spec.rb +13 -12
- data/spec/dnsimple/client/zones_distributions_spec.rb +135 -0
- data/spec/dnsimple/client/zones_records_spec.rb +33 -33
- data/spec/dnsimple/client_spec.rb +5 -5
- data/spec/fixtures.http/checkZoneDistribution/error.http +21 -0
- data/spec/fixtures.http/checkZoneDistribution/failure.http +21 -0
- data/spec/fixtures.http/checkZoneDistribution/success.http +21 -0
- data/spec/fixtures.http/checkZoneRecordDistribution/error.http +21 -0
- data/spec/fixtures.http/checkZoneRecordDistribution/failure.http +21 -0
- data/spec/fixtures.http/checkZoneRecordDistribution/success.http +21 -0
- data/spec/spec_helper.rb +1 -1
- metadata +24 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 49d2f2a2d0892e3ae7e31b563035cd668200f164a05fcde6b59b5fb497a123ee
|
4
|
+
data.tar.gz: 572cf3a3277efb2cb55cd5f9a0fc644bfe4a356a2853846e6f3af37a3964e28e
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90c025c122e88a6408f57abf2ff564ea309e10af4e85c16c2e1d8b513b58cfb726514634abd00e746e98a966827df7082d16ec333d32cb5290c0711a2ac94bd4
|
7
|
+
data.tar.gz: ba8db8d64adddf8d7aa04f66527eaa0fb00a6ed00be88c52c0a23d21b616ef0ef03a7850e83b0571f6be7d2e227915a4b755b58064136d199adce9b3b2ccf117
|
data/.rubocop_dnsimple.yml
CHANGED
@@ -1,4 +1,8 @@
|
|
1
1
|
# Defaults https://github.com/bbatsov/rubocop/blob/master/config/default.yml
|
2
|
+
#
|
3
|
+
# References:
|
4
|
+
# * https://github.com/bbatsov/ruby-style-guide
|
5
|
+
# * https://rubocop.readthedocs.io/
|
2
6
|
|
3
7
|
AllCops:
|
4
8
|
Exclude:
|
@@ -10,6 +14,11 @@ AllCops:
|
|
10
14
|
Bundler/OrderedGems:
|
11
15
|
Enabled: false
|
12
16
|
|
17
|
+
# This cop requires odd code indentations (as of rubocop 0.57.0)
|
18
|
+
# https://github.com/rubocop-hq/rubocop/issues/5956
|
19
|
+
Layout/AccessModifierIndentation:
|
20
|
+
Enabled: false
|
21
|
+
|
13
22
|
# Generally, the keyword style uses a lot of space. This is particularly true when
|
14
23
|
# you use case/if statements, in combination with a long-name variable.
|
15
24
|
#
|
@@ -20,7 +29,7 @@ Bundler/OrderedGems:
|
|
20
29
|
# do_else
|
21
30
|
# end
|
22
31
|
#
|
23
|
-
|
32
|
+
Layout/EndAlignment:
|
24
33
|
EnforcedStyleAlignWith: variable
|
25
34
|
|
26
35
|
# [codesmell]
|
@@ -84,6 +93,11 @@ Metrics/ParameterLists:
|
|
84
93
|
Metrics/PerceivedComplexity:
|
85
94
|
Enabled: false
|
86
95
|
|
96
|
+
# We tend to use @_name to represent a variable that is memoized,
|
97
|
+
# but it should not be accessed directly and kept as private.
|
98
|
+
Naming/MemoizedInstanceVariableName:
|
99
|
+
Enabled: false
|
100
|
+
|
87
101
|
# We use it from time to time, as it's not always possible (or maintainable)
|
88
102
|
# to use simple ? methods.
|
89
103
|
# Moreover, it's actually more efficient to not-use predicates:
|
@@ -91,11 +105,24 @@ Metrics/PerceivedComplexity:
|
|
91
105
|
Naming/PredicateName:
|
92
106
|
Enabled: false
|
93
107
|
|
108
|
+
# This cop triggers several false positives that make sense in our domain model.
|
109
|
+
# For instance, ip is considered an uncommunicative parameter name:
|
110
|
+
#
|
111
|
+
# ipv4_to_arpa_name(ip)
|
112
|
+
#
|
113
|
+
Naming/UncommunicativeMethodParamName:
|
114
|
+
Enabled: false
|
115
|
+
|
94
116
|
# [codesmell]
|
95
117
|
# I don't really get the point of this cop.
|
96
118
|
Performance/RedundantMerge:
|
97
119
|
Enabled: false
|
98
120
|
|
121
|
+
# This cop returns false positive violations (as of rubocop 0.57.0)
|
122
|
+
# https://github.com/rubocop-hq/rubocop/issues/5953
|
123
|
+
Style/AccessModifierDeclarations:
|
124
|
+
Enabled: false
|
125
|
+
|
99
126
|
# Do not use "and" or "or" in conditionals, but for readability we can use it
|
100
127
|
# to chain executions. Just beware of operator order.
|
101
128
|
Style/AndOr:
|
@@ -229,7 +256,12 @@ Style/StringLiteralsInInterpolation:
|
|
229
256
|
|
230
257
|
# It's nice to be consistent. The trailing comma also allows easy reordering,
|
231
258
|
# and doesn't cause a diff in Git when you add a line to the bottom.
|
232
|
-
Style/
|
259
|
+
Style/TrailingCommaInArrayLiteral:
|
260
|
+
EnforcedStyleForMultiline: consistent_comma
|
261
|
+
|
262
|
+
# It's nice to be consistent. The trailing comma also allows easy reordering,
|
263
|
+
# and doesn't cause a diff in Git when you add a line to the bottom.
|
264
|
+
Style/TrailingCommaInHashLiteral:
|
233
265
|
EnforcedStyleForMultiline: consistent_comma
|
234
266
|
|
235
267
|
Style/TrivialAccessors:
|
data/.travis.yml
CHANGED
@@ -3,11 +3,11 @@ language: ruby
|
|
3
3
|
sudo: false
|
4
4
|
|
5
5
|
rvm:
|
6
|
-
- 2.0
|
7
6
|
- 2.1
|
8
7
|
- 2.2
|
9
8
|
- 2.3
|
10
9
|
- 2.4
|
10
|
+
- 2.5
|
11
11
|
|
12
12
|
env:
|
13
13
|
- COVERALL=1
|
@@ -16,3 +16,7 @@ before_install:
|
|
16
16
|
- rvm get latest
|
17
17
|
- gem update --system
|
18
18
|
- gem install bundler
|
19
|
+
|
20
|
+
notifications:
|
21
|
+
slack:
|
22
|
+
secure: "N9zPR5jnF1TBiqvb3mCV6Wem3TIvqu4tXiob2P66vBMwmj1ewWvyUzNLwAEOCDc3mRfsI50IYXHewckAUpCWW7XEJlT/pv8llMsoiHqArb7SGJyDdy3ZRr35L7glixs/ikod+xhRKXMM3jML/2MgSa+Culzhl42tMUFDk+bBBQU="
|
data/CHANGELOG.md
CHANGED
@@ -3,6 +3,17 @@
|
|
3
3
|
This project uses [Semantic Versioning 2.0.0](http://semver.org/).
|
4
4
|
|
5
5
|
|
6
|
+
### 4.5.0
|
7
|
+
|
8
|
+
- NEW: Added zone distribution and zone record distribution (GH-160)
|
9
|
+
|
10
|
+
- CHANGED: Bump minimum Ruby requirement to 2.1
|
11
|
+
- CHANGED: Introduce Dnsimple::Struct::VanityNameServer (GH-144)
|
12
|
+
- CHANGED: Fix name inconsistency of the Collaborator module (GH-154)
|
13
|
+
|
14
|
+
- REMOVED: Removed extra alias (GH-168). You should use `dnsimple.foo.list_foo` instead of `dnsimple.foo.list`. Same for create/update. The change ensures consistency across the various clients. We prefer fully qualified methods.
|
15
|
+
|
16
|
+
|
6
17
|
#### 4.4.0
|
7
18
|
|
8
19
|
- NEW: Added Let's Encrypt certificate methods (GH-159)
|
data/CONTRIBUTING.md
CHANGED
@@ -2,19 +2,25 @@
|
|
2
2
|
|
3
3
|
## Getting started
|
4
4
|
|
5
|
+
#### 1. Clone the repository
|
6
|
+
|
5
7
|
Clone the repository and move into it:
|
6
8
|
|
9
|
+
```shell
|
10
|
+
git clone git@github.com:dnsimple/dnsimple-ruby.git
|
11
|
+
cd dnsimple-ruby
|
7
12
|
```
|
8
|
-
|
9
|
-
|
10
|
-
```
|
13
|
+
|
14
|
+
#### 2. Install the dependencies
|
11
15
|
|
12
16
|
Install the dependencies using [Bundler](http://bundler.io/):
|
13
17
|
|
14
18
|
```
|
15
|
-
|
19
|
+
bundle
|
16
20
|
```
|
17
21
|
|
22
|
+
#### 3. Build and test
|
23
|
+
|
18
24
|
[Run the test suite](#testing) to check everything works as expected.
|
19
25
|
|
20
26
|
|
@@ -23,7 +29,7 @@ $ bundle
|
|
23
29
|
To run the test suite:
|
24
30
|
|
25
31
|
```
|
26
|
-
|
32
|
+
rake
|
27
33
|
```
|
28
34
|
|
29
35
|
|
@@ -31,5 +37,4 @@ $ rake
|
|
31
37
|
|
32
38
|
Submit unit tests for your changes. You can test your changes on your machine by [running the test suite](#testing).
|
33
39
|
|
34
|
-
When you submit a PR, tests will also be run on the continuous integration environment
|
35
|
-
|
40
|
+
When you submit a PR, tests will also be run on the [continuous integration environment via Travis](https://travis-ci.org/dnsimple/dnsimple-ruby).
|
data/README.md
CHANGED
@@ -14,7 +14,7 @@ We provide a full API and an easy-to-use web interface so you can get your domai
|
|
14
14
|
You can install the gem manually:
|
15
15
|
|
16
16
|
```
|
17
|
-
|
17
|
+
gem install dnsimple
|
18
18
|
```
|
19
19
|
|
20
20
|
Or use Bundler and define it as a dependency in your Gemfile:
|
@@ -85,7 +85,6 @@ client = Dnsimple::Client.new(user_agent: "my-app")
|
|
85
85
|
|
86
86
|
The value you provide will be appended to the default `User-Agent` the client uses. For example, if you use `my-app`, the final header value will be `dnsimple-ruby/4.1.0 my-app` (note that it will vary depending on the client version).
|
87
87
|
|
88
|
-
|
89
88
|
## License
|
90
89
|
|
91
90
|
Copyright (c) 2010-2018 Aetrion LLC. This is Free Software distributed under the MIT license.
|
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.
|
14
|
+
s.required_ruby_version = ">= 2.1"
|
15
15
|
|
16
16
|
s.require_paths = ['lib']
|
17
17
|
s.files = `git ls-files`.split("\n")
|
data/lib/dnsimple/client.rb
CHANGED
@@ -61,7 +61,7 @@ module Dnsimple
|
|
61
61
|
def initialize(options = {})
|
62
62
|
defaults = Dnsimple::Default.options
|
63
63
|
|
64
|
-
Dnsimple::Default.keys.each do |key|
|
64
|
+
Dnsimple::Default.keys.each do |key|
|
65
65
|
instance_variable_set(:"@#{key}", options[key] || defaults[key])
|
66
66
|
end
|
67
67
|
|
@@ -137,7 +137,7 @@ module Dnsimple
|
|
137
137
|
require_relative 'domains_dnssec'
|
138
138
|
require_relative 'domains_email_forwards'
|
139
139
|
require_relative 'domains_pushes'
|
140
|
-
require_relative '
|
140
|
+
require_relative 'domains_collaborators'
|
141
141
|
|
142
142
|
class DomainsService < ClientService
|
143
143
|
include Client::Domains
|
@@ -145,7 +145,7 @@ module Dnsimple
|
|
145
145
|
include Client::DomainsDnssec
|
146
146
|
include Client::DomainsEmailForwards
|
147
147
|
include Client::DomainsPushes
|
148
|
-
include Client::
|
148
|
+
include Client::DomainsCollaborators
|
149
149
|
end
|
150
150
|
|
151
151
|
|
@@ -212,10 +212,12 @@ module Dnsimple
|
|
212
212
|
|
213
213
|
require_relative 'zones'
|
214
214
|
require_relative 'zones_records'
|
215
|
+
require_relative 'zones_distributions'
|
215
216
|
|
216
217
|
class ZonesService < ClientService
|
217
218
|
include Client::Zones
|
218
219
|
include Client::ZonesRecords
|
220
|
+
include Client::ZonesDistributions
|
219
221
|
end
|
220
222
|
|
221
223
|
|
@@ -29,7 +29,6 @@ module Dnsimple
|
|
29
29
|
|
30
30
|
Dnsimple::PaginatedResponse.new(response, response["data"].map { |r| Struct::Contact.new(r) })
|
31
31
|
end
|
32
|
-
alias list contacts
|
33
32
|
alias list_contacts contacts
|
34
33
|
|
35
34
|
# Lists ALL the contacts in the account.
|
@@ -54,7 +53,6 @@ module Dnsimple
|
|
54
53
|
def all_contacts(account_id, options = {})
|
55
54
|
paginate(:contacts, account_id, options)
|
56
55
|
end
|
57
|
-
alias all all_contacts
|
58
56
|
|
59
57
|
# Creates a contact in the account.
|
60
58
|
#
|
@@ -72,7 +70,6 @@ module Dnsimple
|
|
72
70
|
|
73
71
|
Dnsimple::Response.new(response, Struct::Contact.new(response["data"]))
|
74
72
|
end
|
75
|
-
alias create create_contact
|
76
73
|
|
77
74
|
# Gets a contact from the account.
|
78
75
|
#
|
@@ -107,7 +104,6 @@ module Dnsimple
|
|
107
104
|
|
108
105
|
Dnsimple::Response.new(response, Struct::Contact.new(response["data"]))
|
109
106
|
end
|
110
|
-
alias update update_contact
|
111
107
|
|
112
108
|
# Deletes a contact from the account.
|
113
109
|
#
|
@@ -127,7 +123,6 @@ module Dnsimple
|
|
127
123
|
|
128
124
|
Dnsimple::Response.new(response, nil)
|
129
125
|
end
|
130
|
-
alias delete delete_contact
|
131
126
|
|
132
127
|
end
|
133
128
|
end
|
@@ -33,7 +33,6 @@ module Dnsimple
|
|
33
33
|
|
34
34
|
Dnsimple::PaginatedResponse.new(response, response["data"].map { |r| Struct::Domain.new(r) })
|
35
35
|
end
|
36
|
-
alias list domains
|
37
36
|
alias list_domains domains
|
38
37
|
|
39
38
|
# Lists ALL the domains in the account.
|
@@ -59,7 +58,6 @@ module Dnsimple
|
|
59
58
|
def all_domains(account_id, options = {})
|
60
59
|
paginate(:domains, account_id, options)
|
61
60
|
end
|
62
|
-
alias all all_domains
|
63
61
|
|
64
62
|
# Creates a domain in the account.
|
65
63
|
#
|
@@ -78,7 +76,6 @@ module Dnsimple
|
|
78
76
|
|
79
77
|
Dnsimple::Response.new(response, Struct::Domain.new(response["data"]))
|
80
78
|
end
|
81
|
-
alias create create_domain
|
82
79
|
|
83
80
|
# Gets a domain from the account.
|
84
81
|
#
|
@@ -115,7 +112,6 @@ module Dnsimple
|
|
115
112
|
|
116
113
|
Dnsimple::Response.new(response, nil)
|
117
114
|
end
|
118
|
-
alias delete delete_domain
|
119
115
|
|
120
116
|
# Resets the domain token.
|
121
117
|
#
|
@@ -56,19 +56,19 @@ module Dnsimple
|
|
56
56
|
# @param [#to_s] domain_name the domain name to check
|
57
57
|
# @param [Array] attributes
|
58
58
|
# @param [Hash] options
|
59
|
-
# @return [Dnsimple::Response<Array
|
59
|
+
# @return [Dnsimple::Response<Array<Dnsimple::Struct::VanityNameServer>>]
|
60
60
|
#
|
61
61
|
# @raise [RequestError] When the request fails.
|
62
62
|
def change_domain_delegation_to_vanity(account_id, domain_name, attributes, options = {})
|
63
63
|
endpoint = Client.versioned("/%s/registrar/domains/%s/delegation/vanity" % [account_id, domain_name])
|
64
64
|
response = client.put(endpoint, attributes, options)
|
65
65
|
|
66
|
-
Dnsimple::Response.new(response, response["data"])
|
66
|
+
Dnsimple::Response.new(response, response["data"].map { |r| Struct::VanityNameServer.new(r) })
|
67
67
|
end
|
68
68
|
|
69
69
|
# Disable vanity name servers for the domain.
|
70
70
|
#
|
71
|
-
# @see https://developer.dnsimple.com/v2/registrar/delegation/#
|
71
|
+
# @see https://developer.dnsimple.com/v2/registrar/delegation/#dedelegateFromVanity
|
72
72
|
#
|
73
73
|
# @example Disable vanity name servers for example.com:
|
74
74
|
# client.registrar.change_domain_delegation_from_vanity(1010, "example.com")
|
@@ -83,7 +83,7 @@ module Dnsimple
|
|
83
83
|
endpoint = Client.versioned("/%s/registrar/domains/%s/delegation/vanity" % [account_id, domain_name])
|
84
84
|
response = client.delete(endpoint, options)
|
85
85
|
|
86
|
-
Dnsimple::Response.new(response,
|
86
|
+
Dnsimple::Response.new(response, nil)
|
87
87
|
end
|
88
88
|
|
89
89
|
end
|
@@ -28,7 +28,6 @@ module Dnsimple
|
|
28
28
|
|
29
29
|
Dnsimple::PaginatedResponse.new(response, response["data"].map { |r| Struct::Service.new(r) })
|
30
30
|
end
|
31
|
-
alias list services
|
32
31
|
alias list_services services
|
33
32
|
|
34
33
|
# Lists ALL the available one-click services.
|
@@ -55,7 +54,6 @@ module Dnsimple
|
|
55
54
|
def all_services(options = {})
|
56
55
|
paginate(:services, options)
|
57
56
|
end
|
58
|
-
alias all all_services
|
59
57
|
|
60
58
|
# Gets the service with specified ID.
|
61
59
|
#
|
data/lib/dnsimple/client/tlds.rb
CHANGED
@@ -1,18 +1,18 @@
|
|
1
1
|
module Dnsimple
|
2
2
|
class Client
|
3
3
|
module Tlds
|
4
|
-
# Lists the
|
4
|
+
# Lists the TLDs available for registration
|
5
5
|
#
|
6
|
-
# @see https://developer.dnsimple.com/v2/tlds/#
|
6
|
+
# @see https://developer.dnsimple.com/v2/tlds/#listTlds
|
7
7
|
#
|
8
8
|
# @example List TLDs in the first page
|
9
|
-
# client.tlds.
|
9
|
+
# client.tlds.list_tlds
|
10
10
|
#
|
11
11
|
# @example List TLDs, providing a specific page
|
12
|
-
# client.tlds.
|
12
|
+
# client.tlds.list_tlds(page: 2)
|
13
13
|
#
|
14
14
|
# @example List TLDs, providing sorting policy
|
15
|
-
# client.tlds.
|
15
|
+
# client.tlds.list_tlds(sort: "tld:asc")
|
16
16
|
#
|
17
17
|
# @param [Hash] options the filtering and sorting options
|
18
18
|
# @option options [Integer] :page current page (pagination)
|
@@ -21,13 +21,11 @@ module Dnsimple
|
|
21
21
|
# @return [Dnsimple::PaginatedResponse<Dnsimple::Struct::Tld>]
|
22
22
|
#
|
23
23
|
# @raise [Dnsimple::RequestError]
|
24
|
-
def
|
24
|
+
def list_tlds(options = {})
|
25
25
|
response = client.get(Client.versioned("/tlds"), Options::ListOptions.new(options))
|
26
26
|
|
27
27
|
Dnsimple::PaginatedResponse.new(response, response["data"].map { |r| Struct::Tld.new(r) })
|
28
28
|
end
|
29
|
-
alias list tlds
|
30
|
-
alias list_tlds tlds
|
31
29
|
|
32
30
|
# Lists ALL the TLDs in DNSimple.
|
33
31
|
#
|
@@ -37,8 +35,8 @@ module Dnsimple
|
|
37
35
|
# Please use this method carefully, as fetching the entire collection will increase the number of requests
|
38
36
|
# you send to the API server and you may eventually risk to hit the throttle limit.
|
39
37
|
#
|
40
|
-
# @see https://developer.dnsimple.com/v2/tlds/#
|
41
|
-
# @see #
|
38
|
+
# @see https://developer.dnsimple.com/v2/tlds/#listTlds
|
39
|
+
# @see #list_tlds
|
42
40
|
#
|
43
41
|
# @example List all TLDs in DNSimple
|
44
42
|
# client.tlds.all
|
@@ -51,13 +49,12 @@ module Dnsimple
|
|
51
49
|
#
|
52
50
|
# @raise [Dnsimple::RequestError]
|
53
51
|
def all_tlds(options = {})
|
54
|
-
paginate(:
|
52
|
+
paginate(:list_tlds, options)
|
55
53
|
end
|
56
|
-
alias all all_tlds
|
57
54
|
|
58
|
-
# Gets a TLD
|
55
|
+
# Gets a TLD details
|
59
56
|
#
|
60
|
-
# @see https://developer.dnsimple.com/v2/tlds/#
|
57
|
+
# @see https://developer.dnsimple.com/v2/tlds/#getTld
|
61
58
|
#
|
62
59
|
# @example Get information on a specific TLD
|
63
60
|
# client.tlds.tld('com')
|
@@ -76,10 +73,10 @@ module Dnsimple
|
|
76
73
|
|
77
74
|
# Gets the extended attributes for a TLD.
|
78
75
|
#
|
79
|
-
# @see https://developer.dnsimple.com/v2/tlds/#
|
76
|
+
# @see https://developer.dnsimple.com/v2/tlds/#getTldExtendedAttributes
|
80
77
|
#
|
81
78
|
# @example Get extended attributes for a specific TLD
|
82
|
-
# client.tlds.
|
79
|
+
# client.tlds.tld_extended_attributes('uk')
|
83
80
|
#
|
84
81
|
# @param [#to_s] tld The TLD name.
|
85
82
|
# @param [Hash] options
|
@@ -87,7 +84,7 @@ module Dnsimple
|
|
87
84
|
#
|
88
85
|
# @raise [Dnsimple::NotFoundError]
|
89
86
|
# @raise [Dnsimple::RequestError]
|
90
|
-
def
|
87
|
+
def tld_extended_attributes(tld, options = {})
|
91
88
|
response = client.get(Client.versioned("/tlds/%s/extended_attributes" % tld), options)
|
92
89
|
|
93
90
|
Dnsimple::CollectionResponse.new(response, response["data"].map { |r| Struct::ExtendedAttribute.new(r) })
|