dnsimple 2.0.0.alpha4 → 2.0.0.alpha5
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 +4 -4
- data/README.markdown +22 -2
- data/UPGRADING.markdown +102 -0
- data/lib/dnsimple/client.rb +37 -16
- data/lib/dnsimple/client/certificates.rb +9 -7
- data/lib/dnsimple/client/contacts.rb +7 -5
- data/lib/dnsimple/client/domains.rb +6 -4
- data/lib/dnsimple/client/domains_forwards.rb +6 -6
- data/lib/dnsimple/client/domains_records.rb +7 -7
- data/lib/dnsimple/client/domains_sharing.rb +4 -4
- data/lib/dnsimple/client/domains_zones.rb +1 -1
- data/lib/dnsimple/client/name_servers.rb +5 -3
- data/lib/dnsimple/client/registrar.rb +20 -7
- data/lib/dnsimple/client/services.rb +5 -3
- data/lib/dnsimple/client/services_domains.rb +4 -4
- data/lib/dnsimple/client/templates.rb +8 -6
- data/lib/dnsimple/client/templates_records.rb +7 -7
- data/lib/dnsimple/error.rb +1 -1
- data/lib/dnsimple/version.rb +1 -1
- data/spec/dnsimple/client/certificates_spec.rb +20 -20
- data/spec/dnsimple/client/contacts_spec.rb +24 -24
- data/spec/dnsimple/client/domains_autorenewals_spec.rb +4 -4
- data/spec/dnsimple/client/domains_forwards_spec.rb +17 -17
- data/spec/dnsimple/client/domains_privacy_spec.rb +4 -4
- data/spec/dnsimple/client/domains_records_spec.rb +20 -20
- data/spec/dnsimple/client/domains_sharing_spec.rb +12 -12
- data/spec/dnsimple/client/domains_spec.rb +14 -14
- data/spec/dnsimple/client/domains_zones_spec.rb +2 -2
- data/spec/dnsimple/client/name_servers_spec.rb +13 -13
- data/spec/dnsimple/client/registrar_spec.rb +48 -6
- data/spec/dnsimple/client/services_spec.rb +11 -11
- data/spec/dnsimple/client/templates_records_spec.rb +17 -17
- data/spec/dnsimple/client/templates_spec.rb +17 -17
- data/spec/dnsimple/client_spec.rb +23 -19
- data/spec/files/certificates/{show → get}/success.http +0 -0
- data/spec/files/certificates/{index → list}/success.http +0 -0
- data/spec/files/contacts/{show → get}/success.http +1 -1
- data/spec/files/contacts/{index → list}/success.http +1 -1
- data/spec/files/domains/{show → get}/success.http +0 -0
- data/spec/files/domains/{index → list}/success.http +0 -0
- data/spec/files/domains_records/{show → get}/success.http +0 -0
- data/spec/files/domains_records/{index → list}/success.http +0 -0
- data/spec/files/services/{show → get}/success.http +0 -0
- data/spec/files/services/{index → list}/success.http +0 -0
- data/spec/files/subscriptions/{show → get}/success.http +0 -0
- data/spec/files/templates/{show → get}/success.http +0 -0
- data/spec/files/templates/{index → list}/success.http +0 -0
- data/spec/files/templates_records/{show → get}/success.http +0 -0
- data/spec/files/templates_records/{index → list}/success.http +0 -0
- metadata +33 -32
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cf0e539a6bca86d40181c2d20b69ca34f8696fdd
|
4
|
+
data.tar.gz: c96cf74c57c17745f3c035dc0a38c8719c17c622
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b6179bd9c041410c27fd7550745b4a2fe1cca9ecfe193cfca4526064def95cf1817f4f7748baf1aa772671c444915c1ea3c0d77b508e3e7dda84a7bed33c9bd8
|
7
|
+
data.tar.gz: 6f1a9ce4b9cd77aa33fbb640e3e1e2613f6c17aeae83098caf53334a514635377850625a9fe4970c1a38beaa74040460aa1de8c9a74be53c519e343b40c19964
|
data/README.markdown
CHANGED
@@ -31,15 +31,35 @@ client = Dnsimple::Client.new(username: 'YOUR_USERNAME', api_token: 'YOUR_TOKEN'
|
|
31
31
|
user = client.users.user
|
32
32
|
puts "My email is #{user.email}"
|
33
33
|
|
34
|
-
|
34
|
+
|
35
|
+
# List your domains
|
35
36
|
domains = client.domains.list
|
36
37
|
domains.each do |domain|
|
37
38
|
puts "Domain: %s (id: %d)" % [domain.name, domain.id]
|
38
39
|
end
|
39
40
|
|
40
41
|
# Create a domain
|
41
|
-
domain = client.domains.create("example.com")
|
42
|
+
domain = client.domains.create(name: "example.com")
|
43
|
+
puts "Domain: %s (id: %d)" % [domain.name, domain.id]
|
44
|
+
|
45
|
+
# Get a domain
|
46
|
+
domain = client.domains.domain("example.com")
|
42
47
|
puts "Domain: %s (id: %d)" % [domain.name, domain.id]
|
48
|
+
|
49
|
+
|
50
|
+
# Create a domain record
|
51
|
+
record = client.domains.create_record("example.com", record_type: "A", name: "www", content: "127.0.0.1")
|
52
|
+
puts "Record: %s (id: %d)" % [record.name, record.id]
|
53
|
+
|
54
|
+
# Get a domain record
|
55
|
+
record = client.domains.record("example.com", 1234)
|
56
|
+
puts "Record: %s (id: %d)" % [record.name, record.id]
|
57
|
+
|
58
|
+
# List domain records
|
59
|
+
records = client.domains.records("example.com")
|
60
|
+
records.each do |record|
|
61
|
+
puts "Record: %s (id: %d)" % [record.name, record.id]
|
62
|
+
end
|
43
63
|
```
|
44
64
|
|
45
65
|
For the full library documentation visit http://rubydoc.info/gems/dnsimple
|
data/UPGRADING.markdown
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
# Upgrading to v2.0
|
2
|
+
|
3
|
+
v2.0 is a major upgrade over v1.x and is not backward compatible.
|
4
|
+
|
5
|
+
The client has been completely rewritten from scratch to provide a more consistent interface
|
6
|
+
and take advantage of Ruby 1.9.3 and Ruby 2.0.
|
7
|
+
|
8
|
+
If you are upgrading your code from v1.x, here's the major changes you should be aware of.
|
9
|
+
|
10
|
+
|
11
|
+
1. The client is now an instance.
|
12
|
+
|
13
|
+
All the API calls are performed within the scope of an instance, rather than a class,
|
14
|
+
making it possible to pass the client around, write thread-safe code and create multiple client instances
|
15
|
+
with different API credentials for a multi-environment application.
|
16
|
+
|
17
|
+
```ruby
|
18
|
+
# v1
|
19
|
+
DNSimple::Client.username = 'YOUR_USERNAME'
|
20
|
+
DNSimple::Client.password = 'YOUR_PASSWORD'
|
21
|
+
domain = DNSimple::Domain.find("example.com")
|
22
|
+
|
23
|
+
# v2
|
24
|
+
client = Dnsimple::Client.new(username: 'YOUR_USERNAME', password: 'YOUR_PASSWORD')
|
25
|
+
domain = client.domains.domain("example.com")
|
26
|
+
```
|
27
|
+
|
28
|
+
1. API call responses are now simple struct-like objects, rather Model-like objects.
|
29
|
+
|
30
|
+
```ruby
|
31
|
+
domain = client.domains.domain("example.com")
|
32
|
+
# => Dnsimple::Struct::Domain
|
33
|
+
```
|
34
|
+
|
35
|
+
A struct-like object is designed to be a simple container of key/value attributes,
|
36
|
+
as opposite to a fully-features instance you can interact with.
|
37
|
+
|
38
|
+
1. API methods are now defined as methods of the client instance.
|
39
|
+
|
40
|
+
This is a consequence (or the cause, depending on the POV) of the previous point. It is no longer possible to call
|
41
|
+
persistence methods on an object returned from the API, as it was in v1.
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
record = client.domains.record("example.com", 1)
|
45
|
+
# this will fail
|
46
|
+
record.name = "www"
|
47
|
+
record.update
|
48
|
+
```
|
49
|
+
|
50
|
+
Instead, treat the object a simple read-only container. If you need to manipulate a Record, Domain or another instance,
|
51
|
+
write your own object that encapsulate the desired persistence behavior.
|
52
|
+
|
53
|
+
Here's a very simple example.
|
54
|
+
|
55
|
+
```ruby
|
56
|
+
class DnsimpleRecord
|
57
|
+
def self.find(client, domain, record_id)
|
58
|
+
client.record(domain, record_id)
|
59
|
+
end
|
60
|
+
|
61
|
+
def self.create(client, domain, attributes)
|
62
|
+
new(client.create_record(domain, attributes))
|
63
|
+
end
|
64
|
+
|
65
|
+
def initialize(client, instance)
|
66
|
+
@client = client
|
67
|
+
@instance = instance
|
68
|
+
end
|
69
|
+
|
70
|
+
def update_ip(ip)
|
71
|
+
@client.update_record(@instance.domain_id, @instance.record_id, content: ip)
|
72
|
+
end
|
73
|
+
end
|
74
|
+
```
|
75
|
+
|
76
|
+
Although this approach seems more verbose at first glance, it encourages the encapsulation of your application logic
|
77
|
+
inside custom objects, rather than promoting the patching of the core library objects.
|
78
|
+
|
79
|
+
Moreover, we found that in most cases developers need access to a very limited set of operations
|
80
|
+
rather all the possible API methods attached to a resource. And it's likely you already have a model in your application,
|
81
|
+
what you need is just a simple way to interact with the third-party DNSimple application.
|
82
|
+
|
83
|
+
Last but not least, this approach guarantees that if you want to alter the state of an object and you already know
|
84
|
+
its id, you don't need to perform a #find call to instantiate an object to call the update on:
|
85
|
+
|
86
|
+
```ruby
|
87
|
+
# version 1
|
88
|
+
record = Dnsimple::Record.find("example.com", 12)
|
89
|
+
record.name = "updated"
|
90
|
+
record.content = "127.0.0.1"
|
91
|
+
record.update
|
92
|
+
|
93
|
+
# version 2
|
94
|
+
record = Dnsimple::Record.find("example.com", 12)
|
95
|
+
record.update(name: "updated", content: "127.0.0.1")
|
96
|
+
```
|
97
|
+
|
98
|
+
Instead, simply execute
|
99
|
+
|
100
|
+
```ruby
|
101
|
+
client.domains.update_record("example.com", 12, name: "updated", content: "127.0.0.1")
|
102
|
+
```
|
data/lib/dnsimple/client.rb
CHANGED
@@ -60,7 +60,7 @@ module Dnsimple
|
|
60
60
|
# @param [Hash] options Query and header params for request
|
61
61
|
# @return [HTTParty::Response]
|
62
62
|
def get(path, options = {})
|
63
|
-
|
63
|
+
execute :get, path, options
|
64
64
|
end
|
65
65
|
|
66
66
|
# Make a HTTP POST request.
|
@@ -69,7 +69,7 @@ module Dnsimple
|
|
69
69
|
# @param [Hash] options Body and header params for request
|
70
70
|
# @return [HTTParty::Response]
|
71
71
|
def post(path, options = {})
|
72
|
-
|
72
|
+
execute :post, path, options
|
73
73
|
end
|
74
74
|
|
75
75
|
# Make a HTTP PUT request.
|
@@ -78,7 +78,7 @@ module Dnsimple
|
|
78
78
|
# @param [Hash] options Body and header params for request
|
79
79
|
# @return [HTTParty::Response]
|
80
80
|
def put(path, options = {})
|
81
|
-
|
81
|
+
execute :put, path, options
|
82
82
|
end
|
83
83
|
|
84
84
|
# Make a HTTP DELETE request.
|
@@ -87,26 +87,22 @@ module Dnsimple
|
|
87
87
|
# @param [Hash] options Query and header params for request
|
88
88
|
# @return [HTTParty::Response]
|
89
89
|
def delete(path, options = {})
|
90
|
-
|
90
|
+
execute :delete, path, options
|
91
91
|
end
|
92
92
|
|
93
93
|
|
94
|
-
#
|
94
|
+
# Executes a request, validates and returns the response.
|
95
95
|
#
|
96
96
|
# @param [String] method The HTTP method
|
97
97
|
# @param [String] path The path, relative to {#api_endpoint}
|
98
98
|
# @param [Hash] options Query and header params for request
|
99
99
|
# @return [HTTParty::Response]
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
options[:body] = data
|
107
|
-
end
|
108
|
-
|
109
|
-
response = HTTParty.send(method, api_endpoint + path, Extra.deep_merge!(base_options, options))
|
100
|
+
# @raise [RequestError]
|
101
|
+
# @raise [NotFoundError]
|
102
|
+
# @raise [AuthenticationFailed]
|
103
|
+
# @raise [TwoFactorAuthenticationRequired]
|
104
|
+
def execute(method, path, data, options = {})
|
105
|
+
response = request(method, path, data, options)
|
110
106
|
|
111
107
|
case response.code
|
112
108
|
when 200..299
|
@@ -114,13 +110,38 @@ module Dnsimple
|
|
114
110
|
when 401
|
115
111
|
raise (response.headers[HEADER_OTP_TOKEN] == "required" ? TwoFactorAuthenticationRequired : AuthenticationFailed), response["message"]
|
116
112
|
when 404
|
117
|
-
raise
|
113
|
+
raise NotFoundError.new(response)
|
118
114
|
else
|
119
115
|
raise RequestError.new(response)
|
120
116
|
end
|
121
117
|
end
|
122
118
|
|
123
119
|
|
120
|
+
# Make a HTTP request.
|
121
|
+
#
|
122
|
+
# This method doesn't validate the response and never raise errors
|
123
|
+
# even in case of HTTP error codes, except for connection errors raised by
|
124
|
+
# the underlying HTTP client.
|
125
|
+
#
|
126
|
+
# Therefore, it's up to the caller to properly handle and validate the response.
|
127
|
+
#
|
128
|
+
# @param [String] method The HTTP method
|
129
|
+
# @param [String] path The path, relative to {#api_endpoint}
|
130
|
+
# @param [Hash] options Query and header params for request
|
131
|
+
# @return [HTTParty::Response]
|
132
|
+
def request(method, path, data, options = {})
|
133
|
+
if data.is_a?(Hash)
|
134
|
+
options[:query] = data.delete(:query) if data.key?(:query)
|
135
|
+
options[:headers] = data.delete(:headers) if data.key?(:headers)
|
136
|
+
end
|
137
|
+
if !data.empty?
|
138
|
+
options[:body] = data
|
139
|
+
end
|
140
|
+
|
141
|
+
HTTParty.send(method, api_endpoint + path, Extra.deep_merge!(base_options, options))
|
142
|
+
end
|
143
|
+
|
144
|
+
|
124
145
|
# @return [String] Base URL for API requests.
|
125
146
|
def api_endpoint
|
126
147
|
File.join(@api_endpoint, "")
|
@@ -10,14 +10,16 @@ module Dnsimple
|
|
10
10
|
# @param [Hash] options
|
11
11
|
#
|
12
12
|
# @return [Array<Struct::Certificate>]
|
13
|
-
# @raise [
|
13
|
+
# @raise [NotFoundError]
|
14
14
|
# @raise [RequestError] When the request fails.
|
15
|
-
def
|
15
|
+
def certificates(domain, options = {})
|
16
16
|
response = client.get("v1/domains/#{domain}/certificates", options)
|
17
17
|
|
18
18
|
response.map { |r| Struct::Certificate.new(r["certificate"]) }
|
19
19
|
end
|
20
20
|
|
21
|
+
alias :list :certificates
|
22
|
+
|
21
23
|
# Gets a certificate for a domain.
|
22
24
|
#
|
23
25
|
# @see http://developer.dnsimple.com/domains/certificates/#get
|
@@ -26,9 +28,9 @@ module Dnsimple
|
|
26
28
|
# @param [Fixnum] certificate_id The certificate ID.
|
27
29
|
#
|
28
30
|
# @return [Struct::Certificate]
|
29
|
-
# @raise [
|
31
|
+
# @raise [NotFoundError]
|
30
32
|
# @raise [RequestError] When the request fails.
|
31
|
-
def
|
33
|
+
def certificate(domain, certificate_id)
|
32
34
|
response = client.get("v1/domains/#{domain}/certificates/#{certificate_id}")
|
33
35
|
|
34
36
|
Struct::Certificate.new(response["certificate"])
|
@@ -54,7 +56,7 @@ module Dnsimple
|
|
54
56
|
# @param [Fixnum] contact_id The ID of the contact associated to the certificate.
|
55
57
|
#
|
56
58
|
# @return [Struct::Certificate]
|
57
|
-
# @raise [
|
59
|
+
# @raise [NotFoundError]
|
58
60
|
# @raise [RequestError] When the request fails.
|
59
61
|
def purchase(domain, name, contact_id, options = {})
|
60
62
|
options = Extra.deep_merge(options, { certificate: { name: name, contact_id: contact_id }})
|
@@ -69,7 +71,7 @@ module Dnsimple
|
|
69
71
|
# @param [Fixnum] certificate_id The certificate ID.
|
70
72
|
#
|
71
73
|
# @return [Struct::Certificate]
|
72
|
-
# @raise [
|
74
|
+
# @raise [NotFoundError]
|
73
75
|
# @raise [RequestError] When the request fails.
|
74
76
|
def configure(domain, certificate_id)
|
75
77
|
response = client.put("v1/domains/#{domain}/certificates/#{certificate_id}/configure")
|
@@ -84,7 +86,7 @@ module Dnsimple
|
|
84
86
|
# @param [Fixnum] email The approver email.
|
85
87
|
#
|
86
88
|
# @return [Struct::Certificate]
|
87
|
-
# @raise [
|
89
|
+
# @raise [NotFoundError]
|
88
90
|
# @raise [RequestError] When the request fails.
|
89
91
|
def submit(domain, certificate_id, email)
|
90
92
|
options = { certificate: { approver_email: email }}
|
@@ -8,12 +8,14 @@ module Dnsimple
|
|
8
8
|
#
|
9
9
|
# @return [Array<Struct::Contact>]
|
10
10
|
# @raise [RequestError] When the request fails.
|
11
|
-
def
|
11
|
+
def contacts
|
12
12
|
response = client.get("v1/contacts")
|
13
13
|
|
14
14
|
response.map { |r| Struct::Contact.new(r["contact"]) }
|
15
15
|
end
|
16
16
|
|
17
|
+
alias :list :contacts
|
18
|
+
|
17
19
|
# Creates a contact in the account.
|
18
20
|
#
|
19
21
|
# @see http://developer.dnsimple.com/contacts/#create
|
@@ -37,9 +39,9 @@ module Dnsimple
|
|
37
39
|
# @param [Fixnum] contact The contact id.
|
38
40
|
#
|
39
41
|
# @return [Struct::Contact]
|
40
|
-
# @raise [
|
42
|
+
# @raise [NotFoundError]
|
41
43
|
# @raise [RequestError] When the request fails.
|
42
|
-
def
|
44
|
+
def contact(contact)
|
43
45
|
response = client.get("v1/contacts/#{contact}")
|
44
46
|
|
45
47
|
Struct::Contact.new(response["contact"])
|
@@ -53,7 +55,7 @@ module Dnsimple
|
|
53
55
|
# @param [Hash] attributes
|
54
56
|
#
|
55
57
|
# @return [Struct::Contact]
|
56
|
-
# @raise [
|
58
|
+
# @raise [NotFoundError]
|
57
59
|
# @raise [RequestError] When the request fails.
|
58
60
|
def update(contact, attributes = {})
|
59
61
|
options = { contact: attributes }
|
@@ -71,7 +73,7 @@ module Dnsimple
|
|
71
73
|
# @param [Fixnum] contact The contact id.
|
72
74
|
#
|
73
75
|
# @return [void]
|
74
|
-
# @raise [
|
76
|
+
# @raise [NotFoundError]
|
75
77
|
# @raise [RequestError] When the request fails.
|
76
78
|
def delete(contact)
|
77
79
|
client.delete("v1/contacts/#{contact}")
|
@@ -8,12 +8,14 @@ module Dnsimple
|
|
8
8
|
#
|
9
9
|
# @return [Array<Struct::Domain>]
|
10
10
|
# @raise [RequestError] When the request fails.
|
11
|
-
def
|
11
|
+
def domains(options = {})
|
12
12
|
response = client.get("v1/domains", options)
|
13
13
|
|
14
14
|
response.map { |r| Struct::Domain.new(r["domain"]) }
|
15
15
|
end
|
16
16
|
|
17
|
+
alias :list :domains
|
18
|
+
|
17
19
|
# Gets a domain from the account.
|
18
20
|
#
|
19
21
|
# @see http://developer.dnsimple.com/domains/#get
|
@@ -21,9 +23,9 @@ module Dnsimple
|
|
21
23
|
# @param [#to_s] domain The domain id or domain name.
|
22
24
|
#
|
23
25
|
# @return [Struct::Domain]
|
24
|
-
# @raise [
|
26
|
+
# @raise [NotFoundError]
|
25
27
|
# @raise [RequestError] When the request fails.
|
26
|
-
def
|
28
|
+
def domain(domain)
|
27
29
|
response = client.get("v1/domains/#{domain}")
|
28
30
|
|
29
31
|
Struct::Domain.new(response["domain"])
|
@@ -54,7 +56,7 @@ module Dnsimple
|
|
54
56
|
# @param [#to_s] domain The domain id or domain name.
|
55
57
|
#
|
56
58
|
# @return [void]
|
57
|
-
# @raise [
|
59
|
+
# @raise [NotFoundError]
|
58
60
|
# @raise [RequestError] When the request fails.
|
59
61
|
def delete(domain)
|
60
62
|
client.delete("v1/domains/#{domain}")
|
@@ -9,9 +9,9 @@ module Dnsimple
|
|
9
9
|
# @param [#to_s] domain The domain id or domain name.
|
10
10
|
#
|
11
11
|
# @return [Array<Struct::EmailForward>]
|
12
|
-
# @raise [
|
12
|
+
# @raise [NotFoundError]
|
13
13
|
# @raise [RequestError] When the request fails.
|
14
|
-
def
|
14
|
+
def email_forwards(domain)
|
15
15
|
response = client.get("v1/domains/#{domain}/email_forwards")
|
16
16
|
|
17
17
|
response.map { |r| Struct::EmailForward.new(r["email_forward"]) }
|
@@ -25,7 +25,7 @@ module Dnsimple
|
|
25
25
|
# @param [Hash] attributes
|
26
26
|
#
|
27
27
|
# @return [Struct::EmailForward]
|
28
|
-
# @raise [
|
28
|
+
# @raise [NotFoundError]
|
29
29
|
# @raise [RequestError] When the request fails.
|
30
30
|
def create_email_forward(domain, attributes = {})
|
31
31
|
Extra.validate_mandatory_attributes(attributes, [:from, :to])
|
@@ -43,9 +43,9 @@ module Dnsimple
|
|
43
43
|
# @param [Fixnum] forward The forward id.
|
44
44
|
#
|
45
45
|
# @return [Struct::EmailForward]
|
46
|
-
# @raise [
|
46
|
+
# @raise [NotFoundError]
|
47
47
|
# @raise [RequestError] When the request fails.
|
48
|
-
def
|
48
|
+
def email_forward(domain, forward)
|
49
49
|
response = client.get("v1/domains/#{domain}/email_forwards/#{forward}")
|
50
50
|
|
51
51
|
Struct::EmailForward.new(response["email_forward"])
|
@@ -59,7 +59,7 @@ module Dnsimple
|
|
59
59
|
# @param [Fixnum] forward The forward id.
|
60
60
|
#
|
61
61
|
# @return [void]
|
62
|
-
# @raise [
|
62
|
+
# @raise [NotFoundError]
|
63
63
|
# @raise [RequestError] When the request fails.
|
64
64
|
def delete_email_forward(domain, forward)
|
65
65
|
client.delete("v1/domains/#{domain}/email_forwards/#{forward}")
|
@@ -10,9 +10,9 @@ module Dnsimple
|
|
10
10
|
# @param [Hash] options
|
11
11
|
#
|
12
12
|
# @return [Array<Struct::Record>]
|
13
|
-
# @raise [
|
13
|
+
# @raise [NotFoundError]
|
14
14
|
# @raise [RequestError] When the request fails.
|
15
|
-
def
|
15
|
+
def records(domain, options = {})
|
16
16
|
response = client.get("v1/domains/#{domain}/records", options)
|
17
17
|
|
18
18
|
response.map { |r| Struct::Record.new(r["record"]) }
|
@@ -26,7 +26,7 @@ module Dnsimple
|
|
26
26
|
# @param [Hash] attributes
|
27
27
|
#
|
28
28
|
# @return [Struct::Record]
|
29
|
-
# @raise [
|
29
|
+
# @raise [NotFoundError]
|
30
30
|
# @raise [RequestError] When the request fails.
|
31
31
|
def create_record(domain, attributes = {})
|
32
32
|
Extra.validate_mandatory_attributes(attributes, [:name, :record_type, :content])
|
@@ -44,9 +44,9 @@ module Dnsimple
|
|
44
44
|
# @param [Fixnum] record The record id.
|
45
45
|
#
|
46
46
|
# @return [Struct::Record]
|
47
|
-
# @raise [
|
47
|
+
# @raise [NotFoundError]
|
48
48
|
# @raise [RequestError] When the request fails.
|
49
|
-
def
|
49
|
+
def record(domain, record)
|
50
50
|
response = client.get("v1/domains/#{domain}/records/#{record}")
|
51
51
|
|
52
52
|
Struct::Record.new(response["record"])
|
@@ -61,7 +61,7 @@ module Dnsimple
|
|
61
61
|
# @param [Hash] attributes
|
62
62
|
#
|
63
63
|
# @return [Struct::Record]
|
64
|
-
# @raise [
|
64
|
+
# @raise [NotFoundError]
|
65
65
|
# @raise [RequestError] When the request fails.
|
66
66
|
def update_record(domain, record, attributes = {})
|
67
67
|
options = { record: attributes }
|
@@ -78,7 +78,7 @@ module Dnsimple
|
|
78
78
|
# @param [Fixnum] record The record id.
|
79
79
|
#
|
80
80
|
# @return [void]
|
81
|
-
# @raise [
|
81
|
+
# @raise [NotFoundError]
|
82
82
|
# @raise [RequestError] When the request fails.
|
83
83
|
def delete_record(domain, record)
|
84
84
|
client.delete("v1/domains/#{domain}/records/#{record}")
|