dnsimple 2.0.0.alpha2 → 2.0.0.alpha3
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/CHANGELOG.markdown +6 -2
- data/README.markdown +32 -30
- data/dnsimple.gemspec +1 -2
- data/lib/dnsimple.rb +2 -13
- data/lib/dnsimple/client.rb +164 -53
- data/lib/dnsimple/client/certificates_service.rb +98 -0
- data/lib/dnsimple/client/client_service.rb +8 -0
- data/lib/dnsimple/client/contacts_service.rb +82 -0
- data/lib/dnsimple/client/domains_service.rb +333 -0
- data/lib/dnsimple/client/name_servers_service.rb +69 -0
- data/lib/dnsimple/client/registrars_service.rb +105 -0
- data/lib/dnsimple/client/services_service.rb +95 -0
- data/lib/dnsimple/client/templates_service.rb +180 -0
- data/lib/dnsimple/client/users_service.rb +37 -0
- data/lib/dnsimple/compatibility.rb +46 -0
- data/lib/dnsimple/default.rb +86 -0
- data/lib/dnsimple/error.rb +7 -11
- data/lib/dnsimple/extra.rb +54 -0
- data/lib/dnsimple/struct.rb +29 -0
- data/lib/dnsimple/struct/certificate.rb +56 -0
- data/lib/dnsimple/struct/contact.rb +61 -0
- data/lib/dnsimple/struct/domain.rb +40 -0
- data/lib/dnsimple/struct/email_forward.rb +14 -0
- data/lib/dnsimple/struct/extended_attribute.rb +39 -0
- data/lib/dnsimple/struct/membership.rb +22 -0
- data/lib/dnsimple/struct/price.rb +16 -0
- data/lib/dnsimple/struct/record.rb +22 -0
- data/lib/dnsimple/struct/service.rb +19 -0
- data/lib/dnsimple/struct/template.rb +19 -0
- data/lib/dnsimple/struct/template_record.rb +24 -0
- data/lib/dnsimple/struct/transfer_order.rb +10 -0
- data/lib/dnsimple/struct/user.rb +17 -0
- data/lib/dnsimple/struct/whois_privacy.rb +19 -0
- data/lib/dnsimple/version.rb +1 -1
- data/spec/dnsimple/client/certificates_service_spec.rb +196 -0
- data/spec/dnsimple/client/contacts_service_spec.rb +179 -0
- data/spec/dnsimple/client/domains_service_spec.rb +662 -0
- data/spec/dnsimple/client/name_servers_service_spec.rb +131 -0
- data/spec/dnsimple/client/registrars_service_spec.rb +160 -0
- data/spec/dnsimple/client/services_service_spec.rb +162 -0
- data/spec/dnsimple/client/templates_service_spec.rb +371 -0
- data/spec/dnsimple/client/users_service_spec.rb +70 -0
- data/spec/dnsimple/client_spec.rb +108 -99
- data/spec/dnsimple/compatibility_spec.rb +57 -0
- data/spec/files/2fa/exchange-token.http +8 -11
- data/spec/files/badgateway.http +14 -0
- data/spec/files/certificates/configure/success.http +19 -0
- data/spec/files/certificates/index/success.http +1 -1
- data/spec/files/certificates/notfound.http +19 -0
- data/spec/files/certificates/purchase/success.http +19 -0
- data/spec/files/certificates/show/success.http +1 -1
- data/spec/files/certificates/submit/success.http +19 -0
- data/spec/files/contacts/create/badrequest-missingcontact.http +19 -0
- data/spec/files/contacts/create/badrequest-validationerror.http +19 -0
- data/spec/files/contacts/create/created.http +22 -0
- data/spec/files/contacts/delete/success-204.http +18 -0
- data/spec/files/{extended_attributes/com.http → contacts/delete/success.http} +5 -5
- data/spec/files/{domains/auto_renewal_enable → contacts/index}/success.http +6 -6
- data/spec/files/contacts/notfound.http +19 -0
- data/spec/files/contacts/update/success.http +21 -0
- data/spec/files/domains/create/created.http +21 -0
- data/spec/files/domains/index/success.http +11 -9
- data/spec/files/domains/notfound.http +11 -9
- data/spec/files/domains/show/success.http +12 -10
- data/spec/files/domains_autorenewal/disable/success.http +21 -0
- data/spec/files/domains_autorenewal/enable/success.http +21 -0
- data/spec/files/domains_autorenewal/notfound-domain.http +19 -0
- data/spec/files/domains_forwards/create/created.http +22 -0
- data/spec/files/domains_forwards/delete/success.http +17 -0
- data/spec/files/domains_forwards/get/success.http +21 -0
- data/spec/files/domains_forwards/list/success.http +21 -0
- data/spec/files/domains_forwards/notfound-domain.http +19 -0
- data/spec/files/domains_forwards/notfound.http +19 -0
- data/spec/files/domains_records/create/created.http +21 -0
- data/spec/files/domains_records/delete/success-204.http +18 -0
- data/spec/files/{contacts/show/notfound.http → domains_records/delete/success.http} +9 -7
- data/spec/files/{records → domains_records}/index/success.http +0 -0
- data/spec/files/{records/show → domains_records}/notfound.http +1 -1
- data/spec/files/{records → domains_records}/show/success.http +0 -0
- data/spec/files/domains_records/update/success.http +21 -0
- data/spec/files/domains_sharing/create/success.http +21 -0
- data/spec/files/domains_sharing/delete/success.http +17 -0
- data/spec/files/domains_sharing/list/success.http +21 -0
- data/spec/files/domains_sharing/notfound-domain.http +19 -0
- data/spec/files/domains_sharing/notfound.http +19 -0
- data/spec/files/domains_whois_privacy/disable/success.http +21 -0
- data/spec/files/domains_whois_privacy/enable/success.http +22 -0
- data/spec/files/domains_zones/get/success.http +21 -0
- data/spec/files/domains_zones/notfound-domain.http +19 -0
- data/spec/files/{domains/auto_renewal_disable/notfound.http → nameservers/change/success.http} +23 -21
- data/spec/files/nameservers/deregister/success.http +17 -0
- data/spec/files/{domains/auto_renewal_enable/notfound.http → nameservers/list/success.http} +23 -21
- data/spec/files/nameservers/notfound-domain.http +19 -0
- data/spec/files/nameservers/register/badrequest-valueerror.http +19 -0
- data/spec/files/nameservers/register/success.http +21 -0
- data/spec/files/registrars/check/available.http +19 -0
- data/spec/files/registrars/check/registered.http +21 -0
- data/spec/files/registrars/register/badrequest-missingdomain.http +19 -0
- data/spec/files/registrars/register/badrequest-missingregistrant.http +19 -0
- data/spec/files/registrars/register/success.http +21 -0
- data/spec/files/registrars/renew/badrequest-missingrenewal.http +19 -0
- data/spec/files/registrars/renew/badrequest-unable.http +19 -0
- data/spec/files/registrars/renew/success.http +21 -0
- data/spec/files/registrars/transfer/success.http +21 -0
- data/spec/files/registrars_extended_attributes/list/success.http +21 -0
- data/spec/files/registrars_prices/list/success.http +21 -0
- data/spec/files/services/applied/success.http +21 -0
- data/spec/files/services/apply/success.http +21 -0
- data/spec/files/services/available/success.http +21 -0
- data/spec/files/services/index/success.http +21 -0
- data/spec/files/services/notfound.http +19 -0
- data/spec/files/services/show/success.http +21 -0
- data/spec/files/services/unapply/success.http +21 -0
- data/spec/files/subscription/show/success.http +21 -0
- data/spec/files/templates/apply/success.http +21 -0
- data/spec/files/templates/create/created.http +22 -0
- data/spec/files/templates/delete/success-204.http +21 -0
- data/spec/files/templates/delete/success.http +21 -0
- data/spec/files/templates/index/success.http +21 -0
- data/spec/files/templates/notfound.http +19 -0
- data/spec/files/templates/show/success.http +12 -10
- data/spec/files/templates/update/success.http +21 -0
- data/spec/files/templates_records/create/created.http +22 -0
- data/spec/files/templates_records/delete/success-204.http +19 -0
- data/spec/files/templates_records/delete/success.http +21 -0
- data/spec/files/templates_records/index/success.http +21 -0
- data/spec/files/templates_records/notfound.http +19 -0
- data/spec/files/templates_records/show/success.http +21 -0
- data/spec/files/templates_records/update/success.http +21 -0
- data/spec/files/users/user/success.http +21 -0
- data/spec/spec_helper.rb +0 -2
- metadata +206 -73
- data/lib/dnsimple/base.rb +0 -10
- data/lib/dnsimple/certificate.rb +0 -143
- data/lib/dnsimple/contact.rb +0 -157
- data/lib/dnsimple/domain.rb +0 -252
- data/lib/dnsimple/extended_attribute.rb +0 -52
- data/lib/dnsimple/record.rb +0 -94
- data/lib/dnsimple/service.rb +0 -42
- data/lib/dnsimple/template.rb +0 -65
- data/lib/dnsimple/template_record.rb +0 -80
- data/lib/dnsimple/transfer_order.rb +0 -34
- data/lib/dnsimple/user.rb +0 -50
- data/spec/dnsimple/certificate_spec.rb +0 -59
- data/spec/dnsimple/contact_spec.rb +0 -45
- data/spec/dnsimple/domain_spec.rb +0 -241
- data/spec/dnsimple/extended_attributes_spec.rb +0 -54
- data/spec/dnsimple/record_spec.rb +0 -51
- data/spec/dnsimple/template_spec.rb +0 -31
- data/spec/dnsimple/user_spec.rb +0 -70
- data/spec/files/account/user/success.http +0 -19
- data/spec/files/certificates/show/notfound.http +0 -17
- data/spec/files/domains/auto_renewal_disable/success.http +0 -23
- data/spec/files/domains/create/success.http +0 -19
- data/spec/files/extended_attributes/ca.http +0 -19
- data/spec/files/extended_attributes/success.http +0 -19
- data/spec/files/templates/show/notfound.http +0 -17
@@ -0,0 +1,105 @@
|
|
1
|
+
module Dnsimple
|
2
|
+
class Client
|
3
|
+
class RegistrarsService < ClientService
|
4
|
+
|
5
|
+
# Checks the availability of a domain name.
|
6
|
+
#
|
7
|
+
# @see http://developer.dnsimple.com/domains/registry/#check
|
8
|
+
#
|
9
|
+
# @param [#to_s] name The domain name to check.
|
10
|
+
#
|
11
|
+
# @return [String] "available" or "registered"
|
12
|
+
# @raise [RequestError] When the request fails.
|
13
|
+
def check(name, options={})
|
14
|
+
begin
|
15
|
+
client.get("v1/domains/#{name}/check", options)
|
16
|
+
"registered"
|
17
|
+
rescue RecordNotFound
|
18
|
+
"available"
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
# Registers a domain.
|
23
|
+
#
|
24
|
+
# @see http://developer.dnsimple.com/domains/registry/#register
|
25
|
+
#
|
26
|
+
# @param [#to_s] name The domain name to register.
|
27
|
+
# @param [Fixnum] registrant_id The id of the contact to use as registrant.
|
28
|
+
# @param [Hash] extended_attributes
|
29
|
+
# @param [Hash] options
|
30
|
+
#
|
31
|
+
# @return [Struct::Domain]
|
32
|
+
# @raise [RequestError] When the request fails.
|
33
|
+
def register(name, registrant_id, extended_attributes = {}, options = {})
|
34
|
+
options = Extra.deep_merge(options, { domain: { name: name, registrant_id: registrant_id }, extended_attribute: extended_attributes })
|
35
|
+
response = client.post("v1/domain_registrations", options)
|
36
|
+
|
37
|
+
Struct::Domain.new(response["domain"])
|
38
|
+
end
|
39
|
+
|
40
|
+
# Transfers a domain.
|
41
|
+
#
|
42
|
+
# @see http://developer.dnsimple.com/domains/registry/#transfer
|
43
|
+
#
|
44
|
+
# @param [#to_s] name The domain name to register.
|
45
|
+
# @param [String] auth_code
|
46
|
+
# @param [Fixnum] registrant_id The id of the contact to use as registrant.
|
47
|
+
# @param [Hash] extended_attributes
|
48
|
+
# @param [Hash] options
|
49
|
+
#
|
50
|
+
# @return [Struct::TransferOrder]
|
51
|
+
# @raise [RequestError] When the request fails.
|
52
|
+
def transfer(name, auth_code, registrant_id, extended_attributes = {}, options = {})
|
53
|
+
options = Extra.deep_merge(options, { domain: { name: name, registrant_id: registrant_id }, extended_attribute: extended_attributes, transfer_order: { authinfo: auth_code }})
|
54
|
+
response = client.post("v1/domain_transfers", options)
|
55
|
+
|
56
|
+
Struct::TransferOrder.new(response["transfer_order"])
|
57
|
+
end
|
58
|
+
|
59
|
+
# Renew a domain.
|
60
|
+
#
|
61
|
+
# @see http://developer.dnsimple.com/domains/registry/#renew
|
62
|
+
#
|
63
|
+
# @param [#to_s] name The domain name to renew.
|
64
|
+
# @param [Hash] options
|
65
|
+
#
|
66
|
+
# @return [Struct::Domain]
|
67
|
+
# @raise [RequestError] When the request fails.
|
68
|
+
def renew(name, options = {})
|
69
|
+
options = Extra.deep_merge(options, { domain: { name: name }})
|
70
|
+
response = client.post("v1/domain_renewals", options)
|
71
|
+
|
72
|
+
Struct::Domain.new(response["domain"])
|
73
|
+
end
|
74
|
+
|
75
|
+
|
76
|
+
# List the extended attributes for a TLD.
|
77
|
+
#
|
78
|
+
# @see http://developer.dnsimple.com/registrar/extended-attributes/#list
|
79
|
+
#
|
80
|
+
# @param [#to_s] tld The TLD name.
|
81
|
+
#
|
82
|
+
# @return [Array<Struct::ExtendedAttribute>]
|
83
|
+
# @raise [RequestError] When the request fails.
|
84
|
+
def list_extended_attributes(tld)
|
85
|
+
response = client.get("v1/extended_attributes/#{tld}")
|
86
|
+
|
87
|
+
response.map { |r| Struct::ExtendedAttribute.new(r) }
|
88
|
+
end
|
89
|
+
|
90
|
+
|
91
|
+
# List all the TLD prices.
|
92
|
+
#
|
93
|
+
# @see http://developer.dnsimple.com/registrar/prices/#list
|
94
|
+
#
|
95
|
+
# @return [Array<Struct::Price>]
|
96
|
+
# @raise [RequestError] When the request fails.
|
97
|
+
def list_prices
|
98
|
+
response = client.get("v1/prices")
|
99
|
+
|
100
|
+
response.map { |r| Struct::Price.new(r["price"]) }
|
101
|
+
end
|
102
|
+
|
103
|
+
end
|
104
|
+
end
|
105
|
+
end
|
@@ -0,0 +1,95 @@
|
|
1
|
+
module Dnsimple
|
2
|
+
class Client
|
3
|
+
class ServicesService < ClientService
|
4
|
+
|
5
|
+
# Lists the supported services.
|
6
|
+
#
|
7
|
+
# @see http://developer.dnsimple.com/services/#list
|
8
|
+
#
|
9
|
+
# @return [Array<Struct::Service>]
|
10
|
+
# @raise [RequestError] When the request fails.
|
11
|
+
def list
|
12
|
+
response = client.get("v1/services")
|
13
|
+
|
14
|
+
response.map { |r| Struct::Service.new(r["service"]) }
|
15
|
+
end
|
16
|
+
|
17
|
+
# Gets a service.
|
18
|
+
#
|
19
|
+
# @see http://developer.dnsimple.com/services/#get
|
20
|
+
#
|
21
|
+
# @param [Fixnum] service The service id.
|
22
|
+
#
|
23
|
+
# @return [Struct::Service]
|
24
|
+
# @raise [RecordNotFound]
|
25
|
+
# @raise [RequestError] When the request fails.
|
26
|
+
def find(service)
|
27
|
+
response = client.get("v1/services/#{service}")
|
28
|
+
|
29
|
+
Struct::Service.new(response["service"])
|
30
|
+
end
|
31
|
+
|
32
|
+
# Lists the services applied to a domain.
|
33
|
+
#
|
34
|
+
# @see http://developer.dnsimple.com/services/#applied
|
35
|
+
#
|
36
|
+
# @param [#to_s] domain The domain id or domain name.
|
37
|
+
#
|
38
|
+
# @return [Array<Struct::Service>]
|
39
|
+
# @raise [RecordNotFound]
|
40
|
+
# @raise [RequestError] When the request fails.
|
41
|
+
def applied(domain)
|
42
|
+
response = client.get("v1/domains/#{domain}/applied_services")
|
43
|
+
|
44
|
+
response.map { |r| Struct::Service.new(r["service"]) }
|
45
|
+
end
|
46
|
+
|
47
|
+
# Lists the services not applied to a domain.
|
48
|
+
#
|
49
|
+
# @see http://developer.dnsimple.com/services/#available
|
50
|
+
#
|
51
|
+
# @param [#to_s] domain The domain id or domain name.
|
52
|
+
#
|
53
|
+
# @return [Array<Struct::Service>]
|
54
|
+
# @raise [RecordNotFound]
|
55
|
+
# @raise [RequestError] When the request fails.
|
56
|
+
def available(domain)
|
57
|
+
response = client.get("v1/domains/#{domain}/available_services")
|
58
|
+
|
59
|
+
response.map { |r| Struct::Service.new(r["service"]) }
|
60
|
+
end
|
61
|
+
|
62
|
+
# Applies a service to a domain.
|
63
|
+
#
|
64
|
+
# @see http://developer.dnsimple.com/services/#apply
|
65
|
+
#
|
66
|
+
# @param [#to_s] domain The domain id or domain name.
|
67
|
+
# @param [Fixnum] service The service id.
|
68
|
+
#
|
69
|
+
# @return [void]
|
70
|
+
# @raise [RecordNotFound]
|
71
|
+
# @raise [RequestError] When the request fails.
|
72
|
+
def apply(domain, service)
|
73
|
+
options = { service: { id: service }}
|
74
|
+
response = client.post("v1/domains/#{domain}/applied_services", options)
|
75
|
+
response.code == 200
|
76
|
+
end
|
77
|
+
|
78
|
+
# Un-applies a service from a domain.
|
79
|
+
#
|
80
|
+
# @see http://developer.dnsimple.com/services/#unapply
|
81
|
+
#
|
82
|
+
# @param [#to_s] domain The domain id or domain name.
|
83
|
+
# @param [Fixnum] service The service id.
|
84
|
+
#
|
85
|
+
# @return [void]
|
86
|
+
# @raise [RecordNotFound]
|
87
|
+
# @raise [RequestError] When the request fails.
|
88
|
+
def unapply(domain, service)
|
89
|
+
response = client.delete("v1/domains/#{domain}/applied_services/#{service}")
|
90
|
+
response.code == 200
|
91
|
+
end
|
92
|
+
|
93
|
+
end
|
94
|
+
end
|
95
|
+
end
|
@@ -0,0 +1,180 @@
|
|
1
|
+
module Dnsimple
|
2
|
+
class Client
|
3
|
+
class TemplatesService < ClientService
|
4
|
+
|
5
|
+
# Lists the templates in the account.
|
6
|
+
#
|
7
|
+
# @see http://developer.dnsimple.com/templates/#list
|
8
|
+
#
|
9
|
+
# @return [Array<Struct::Template>]
|
10
|
+
# @raise [RequestError] When the request fails.
|
11
|
+
def list
|
12
|
+
response = client.get("v1/templates")
|
13
|
+
|
14
|
+
response.map { |r| Struct::Template.new(r["dns_template"]) }
|
15
|
+
end
|
16
|
+
|
17
|
+
# Creates a template in the account.
|
18
|
+
#
|
19
|
+
# @see http://developer.dnsimple.com/templates/#create
|
20
|
+
#
|
21
|
+
# @param [Hash] attributes
|
22
|
+
#
|
23
|
+
# @return [Struct::Template]
|
24
|
+
# @raise [RequestError] When the request fails.
|
25
|
+
def create(attributes = {})
|
26
|
+
Extra.validate_mandatory_attributes(attributes, [:name, :short_name])
|
27
|
+
options = { dns_template: attributes }
|
28
|
+
response = client.post("v1/templates", options)
|
29
|
+
|
30
|
+
Struct::Template.new(response["dns_template"])
|
31
|
+
end
|
32
|
+
|
33
|
+
# Gets a template from the account.
|
34
|
+
#
|
35
|
+
# @see http://developer.dnsimple.com/templates/#get
|
36
|
+
#
|
37
|
+
# @param [#to_s] template The template id or short-name.
|
38
|
+
#
|
39
|
+
# @return [Struct::Template]
|
40
|
+
# @raise [RecordNotFound]
|
41
|
+
# @raise [RequestError] When the request fails.
|
42
|
+
def find(template)
|
43
|
+
response = client.get("v1/templates/#{template}")
|
44
|
+
|
45
|
+
Struct::Template.new(response["dns_template"])
|
46
|
+
end
|
47
|
+
|
48
|
+
# Updates a template in the account.
|
49
|
+
#
|
50
|
+
# @see http://developer.dnsimple.com/templates/#update
|
51
|
+
#
|
52
|
+
# @param [#to_s] template The template id or short-name.
|
53
|
+
# @param [Hash] attributes
|
54
|
+
#
|
55
|
+
# @return [Struct::Template]
|
56
|
+
# @raise [RecordNotFound]
|
57
|
+
# @raise [RequestError] When the request fails.
|
58
|
+
def update(template, attributes = {})
|
59
|
+
options = { dns_template: attributes }
|
60
|
+
response = client.put("v1/templates/#{template}", options)
|
61
|
+
|
62
|
+
Struct::Template.new(response["dns_template"])
|
63
|
+
end
|
64
|
+
|
65
|
+
# Deletes a template from the account.
|
66
|
+
#
|
67
|
+
# WARNING: this cannot be undone.
|
68
|
+
#
|
69
|
+
# @see http://developer.dnsimple.com/templates/#delete
|
70
|
+
#
|
71
|
+
# @param [#to_s] template The template id or short-name.
|
72
|
+
#
|
73
|
+
# @return [void]
|
74
|
+
# @raise [RecordNotFound]
|
75
|
+
# @raise [RequestError] When the request fails.
|
76
|
+
def delete(template)
|
77
|
+
client.delete("v1/templates/#{template}")
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
# Applies the template to the domain.
|
82
|
+
#
|
83
|
+
# @see http://developer.dnsimple.com/templates/#apply
|
84
|
+
#
|
85
|
+
# @param [#to_s] domain The domain id or domain name.
|
86
|
+
# @param [#to_s] template The template id or short-name.
|
87
|
+
#
|
88
|
+
# @return [void]
|
89
|
+
# @raise [RecordNotFound]
|
90
|
+
# @raise [RequestError] When the request fails.
|
91
|
+
def apply(domain, template)
|
92
|
+
response = client.post("v1/domains/#{domain}/templates/#{template}/apply")
|
93
|
+
response.code == 200
|
94
|
+
end
|
95
|
+
|
96
|
+
|
97
|
+
# Lists the records for a template.
|
98
|
+
#
|
99
|
+
# @see http://developer.dnsimple.com/templates/records/#list
|
100
|
+
#
|
101
|
+
# @param [#to_s] template The template id or short-name.
|
102
|
+
#
|
103
|
+
# @return [Array<Struct::TemplateRecord>]
|
104
|
+
# @raise [RecordNotFound]
|
105
|
+
# @raise [RequestError] When the request fails.
|
106
|
+
def list_records(template)
|
107
|
+
response = client.get("v1/templates/#{template}/records")
|
108
|
+
|
109
|
+
response.map { |r| Struct::TemplateRecord.new(r["dns_template_record"]) }
|
110
|
+
end
|
111
|
+
|
112
|
+
# Creates a record for a template.
|
113
|
+
#
|
114
|
+
# @see http://developer.dnsimple.com/templates/records/#create
|
115
|
+
#
|
116
|
+
# @param [#to_s] template The template id or short-name.
|
117
|
+
# @param [Hash] attributes
|
118
|
+
#
|
119
|
+
# @return [Struct::TemplateRecord]
|
120
|
+
# @raise [RecordNotFound]
|
121
|
+
# @raise [RequestError] When the request fails.
|
122
|
+
def create_record(template, attributes = {})
|
123
|
+
Extra.validate_mandatory_attributes(attributes, [:name, :record_type, :content])
|
124
|
+
options = { dns_template_record: attributes }
|
125
|
+
response = client.post("v1/templates/#{template}/records", options)
|
126
|
+
|
127
|
+
Struct::TemplateRecord.new(response["dns_template_record"])
|
128
|
+
end
|
129
|
+
|
130
|
+
# Gets a record for a template.
|
131
|
+
#
|
132
|
+
# @see http://developer.dnsimple.com/templates/records/#delete
|
133
|
+
#
|
134
|
+
# @param [#to_s] template The template id or short-name.
|
135
|
+
# @param [Fixnum] record The record id.
|
136
|
+
#
|
137
|
+
# @return [Struct::TemplateRecord]
|
138
|
+
# @raise [RecordNotFound]
|
139
|
+
# @raise [RequestError] When the request fails.
|
140
|
+
def find_record(template, record)
|
141
|
+
response = client.get("v1/templates/#{template}/records/#{record}")
|
142
|
+
|
143
|
+
Struct::TemplateRecord.new(response["dns_template_record"])
|
144
|
+
end
|
145
|
+
|
146
|
+
# Updates a record for a template.
|
147
|
+
#
|
148
|
+
# @see http://developer.dnsimple.com/templates/#update
|
149
|
+
#
|
150
|
+
# @param [#to_s] template The template id or short-name.
|
151
|
+
# @param [Fixnum] record The record id.
|
152
|
+
# @param [Hash] attributes
|
153
|
+
#
|
154
|
+
# @return [Struct::TemplateRecord]
|
155
|
+
# @raise [RecordNotFound]
|
156
|
+
# @raise [RequestError] When the request fails.
|
157
|
+
def update_record(template, record, attributes = {})
|
158
|
+
options = { dns_template_record: attributes }
|
159
|
+
response = client.put("v1/templates/#{template}/records/#{record}", options)
|
160
|
+
|
161
|
+
Struct::TemplateRecord.new(response["dns_template_record"])
|
162
|
+
end
|
163
|
+
|
164
|
+
# Deletes a record for a template.
|
165
|
+
#
|
166
|
+
# @see http://developer.dnsimple.com/templates/records/#get
|
167
|
+
#
|
168
|
+
# @param [#to_s] template The template id or short-name.
|
169
|
+
# @param [Fixnum] record The record id.
|
170
|
+
#
|
171
|
+
# @return [Template]
|
172
|
+
# @raise [RecordNotFound]
|
173
|
+
# @raise [RequestError] When the request fails.
|
174
|
+
def delete_record(template, record)
|
175
|
+
client.delete("v1/templates/#{template}/records/#{record}")
|
176
|
+
end
|
177
|
+
|
178
|
+
end
|
179
|
+
end
|
180
|
+
end
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Dnsimple
|
2
|
+
class Client
|
3
|
+
class UsersService < ClientService
|
4
|
+
|
5
|
+
# Fetches the information about the authenticated user.
|
6
|
+
#
|
7
|
+
# @return [Struct::User] The authenticated user.
|
8
|
+
# @raise [RequestError] When the request fails.
|
9
|
+
def user
|
10
|
+
response = client.get("v1/user")
|
11
|
+
|
12
|
+
Struct::User.new(response["user"])
|
13
|
+
end
|
14
|
+
|
15
|
+
# Requests a new two-factor authentication exchange token.
|
16
|
+
#
|
17
|
+
# The exchange-token is required to validate API requests
|
18
|
+
# using HTTP Basic Authentication when the account has two-factor authentication enabled.
|
19
|
+
#
|
20
|
+
# @see http://developer.dnsimple.com/authentication/#twofa
|
21
|
+
#
|
22
|
+
# @example Request an Exchange Token
|
23
|
+
# Dnsimple::User.two_factor_exchange_token('0000000')
|
24
|
+
# # => "cda038832591e34f5df642ce2b61dc78"
|
25
|
+
#
|
26
|
+
# @param [String] otp_token the two-factor one time (OTP) token.
|
27
|
+
#
|
28
|
+
# @return [String] The two-factor API exchange token.
|
29
|
+
# @raise [AuthenticationFailed] if the provided OTP token is invalid.
|
30
|
+
def exchange_token(otp_token)
|
31
|
+
response = client.get("v1/user", headers: { Client::HEADER_2FA_STRICT => "1", Client::HEADER_OTP_TOKEN => otp_token })
|
32
|
+
response.headers[Client::HEADER_EXCHANGE_TOKEN]
|
33
|
+
end
|
34
|
+
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
@@ -0,0 +1,46 @@
|
|
1
|
+
module Dnsimple
|
2
|
+
|
3
|
+
# {Client} backwards compatibility
|
4
|
+
module Compatibility
|
5
|
+
def self.included(base)
|
6
|
+
base.extend ClassMethods
|
7
|
+
base.class_eval do
|
8
|
+
class << self
|
9
|
+
attr_accessor :base_uri, :username, :password, :exchange_token, :api_token, :domain_api_token
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
module ClassMethods
|
15
|
+
def client
|
16
|
+
options = {}
|
17
|
+
options[:api_endpoint] = base_uri if base_uri
|
18
|
+
options[:username] = username if username
|
19
|
+
options[:password] = password if password
|
20
|
+
options[:api_token] = api_token if api_token
|
21
|
+
options[:domain_api_token] = domain_api_token if domain_api_token
|
22
|
+
options[:exchange_token] = exchange_token if exchange_token
|
23
|
+
|
24
|
+
new(options)
|
25
|
+
end
|
26
|
+
|
27
|
+
def get(*args)
|
28
|
+
client.get(*args)
|
29
|
+
end
|
30
|
+
|
31
|
+
def post(*args)
|
32
|
+
client.post(*args)
|
33
|
+
end
|
34
|
+
|
35
|
+
def put(*args)
|
36
|
+
client.put(*args)
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete(*args)
|
40
|
+
client.delete(*args)
|
41
|
+
end
|
42
|
+
end
|
43
|
+
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|