dnsimple-ruby 1.7.1 → 2.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.
Files changed (124) hide show
  1. checksums.yaml +4 -4
  2. data/.ruby-version +1 -1
  3. data/.travis.yml +3 -9
  4. data/{CHANGELOG.markdown → CHANGELOG.md} +4 -0
  5. data/Gemfile +0 -2
  6. data/LICENSE +1 -1
  7. data/README.md +5 -0
  8. data/Rakefile +0 -15
  9. data/dnsimple-ruby.gemspec +11 -19
  10. data/lib/dnsimple-ruby.rb +2 -0
  11. metadata +20 -288
  12. data/README.markdown +0 -159
  13. data/bin/dnsimple +0 -4
  14. data/bin/dnsimple.rb +0 -156
  15. data/features/README.md +0 -9
  16. data/features/cli/certificates/purchase_certificate.feature +0 -10
  17. data/features/cli/contacts/create_contact.feature +0 -10
  18. data/features/cli/domains/check_domain.feature +0 -10
  19. data/features/cli/domains/create_domain.feature +0 -10
  20. data/features/cli/domains/delete_domain.feature +0 -11
  21. data/features/cli/domains/register_domain.feature +0 -10
  22. data/features/cli/records/create_ptr_record.feature +0 -11
  23. data/features/cli/records/create_record.feature +0 -12
  24. data/features/cli/records/delete_record.feature +0 -14
  25. data/features/cli/templates/apply_template.feature +0 -11
  26. data/features/step_definitions/certificate_steps.rb +0 -3
  27. data/features/step_definitions/cli_steps.rb +0 -8
  28. data/features/step_definitions/domain_steps.rb +0 -32
  29. data/features/step_definitions/record_steps.rb +0 -38
  30. data/features/step_definitions/template_steps.rb +0 -9
  31. data/features/support/env.rb +0 -19
  32. data/lib/dnsimple.rb +0 -33
  33. data/lib/dnsimple/base.rb +0 -10
  34. data/lib/dnsimple/certificate.rb +0 -140
  35. data/lib/dnsimple/cli.rb +0 -121
  36. data/lib/dnsimple/client.rb +0 -128
  37. data/lib/dnsimple/commands/certificate_describe.rb +0 -34
  38. data/lib/dnsimple/commands/certificate_list.rb +0 -15
  39. data/lib/dnsimple/commands/certificate_purchase.rb +0 -17
  40. data/lib/dnsimple/commands/certificate_submit.rb +0 -17
  41. data/lib/dnsimple/commands/contact_create.rb +0 -23
  42. data/lib/dnsimple/commands/contact_delete.rb +0 -14
  43. data/lib/dnsimple/commands/contact_describe.rb +0 -25
  44. data/lib/dnsimple/commands/contact_list.rb +0 -13
  45. data/lib/dnsimple/commands/contact_update.rb +0 -25
  46. data/lib/dnsimple/commands/domain_apply_template.rb +0 -15
  47. data/lib/dnsimple/commands/domain_check.rb +0 -11
  48. data/lib/dnsimple/commands/domain_clear.rb +0 -16
  49. data/lib/dnsimple/commands/domain_create.rb +0 -16
  50. data/lib/dnsimple/commands/domain_delete.rb +0 -14
  51. data/lib/dnsimple/commands/domain_describe.rb +0 -14
  52. data/lib/dnsimple/commands/domain_list.rb +0 -13
  53. data/lib/dnsimple/commands/domain_register.rb +0 -33
  54. data/lib/dnsimple/commands/domain_transfer.rb +0 -21
  55. data/lib/dnsimple/commands/extended_attribute_list.rb +0 -25
  56. data/lib/dnsimple/commands/me.rb +0 -18
  57. data/lib/dnsimple/commands/record_create.rb +0 -18
  58. data/lib/dnsimple/commands/record_delete.rb +0 -16
  59. data/lib/dnsimple/commands/record_describe.rb +0 -16
  60. data/lib/dnsimple/commands/record_list.rb +0 -19
  61. data/lib/dnsimple/commands/record_update.rb +0 -23
  62. data/lib/dnsimple/commands/service_add.rb +0 -14
  63. data/lib/dnsimple/commands/service_describe.rb +0 -12
  64. data/lib/dnsimple/commands/service_list.rb +0 -14
  65. data/lib/dnsimple/commands/service_list_applied.rb +0 -16
  66. data/lib/dnsimple/commands/service_list_available.rb +0 -16
  67. data/lib/dnsimple/commands/service_remove.rb +0 -14
  68. data/lib/dnsimple/commands/template_create.rb +0 -14
  69. data/lib/dnsimple/commands/template_delete.rb +0 -13
  70. data/lib/dnsimple/commands/template_list.rb +0 -13
  71. data/lib/dnsimple/commands/template_record_create.rb +0 -18
  72. data/lib/dnsimple/commands/template_record_delete.rb +0 -16
  73. data/lib/dnsimple/commands/template_record_list.rb +0 -17
  74. data/lib/dnsimple/contact.rb +0 -154
  75. data/lib/dnsimple/domain.rb +0 -217
  76. data/lib/dnsimple/error.rb +0 -32
  77. data/lib/dnsimple/extended_attribute.rb +0 -52
  78. data/lib/dnsimple/record.rb +0 -94
  79. data/lib/dnsimple/service.rb +0 -42
  80. data/lib/dnsimple/template.rb +0 -63
  81. data/lib/dnsimple/template_record.rb +0 -80
  82. data/lib/dnsimple/transfer_order.rb +0 -34
  83. data/lib/dnsimple/user.rb +0 -51
  84. data/lib/dnsimple/version.rb +0 -3
  85. data/spec/ci/.dnsimple.test +0 -3
  86. data/spec/commands/certificate_purchase_spec.rb +0 -25
  87. data/spec/commands/certificate_submit_spec.rb +0 -18
  88. data/spec/commands/record_create_spec.rb +0 -23
  89. data/spec/commands/record_list_spec.rb +0 -23
  90. data/spec/commands/service_add_spec.rb +0 -20
  91. data/spec/dnsimple/certificate_spec.rb +0 -59
  92. data/spec/dnsimple/client_spec.rb +0 -154
  93. data/spec/dnsimple/contact_spec.rb +0 -45
  94. data/spec/dnsimple/domain_spec.rb +0 -133
  95. data/spec/dnsimple/extended_attributes_spec.rb +0 -54
  96. data/spec/dnsimple/record_spec.rb +0 -51
  97. data/spec/dnsimple/template_spec.rb +0 -31
  98. data/spec/dnsimple/user_spec.rb +0 -70
  99. data/spec/files/2fa/error-badtoken.http +0 -22
  100. data/spec/files/2fa/error-required.http +0 -23
  101. data/spec/files/2fa/exchange-token.http +0 -25
  102. data/spec/files/account/user/success.http +0 -19
  103. data/spec/files/certificates/index/success.http +0 -19
  104. data/spec/files/certificates/show/notfound.http +0 -17
  105. data/spec/files/certificates/show/success.http +0 -19
  106. data/spec/files/contacts/show/notfound.http +0 -17
  107. data/spec/files/contacts/show/success.http +0 -19
  108. data/spec/files/domains/auto_renewal_disable/notfound.http +0 -21
  109. data/spec/files/domains/auto_renewal_disable/success.http +0 -23
  110. data/spec/files/domains/auto_renewal_enable/notfound.http +0 -21
  111. data/spec/files/domains/auto_renewal_enable/success.http +0 -23
  112. data/spec/files/domains/show/notfound.http +0 -17
  113. data/spec/files/domains/show/success.http +0 -19
  114. data/spec/files/extended_attributes/ca.http +0 -19
  115. data/spec/files/extended_attributes/com.http +0 -19
  116. data/spec/files/extended_attributes/success.http +0 -19
  117. data/spec/files/records/index/success.http +0 -19
  118. data/spec/files/records/show/notfound.http +0 -17
  119. data/spec/files/records/show/success.http +0 -19
  120. data/spec/files/templates/show/notfound.http +0 -17
  121. data/spec/files/templates/show/success.http +0 -19
  122. data/spec/spec_helper.rb +0 -39
  123. data/spec/support/helpers.rb +0 -15
  124. data/spec/support/webmock.rb +0 -11
