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
@@ -1,52 +0,0 @@
|
|
1
|
-
module Dnsimple
|
2
|
-
|
3
|
-
# Used for domains that require extended attributes.
|
4
|
-
class ExtendedAttribute < Base
|
5
|
-
|
6
|
-
# An option for an extended attribute
|
7
|
-
class Option < Base
|
8
|
-
# The option name
|
9
|
-
attr_accessor :title
|
10
|
-
|
11
|
-
# The option value
|
12
|
-
attr_accessor :value
|
13
|
-
|
14
|
-
# A long description of the option
|
15
|
-
attr_accessor :description
|
16
|
-
end
|
17
|
-
|
18
|
-
# The extended attribute name
|
19
|
-
attr_accessor :name
|
20
|
-
|
21
|
-
# A description of the extended attribute
|
22
|
-
attr_accessor :description
|
23
|
-
|
24
|
-
# Boolean indicating if the extended attribute is required
|
25
|
-
attr_accessor :required
|
26
|
-
|
27
|
-
# An array of options for the extended attribute
|
28
|
-
def options
|
29
|
-
@options ||= []
|
30
|
-
end
|
31
|
-
|
32
|
-
def options=(opts)
|
33
|
-
@options = []
|
34
|
-
opts.each do |opt|
|
35
|
-
@options << ExtendedAttribute::Option.new(opt)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
# Find the extended attributes for the given TLD
|
40
|
-
def self.find(tld, options={})
|
41
|
-
response = Client.get("/v1/extended_attributes/#{tld}", options)
|
42
|
-
|
43
|
-
case response.code
|
44
|
-
when 200
|
45
|
-
response.map { |r| new(r) }
|
46
|
-
else
|
47
|
-
raise RequestError.new("Error finding extended attributes", response)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
end
|
52
|
-
end
|
data/lib/dnsimple/record.rb
DELETED
@@ -1,94 +0,0 @@
|
|
1
|
-
module Dnsimple
|
2
|
-
|
3
|
-
class Record < Base
|
4
|
-
Aliases = {
|
5
|
-
'priority' => 'prio',
|
6
|
-
'time-to-live' => 'ttl'
|
7
|
-
}
|
8
|
-
|
9
|
-
attr_accessor :id
|
10
|
-
attr_accessor :domain
|
11
|
-
attr_accessor :name
|
12
|
-
attr_accessor :content
|
13
|
-
attr_accessor :ttl
|
14
|
-
attr_accessor :prio
|
15
|
-
attr_accessor :record_type
|
16
|
-
|
17
|
-
|
18
|
-
def fqdn
|
19
|
-
[name, domain.name].delete_if { |v| v !~ BLANK_REGEX }.join(".")
|
20
|
-
end
|
21
|
-
|
22
|
-
def save(options={})
|
23
|
-
record_hash = {}
|
24
|
-
%w(name content ttl prio).each do |attribute|
|
25
|
-
record_hash[Record.resolve(attribute)] = self.send(attribute)
|
26
|
-
end
|
27
|
-
|
28
|
-
options.merge!(:body => {:record => record_hash})
|
29
|
-
|
30
|
-
response = Client.put("/v1/domains/#{domain.id}/records/#{id}", options)
|
31
|
-
|
32
|
-
case response.code
|
33
|
-
when 200
|
34
|
-
self
|
35
|
-
else
|
36
|
-
raise RequestError.new("Error updating record", response)
|
37
|
-
end
|
38
|
-
end
|
39
|
-
|
40
|
-
def delete(options={})
|
41
|
-
Client.delete("/v1/domains/#{domain.id}/records/#{id}", options)
|
42
|
-
end
|
43
|
-
alias :destroy :delete
|
44
|
-
|
45
|
-
def self.resolve(name)
|
46
|
-
Record::Aliases[name] || name
|
47
|
-
end
|
48
|
-
|
49
|
-
def self.create(domain, name, record_type, content, options={})
|
50
|
-
record_hash = {:name => name, :record_type => record_type, :content => content}
|
51
|
-
record_hash[:ttl] = options.delete(:ttl) || 3600
|
52
|
-
record_hash[:prio] = options.delete(:priority)
|
53
|
-
record_hash[:prio] = options.delete(:prio) || ''
|
54
|
-
|
55
|
-
options.merge!({:body => {:record => record_hash}})
|
56
|
-
|
57
|
-
response = Client.post("/v1/domains/#{domain.name}/records", options)
|
58
|
-
|
59
|
-
case response.code
|
60
|
-
when 201
|
61
|
-
new({:domain => domain}.merge(response["record"]))
|
62
|
-
when 406
|
63
|
-
raise RecordExists, "Record #{name}.#{domain.name} already exists"
|
64
|
-
else
|
65
|
-
raise RequestError.new("Error creating record", response)
|
66
|
-
end
|
67
|
-
end
|
68
|
-
|
69
|
-
def self.find(domain, id, options={})
|
70
|
-
response = Client.get("/v1/domains/#{domain.name}/records/#{id}", options)
|
71
|
-
|
72
|
-
case response.code
|
73
|
-
when 200
|
74
|
-
new({:domain => domain}.merge(response["record"]))
|
75
|
-
when 404
|
76
|
-
raise RecordNotFound, "Could not find record #{id} for domain #{domain.name}"
|
77
|
-
else
|
78
|
-
raise RequestError.new("Error finding record", response)
|
79
|
-
end
|
80
|
-
end
|
81
|
-
|
82
|
-
def self.all(domain, options={})
|
83
|
-
response = Client.get("/v1/domains/#{domain.name}/records", options)
|
84
|
-
|
85
|
-
case response.code
|
86
|
-
when 200
|
87
|
-
response.map { |r| new({:domain => domain}.merge(r["record"])) }
|
88
|
-
else
|
89
|
-
raise RequestError.new("Error listing records", response)
|
90
|
-
end
|
91
|
-
end
|
92
|
-
|
93
|
-
end
|
94
|
-
end
|
data/lib/dnsimple/service.rb
DELETED
@@ -1,42 +0,0 @@
|
|
1
|
-
module Dnsimple
|
2
|
-
|
3
|
-
# Represents a service that can be applied to a domain.
|
4
|
-
class Service < Base
|
5
|
-
|
6
|
-
attr_accessor :id
|
7
|
-
|
8
|
-
attr_accessor :name
|
9
|
-
|
10
|
-
attr_accessor :short_name
|
11
|
-
|
12
|
-
attr_accessor :description
|
13
|
-
|
14
|
-
# Find a service by its ID or short name
|
15
|
-
def self.find(id_or_short_name, options={})
|
16
|
-
id = id_or_short_name
|
17
|
-
response = Client.get("/v1/services/#{id}", options)
|
18
|
-
|
19
|
-
case response.code
|
20
|
-
when 200
|
21
|
-
new(response["service"])
|
22
|
-
when 404
|
23
|
-
raise RecordNotFound, "Could not find service #{id}"
|
24
|
-
else
|
25
|
-
raise RequestError.new("Error finding service", response)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
# Get all of the services that can be applied to a domain
|
30
|
-
def self.all(options={})
|
31
|
-
response = Client.get("/v1/services", options)
|
32
|
-
|
33
|
-
case response.code
|
34
|
-
when 200
|
35
|
-
response.map { |r| new(r["service"]) }
|
36
|
-
else
|
37
|
-
raise RequestError.new("Error listing services", response)
|
38
|
-
end
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|
42
|
-
end
|
data/lib/dnsimple/template.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
module Dnsimple
|
2
|
-
class Template < Base
|
3
|
-
|
4
|
-
attr_accessor :id
|
5
|
-
attr_accessor :name
|
6
|
-
attr_accessor :short_name
|
7
|
-
attr_accessor :description
|
8
|
-
|
9
|
-
|
10
|
-
def self.create(name, short_name, description=nil, options={})
|
11
|
-
template_hash = {
|
12
|
-
:name => name,
|
13
|
-
:short_name => short_name,
|
14
|
-
:description => description
|
15
|
-
}
|
16
|
-
|
17
|
-
options.merge!(:body => {:dns_template => template_hash})
|
18
|
-
|
19
|
-
response = Client.post("/v1/templates", options)
|
20
|
-
|
21
|
-
case response.code
|
22
|
-
when 201
|
23
|
-
new(response["dns_template"])
|
24
|
-
else
|
25
|
-
raise RequestError.new("Error creating template", response)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
def self.find(id_or_short_name, options={})
|
30
|
-
id = id_or_short_name
|
31
|
-
response = Client.get("/v1/templates/#{id}", options)
|
32
|
-
|
33
|
-
case response.code
|
34
|
-
when 200
|
35
|
-
new(response["dns_template"])
|
36
|
-
when 404
|
37
|
-
raise RecordNotFound, "Could not find template #{id}"
|
38
|
-
else
|
39
|
-
raise RequestError.new("Error finding template", response)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def self.all(options={})
|
44
|
-
response = Client.get("/v1/templates", options)
|
45
|
-
|
46
|
-
case response.code
|
47
|
-
when 200
|
48
|
-
response.map { |r| new(r["dns_template"]) }
|
49
|
-
else
|
50
|
-
raise RequestError.new("Error listing templates", response)
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
|
55
|
-
# #delete the template from DNSimple.
|
56
|
-
#
|
57
|
-
# WARNING: this cannot be undone.
|
58
|
-
#
|
59
|
-
def delete(options={})
|
60
|
-
Client.delete("/v1/templates/#{id}", options)
|
61
|
-
end
|
62
|
-
alias :destroy :delete
|
63
|
-
|
64
|
-
end
|
65
|
-
end
|
@@ -1,80 +0,0 @@
|
|
1
|
-
module Dnsimple
|
2
|
-
|
3
|
-
# A single record in a template.
|
4
|
-
class TemplateRecord < Base
|
5
|
-
|
6
|
-
# The id of the template record
|
7
|
-
attr_accessor :id
|
8
|
-
|
9
|
-
# The template the record belongs to
|
10
|
-
attr_accessor :template
|
11
|
-
|
12
|
-
# The name the record points to. This may be blank.
|
13
|
-
attr_accessor :name
|
14
|
-
|
15
|
-
# The content for the record.
|
16
|
-
attr_accessor :content
|
17
|
-
|
18
|
-
# The record type
|
19
|
-
attr_accessor :record_type
|
20
|
-
|
21
|
-
# The time-to-live
|
22
|
-
attr_accessor :ttl
|
23
|
-
|
24
|
-
# The priority (only for MX records)
|
25
|
-
attr_accessor :prio
|
26
|
-
|
27
|
-
def delete(options={})
|
28
|
-
Client.delete("/v1/templates/#{template.id}/template_records/#{id}", options)
|
29
|
-
end
|
30
|
-
alias :destroy :delete
|
31
|
-
|
32
|
-
def self.create(short_name, name, record_type, content, options={})
|
33
|
-
template = Template.find(short_name)
|
34
|
-
|
35
|
-
record_hash = {:name => name, :record_type => record_type, :content => content}
|
36
|
-
record_hash[:ttl] = options.delete(:ttl) || 3600
|
37
|
-
record_hash[:prio] = options.delete(:prio) || ''
|
38
|
-
|
39
|
-
options.merge!({:query => {:dns_template_record => record_hash}})
|
40
|
-
|
41
|
-
response = Client.post("/v1/templates/#{template.id}/template_records", options)
|
42
|
-
|
43
|
-
case response.code
|
44
|
-
when 201
|
45
|
-
new({:template => template}.merge(response["dns_template_record"]))
|
46
|
-
else
|
47
|
-
raise RequestError.new("Error creating template record", response)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def self.find(short_name, id, options={})
|
52
|
-
template = Template.find(short_name)
|
53
|
-
response = Client.get("/v1/templates/#{template.id}/template_records/#{id}", options)
|
54
|
-
|
55
|
-
case response.code
|
56
|
-
when 200
|
57
|
-
new({:template => template}.merge(response["dns_template_record"]))
|
58
|
-
when 404
|
59
|
-
raise RecordNotFound, "Could not find template record #{id} for template #{template.id}"
|
60
|
-
else
|
61
|
-
raise RequestError.new("Error finding template record", response)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
# Get all of the template records for the template with the
|
66
|
-
# given short name.
|
67
|
-
def self.all(short_name, options={})
|
68
|
-
template = Template.find(short_name)
|
69
|
-
response = Client.get("/v1/templates/#{template.id}/template_records", options)
|
70
|
-
|
71
|
-
case response.code
|
72
|
-
when 200
|
73
|
-
response.map { |r| new({:template => template}.merge(r["dns_template_record"])) }
|
74
|
-
else
|
75
|
-
raise RequestError.new("Error listing template records", response)
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
|
-
end
|
80
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
module Dnsimple
|
2
|
-
|
3
|
-
# Represents a transfer order.
|
4
|
-
class TransferOrder < Base
|
5
|
-
|
6
|
-
attr_accessor :id
|
7
|
-
|
8
|
-
attr_accessor :status
|
9
|
-
|
10
|
-
def self.create(name, authinfo='', registrant={}, extended_attributes={}, options={})
|
11
|
-
body = {:domain => {:name => name}, :transfer_order => {:authinfo => authinfo}}
|
12
|
-
|
13
|
-
if registrant[:id]
|
14
|
-
body[:domain][:registrant_id] = registrant[:id]
|
15
|
-
else
|
16
|
-
body.merge!(:contact => Contact.resolve_attributes(registrant))
|
17
|
-
end
|
18
|
-
|
19
|
-
body.merge!(:extended_attribute => extended_attributes)
|
20
|
-
|
21
|
-
options.merge!({:body => body})
|
22
|
-
|
23
|
-
response = Client.post("/v1/domain_transfers", options)
|
24
|
-
|
25
|
-
case response.code
|
26
|
-
when 201
|
27
|
-
new(response["transfer_order"])
|
28
|
-
else
|
29
|
-
raise RequestError.new("Error creating transfer order", response)
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
end
|
34
|
-
end
|
data/lib/dnsimple/user.rb
DELETED
@@ -1,50 +0,0 @@
|
|
1
|
-
module Dnsimple
|
2
|
-
class User < Base
|
3
|
-
|
4
|
-
attr_accessor :id
|
5
|
-
attr_accessor :email
|
6
|
-
attr_accessor :domain_count
|
7
|
-
attr_accessor :domain_limit
|
8
|
-
attr_accessor :login_count
|
9
|
-
attr_accessor :failed_login_count
|
10
|
-
attr_accessor :created_at
|
11
|
-
attr_accessor :updated_at
|
12
|
-
|
13
|
-
|
14
|
-
# Fetches the information about the authenticated user.
|
15
|
-
#
|
16
|
-
# @return [User] the authenticated user
|
17
|
-
# @raise [RequestError] if the user doesn't exist
|
18
|
-
def self.me
|
19
|
-
response = Client.get("/v1/user")
|
20
|
-
|
21
|
-
case response.code
|
22
|
-
when 200
|
23
|
-
new(response["user"])
|
24
|
-
else
|
25
|
-
raise RequestError.new("Error finding account", response)
|
26
|
-
end
|
27
|
-
end
|
28
|
-
|
29
|
-
# Requests a new two-factor authentication exchange token.
|
30
|
-
#
|
31
|
-
# The exchange-token is required to validate API requests
|
32
|
-
# using HTTP Basic Authentication when the account has two-factor authentication enabled.
|
33
|
-
#
|
34
|
-
# @see http://developer.dnsimple.com/authentication/#twofa
|
35
|
-
#
|
36
|
-
# @example Request an Exchange Token
|
37
|
-
# Dnsimple::User.two_factor_exchange_token('0000000')
|
38
|
-
# # => "cda038832591e34f5df642ce2b61dc78"
|
39
|
-
#
|
40
|
-
# @param [String] otp_token the two-factor one time (OTP) token
|
41
|
-
#
|
42
|
-
# @return [String] the two-factor API exchange token
|
43
|
-
# @raise [AuthenticationFailed] if the provided OTP token is invalid
|
44
|
-
def self.two_factor_exchange_token(otp_token)
|
45
|
-
response = Client.get("/v1/user", :headers => { Client::HEADER_2FA_STRICT => "1", Client::HEADER_OTP_TOKEN => otp_token })
|
46
|
-
response.headers[Client::HEADER_EXCHANGE_TOKEN]
|
47
|
-
end
|
48
|
-
|
49
|
-
end
|
50
|
-
end
|
@@ -1,59 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe Dnsimple::Certificate do
|
4
|
-
|
5
|
-
let(:domain) { Dnsimple::Domain.new(:name => "example.com") }
|
6
|
-
|
7
|
-
|
8
|
-
describe ".find" do
|
9
|
-
before do
|
10
|
-
stub_request(:get, %r[/v1/domains/example.com/certificates/2]).
|
11
|
-
to_return(read_fixture("certificates/show/success.http"))
|
12
|
-
end
|
13
|
-
|
14
|
-
it "builds the correct request" do
|
15
|
-
described_class.find(domain, "2")
|
16
|
-
|
17
|
-
expect(WebMock).to have_requested(:get, "https://#{CONFIG['username']}:#{CONFIG['password']}@#{CONFIG['host']}/v1/domains/example.com/certificates/2").
|
18
|
-
with(:headers => { 'Accept' => 'application/json' })
|
19
|
-
end
|
20
|
-
|
21
|
-
context "when the certificate exists" do
|
22
|
-
it "returns the certificate" do
|
23
|
-
result = described_class.find(domain, "2")
|
24
|
-
|
25
|
-
expect(result.id).to eq(4576)
|
26
|
-
expect(result.domain_id).to eq(79569)
|
27
|
-
expect(result.contact_id).to eq(11549)
|
28
|
-
expect(result.name).to eq("www")
|
29
|
-
expect(result.state).to eq("cancelled")
|
30
|
-
expect(result.csr).to eq("-----BEGIN NEW CERTIFICATE REQUEST-----\nRHr2akB4KMba6FMAsvlStnO/2ika16hNx+d3smPNsER+HA==\n-----END NEW CERTIFICATE REQUEST-----\n")
|
31
|
-
expect(result.ssl_certificate).to eq("-----BEGIN CERTIFICATE-----\nXwTkw5UCPpaVyUYcwHlvaprOe9ZbwIyEHm2AT1rW+70=\n-----END CERTIFICATE-----\n")
|
32
|
-
expect(result.private_key).to eq("-----BEGIN RSA PRIVATE KEY-----\nUeXbFi7o+nuPfRhpBFQEKwacKFc3Hnc1hH6UsnC0KY25cUif7yz38A==\n-----END RSA PRIVATE KEY-----\n")
|
33
|
-
expect(result.approver_email).to eq("example@example.net")
|
34
|
-
expect(result.created_at).to eq("2013-09-17T21:54:42Z")
|
35
|
-
expect(result.updated_at).to eq("2013-09-17T22:25:36Z")
|
36
|
-
expect(result.configured_at).to eq("2013-09-17T22:25:01Z")
|
37
|
-
expect(result.expires_on).to eq("2014-09-17")
|
38
|
-
|
39
|
-
expect(result.domain).to eq(domain)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
|
45
|
-
describe "#fqdn" do
|
46
|
-
it "joins the name and domain name" do
|
47
|
-
certificate = described_class.new(:name => 'www')
|
48
|
-
certificate.domain = domain
|
49
|
-
expect(certificate.fqdn).to eq("www.#{domain.name}")
|
50
|
-
end
|
51
|
-
|
52
|
-
it "strips blank parts from name" do
|
53
|
-
certificate = described_class.new(:name => '')
|
54
|
-
certificate.domain = domain
|
55
|
-
expect(certificate.fqdn).to eq(domain.name)
|
56
|
-
end
|
57
|
-
end
|
58
|
-
|
59
|
-
end
|