@@ -1,32 +0,0 @@
1
- module DNSimple
2
-
3
- class Error < StandardError
4
- end
5
-
6
- class RecordExists < Error
7
- end
8
-
9
- class RecordNotFound < Error
10
- end
11
-
12
- # An exception that is raised if a method is called with missing or invalid parameter values.
13
- class ValidationError < Error
14
- end
15
-
16
- class RequestError < Error
17
- def initialize(description, response)
18
- super("#{description}: #{response["error"]}")
19
- end
20
- end
21
-
22
- class AuthenticationError < Error
23
- end
24
-
25
- class AuthenticationFailed < AuthenticationError
26
- end
27
-
28
- # An exception that is raised if a request is executed for an account that requires two-factor authentication.
29
- class TwoFactorAuthenticationRequired < AuthenticationError
30
- end
31
-
32
- end
@@ -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 << DNSimple::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 = DNSimple::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
@@ -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 !~ DNSimple::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[DNSimple::Record.resolve(attribute)] = self.send(attribute)
26
- end
27
-
28
- options.merge!(:body => {:record => record_hash})
29
-
30
- response = DNSimple::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
- DNSimple::Client.delete("/v1/domains/#{domain.id}/records/#{id}", options)
42
- end
43
- alias :destroy :delete
44
-
45
- def self.resolve(name)
46
- DNSimple::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 = DNSimple::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 = DNSimple::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 = DNSimple::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
@@ -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 = DNSimple::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 = DNSimple::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
@@ -1,63 +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 = DNSimple::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 = DNSimple::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 = DNSimple::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
- # WARNING: this cannot be undone.
57
- def delete(options={})
58
- DNSimple::Client.delete("/v1/templates/#{id}", options)
59
- end
60
- alias :destroy :delete
61
-
62
- end
63
- 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
- DNSimple::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 = DNSimple::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 = DNSimple::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 = DNSimple::Template.find(short_name)
53
- response = DNSimple::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 = DNSimple::Template.find(short_name)
69
- response = DNSimple::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 = DNSimple::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
@@ -1,51 +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
- # Gets 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 = DNSimple::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
- #
38
- # DNSimple::User.two_factor_exchange_token('0000000')
39
- # # => "cda038832591e34f5df642ce2b61dc78"
40
- #
41
- # @param [String] otp_token the two-factor one time (OTP) token
42
- #
43
- # @return [String] the two-factor API exchange token
44
- # @raise [AuthenticationFailed] if the provided OTP token is invalid
45
- def self.two_factor_exchange_token(otp_token)
46
- response = DNSimple::Client.get("/v1/user", :headers => { DNSimple::Client::HEADER_2FA_STRICT => "1", DNSimple::Client::HEADER_OTP_TOKEN => otp_token })
47
- response.headers[DNSimple::Client::HEADER_EXCHANGE_TOKEN]
48
- end
49
-
50
- end
51
- end