dnsimple-ruby 1.2.6 → 1.3.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.
@@ -1,128 +1,95 @@
1
- module DNSimple
2
- class Record
3
- include HTTParty
1
+ class DNSimple::Record < DNSimple::Base
2
+ Aliases = {
3
+ 'priority' => 'prio',
4
+ 'time-to-live' => 'ttl'
5
+ }
4
6
 
5
- attr_accessor :id
7
+ attr_accessor :id
6
8
 
7
- attr_accessor :domain
9
+ attr_accessor :domain
8
10
 
9
- attr_accessor :name
11
+ attr_accessor :name
10
12
 
11
- attr_accessor :content
13
+ attr_accessor :content
12
14
 
13
- attr_accessor :record_type
15
+ attr_accessor :record_type
14
16
 
15
- attr_accessor :ttl
17
+ attr_accessor :ttl
16
18
 
17
- attr_accessor :prio
19
+ attr_accessor :prio
18
20
 
19
- #:nodoc:
20
- def initialize(attributes)
21
- attributes.each do |key, value|
22
- m = "#{key}=".to_sym
23
- self.send(m, value) if self.respond_to?(m)
24
- end
21
+ def fqdn
22
+ [name, domain.name].delete_if { |v| v !~ DNSimple::BLANK_REGEX }.join(".")
23
+ end
24
+
25
+ def save(options={})
26
+ record_hash = {}
27
+ %w(name content ttl prio).each do |attribute|
28
+ record_hash[DNSimple::Record.resolve(attribute)] = self.send(attribute)
25
29
  end
26
30
 
27
- def fqdn
28
- [name, domain.name].delete_if { |v| v !~ DNSimple::BLANK_REGEX }.join(".")
31
+ options.merge!(:body => {:record => record_hash})
32
+
33
+ response = DNSimple::Client.put("domains/#{domain.id}/records/#{id}.json", options)
34
+
35
+ case response.code
36
+ when 200
37
+ return self
38
+ else
39
+ raise DNSimple::Error, "Failed to update record: #{response.inspect}"
29
40
  end
41
+ end
30
42
 
31
- def save(options={})
32
- record_hash = {}
33
- %w(name content ttl prio).each do |attribute|
34
- record_hash[DNSimple::Record.resolve(attribute)] = self.send(attribute)
35
- end
43
+ def delete(options={})
44
+ DNSimple::Client.delete "domains/#{domain.id}/records/#{id}", options
45
+ end
46
+ alias :destroy :delete
36
47
 
37
- options.merge!(DNSimple::Client.standard_options_with_credentials)
38
- options.merge!(:body => {:record => record_hash})
48
+ def self.resolve(name)
49
+ DNSimple::Record::Aliases[name] || name
50
+ end
39
51
 
40
- response = self.class.put("#{DNSimple::Client.base_uri}/domains/#{domain.id}/records/#{id}.json", options)
52
+ def self.create(domain, name, record_type, content, options={})
53
+ record_hash = {:name => name, :record_type => record_type, :content => content}
54
+ record_hash[:ttl] = options.delete(:ttl) || 3600
55
+ record_hash[:prio] = options.delete(:priority)
56
+ record_hash[:prio] = options.delete(:prio) || ''
41
57
 
42
- pp response if DNSimple::Client.debug?
58
+ options.merge!({:body => {:record => record_hash}})
43
59
 
44
- case response.code
45
- when 200
46
- return self
47
- when 401
48
- raise DNSimple::AuthenticationFailed
49
- else
50
- raise DNSimple::Error, "Failed to update record: #{response.inspect}"
51
- end
52
- end
53
-
54
- def delete(options={})
55
- options.merge!(DNSimple::Client.standard_options_with_credentials)
56
- self.class.delete("#{DNSimple::Client.base_uri}/domains/#{domain.id}/records/#{id}", options)
57
- end
58
- alias :destroy :delete
59
-
60
- def self.resolve(name)
61
- aliases = {
62
- 'priority' => 'prio',
63
- 'time-to-live' => 'ttl'
64
- }
65
- aliases[name] || name
66
- end
60
+ response = DNSimple::Client.post "domains/#{domain.name}/records", options
67
61
 
68
- def self.create(domain, name, record_type, content, options={})
69
- record_hash = {:name => name, :record_type => record_type, :content => content}
70
- record_hash[:ttl] = options.delete(:ttl) || 3600
71
- record_hash[:prio] = options.delete(:priority)
72
- record_hash[:prio] = options.delete(:prio) || ''
73
-
74
- options.merge!(DNSimple::Client.standard_options_with_credentials)
75
- options.merge!({:body => {:record => record_hash}})
76
-
77
- response = self.post("#{DNSimple::Client.base_uri}/domains/#{domain.name}/records", options)
78
-
79
- pp response if DNSimple::Client.debug?
80
-
81
- case response.code
82
- when 201
83
- return DNSimple::Record.new({:domain => domain}.merge(response["record"]))
84
- when 401
85
- raise DNSimple::AuthenticationFailed
86
- when 406
87
- raise DNSimple::RecordExists.new("#{name}.#{domain.name}", response["errors"])
88
- else
89
- raise DNSimple::Error, "Failed to create #{name}.#{domain.name}: #{response["errors"]}"
90
- end
62
+ case response.code
63
+ when 201
64
+ return new({:domain => domain}.merge(response["record"]))
65
+ when 406
66
+ raise DNSimple::RecordExists.new("#{name}.#{domain.name}", response["errors"])
67
+ else
68
+ raise DNSimple::Error, "Failed to create #{name}.#{domain.name}: #{response["errors"]}"
91
69
  end
70
+ end
92
71
 
93
- def self.find(domain, id, options={})
94
- options.merge!(DNSimple::Client.standard_options_with_credentials)
95
- response = self.get("#{DNSimple::Client.base_uri}/domains/#{domain.name}/records/#{id}", options)
96
-
97
- pp response if DNSimple::Client.debug?
98
-
99
- case response.code
100
- when 200
101
- return DNSimple::Record.new({:domain => domain}.merge(response["record"]))
102
- when 401
103
- raise DNSimple::AuthenticationFailed
104
- when 404
105
- raise DNSimple::RecordNotFound, "Could not find record #{id} for domain #{domain.name}"
106
- else
107
- raise DNSimple::Error, "Failed to find domain #{domain.name}/#{id}: #{response["errors"]}"
108
- end
109
- end
72
+ def self.find(domain, id, options={})
73
+ response = DNSimple::Client.get("domains/#{domain.name}/records/#{id}", options)
110
74
 
111
- def self.all(domain, options={})
112
- options.merge!(DNSimple::Client.standard_options_with_credentials)
113
- response = self.get("#{DNSimple::Client.base_uri}/domains/#{domain.name}/records", options)
75
+ case response.code
76
+ when 200
77
+ return new({:domain => domain}.merge(response["record"]))
78
+ when 404
79
+ raise DNSimple::RecordNotFound, "Could not find record #{id} for domain #{domain.name}"
80
+ else
81
+ raise DNSimple::Error, "Failed to find domain #{domain.name}/#{id}: #{response["errors"]}"
82
+ end
83
+ end
114
84
 
115
- pp response if DNSimple::Client.debug?
85
+ def self.all(domain, options={})
86
+ response = DNSimple::Client.get("domains/#{domain.name}/records", options)
116
87
 
117
- case response.code
118
- when 200
119
- response.map { |r| DNSimple::Record.new({:domain => domain}.merge(r["record"])) }
120
- when 401
121
- raise DNSimple::AuthenticationFailed, "Authentication failed"
122
- else
123
- raise DNSimple::Error, "Error listing domains: #{response.code}"
124
- end
88
+ case response.code
89
+ when 200
90
+ response.map { |r| new({:domain => domain}.merge(r["record"])) }
91
+ else
92
+ raise DNSimple::Error, "Error listing domains: #{response.code}"
125
93
  end
126
-
127
94
  end
128
95
  end
@@ -1,58 +1,35 @@
1
- module DNSimple #:nodoc:
2
- # Class representing a service that can be applied to a domain
3
- class Service
4
- include HTTParty
1
+ class DNSimple::Service < DNSimple::Base # Class representing a service that can be applied to a domain
2
+ attr_accessor :id
5
3
 
6
- attr_accessor :id
4
+ attr_accessor :name
7
5
 
8
- attr_accessor :name
6
+ attr_accessor :short_name
9
7
 
10
- attr_accessor :short_name
8
+ attr_accessor :description
11
9
 
12
- attr_accessor :description
10
+ # Find a service by its ID or short name
11
+ def self.find(id_or_short_name, options={})
12
+ response = DNSimple::Client.get("services/#{id_or_short_name}.json", options)
13
13
 
14
- #:nodoc:
15
- def initialize(attributes)
16
- attributes.each do |key, value|
17
- m = "#{key}=".to_sym
18
- self.send(m, value) if self.respond_to?(m)
19
- end
20
- end
21
-
22
- # Find a service by its ID or short name
23
- def self.find(id_or_short_name, options={})
24
- options.merge!({:basic_auth => Client.credentials})
25
- response = self.get("#{Client.base_uri}/services/#{id_or_short_name}.json", options)
26
-
27
- pp response if Client.debug?
28
-
29
- case response.code
30
- when 200
31
- return Service.new(response["service"])
32
- when 401
33
- raise RuntimeError, "Authentication failed"
34
- when 404
35
- raise RuntimeError, "Could not find service #{id_or_short_name}"
36
- else
37
- raise DNSimple::Error.new(id_or_short_name, response["errors"])
38
- end
14
+ case response.code
15
+ when 200
16
+ return new(response["service"])
17
+ when 404
18
+ raise RuntimeError, "Could not find service #{id_or_short_name}"
19
+ else
20
+ raise DNSimple::Error.new(id_or_short_name, response["errors"])
39
21
  end
22
+ end
40
23
 
41
- # Get all of the services that can be applied to a domain
42
- def self.all(options={})
43
- options.merge!({:basic_auth => Client.credentials})
44
- response = self.get("#{Client.base_uri}/services.json", options)
45
-
46
- pp response if Client.debug?
24
+ # Get all of the services that can be applied to a domain
25
+ def self.all(options={})
26
+ response = DNSimple::Client.get 'services.json', options
47
27
 
48
- case response.code
49
- when 200
50
- response.map { |r| Service.new(r["service"]) }
51
- when 401
52
- raise RuntimeError, "Authentication failed"
53
- else
54
- raise RuntimeError, "Error: #{response.code}"
55
- end
28
+ case response.code
29
+ when 200
30
+ response.map { |r| new(r["service"]) }
31
+ else
32
+ raise RuntimeError, "Error: #{response.code}"
56
33
  end
57
34
  end
58
35
  end
@@ -1,91 +1,63 @@
1
- module DNSimple
2
- class Template
3
- include HTTParty
1
+ class DNSimple::Template < DNSimple::Base
2
+ # The template ID in DNSimple
3
+ attr_accessor :id
4
4
 
5
- # The template ID in DNSimple
6
- attr_accessor :id
7
-
8
- # The template name
9
- attr_accessor :name
5
+ # The template name
6
+ attr_accessor :name
10
7
 
11
- # The template short name
12
- attr_accessor :short_name
8
+ # The template short name
9
+ attr_accessor :short_name
13
10
 
14
- # The template description
15
- attr_accessor :description
11
+ # The template description
12
+ attr_accessor :description
16
13
 
17
- #:nodoc:
18
- def initialize(attributes)
19
- attributes.each do |key, value|
20
- m = "#{key}=".to_sym
21
- self.send(m, value) if self.respond_to?(m)
22
- end
23
- end
24
-
25
- # Delete the template from DNSimple. WARNING: this cannot
26
- # be undone.
27
- def delete(options={})
28
- options.merge!(DNSimple::Client.standard_options_with_credentials)
29
- self.class.delete("#{Client.base_uri}/templates/#{id}", options)
30
- end
31
- alias :destroy :delete
32
-
33
- def self.create(name, short_name, description=nil, options={})
34
- options.merge!(DNSimple::Client.standard_options_with_credentials)
35
- template_hash = {
36
- :name => name,
37
- :short_name => short_name,
38
- :description => description
39
- }
14
+ # Delete the template from DNSimple. WARNING: this cannot
15
+ # be undone.
16
+ def delete(options={})
17
+ DNSimple::Client.delete "templates/#{id}", options
18
+ end
19
+ alias :destroy :delete
40
20
 
41
- options.merge!(:body => {:dns_template => template_hash})
21
+ def self.create(name, short_name, description=nil, options={})
22
+ template_hash = {
23
+ :name => name,
24
+ :short_name => short_name,
25
+ :description => description
26
+ }
42
27
 
43
- response = self.post("#{Client.base_uri}/templates", options)
28
+ options.merge!(:body => {:dns_template => template_hash})
44
29
 
45
- pp response if Client.debug?
30
+ response = DNSimple::Client.post 'templates', options
46
31
 
47
- case response.code
48
- when 201
49
- return Template.new(response["dns_template"])
50
- when 401
51
- raise RuntimeError, "Authentication failed"
52
- else
53
- raise DNSimple::Error.new(name, response["errors"])
54
- end
32
+ case response.code
33
+ when 201
34
+ return new(response["dns_template"])
35
+ else
36
+ raise DNSimple::Error.new(name, response["errors"])
55
37
  end
38
+ end
56
39
 
57
- def self.find(id_or_short_name, options={})
58
- options.merge!(DNSimple::Client.standard_options_with_credentials)
59
- response = self.get("#{Client.base_uri}/templates/#{id_or_short_name}", options)
60
-
61
- pp response if Client.debug?
62
-
63
- case response.code
64
- when 200
65
- return Template.new(response["dns_template"])
66
- when 401
67
- raise RuntimeError, "Authentication failed"
68
- when 404
69
- raise RuntimeError, "Could not find template #{id_or_short_name}"
70
- else
71
- raise DNSimple::Error.new(id_or_short_name, response["errors"])
72
- end
73
- end
40
+ def self.find(id_or_short_name, options={})
41
+ response = DNSimple::Client.get "templates/#{id_or_short_name}", options
74
42
 
75
- def self.all(options={})
76
- options.merge!(DNSimple::Client.standard_options_with_credentials)
77
- response = self.get("#{Client.base_uri}/templates", options)
43
+ case response.code
44
+ when 200
45
+ return new(response["dns_template"])
46
+ when 404
47
+ raise RuntimeError, "Could not find template #{id_or_short_name}"
48
+ else
49
+ raise DNSimple::Error.new(id_or_short_name, response["errors"])
50
+ end
51
+ end
78
52
 
79
- pp response if Client.debug?
53
+ def self.all(options={})
54
+ response = DNSimple::Client.get 'templates', options
80
55
 
81
- case response.code
82
- when 200
83
- response.map { |r| Template.new(r["dns_template"]) }
84
- when 401
85
- raise RuntimeError, "Authentication failed"
86
- else
87
- raise RuntimeError, "Error: #{response.code}"
88
- end
56
+ case response.code
57
+ when 200
58
+ response.map { |r| new(r["dns_template"]) }
59
+ else
60
+ raise RuntimeError, "Error: #{response.code}"
89
61
  end
90
62
  end
91
63
  end
@@ -1,103 +1,72 @@
1
- module DNSimple #:nodoc:
2
- # A single record in a template
3
- class TemplateRecord
4
- include HTTParty
1
+ class DNSimple::TemplateRecord < DNSimple::Base # A single record in a template
2
+ # The id of the template record
3
+ attr_accessor :id
5
4
 
6
- # The id of the template record
7
- attr_accessor :id
5
+ # The template the record belongs to
6
+ attr_accessor :template
8
7
 
9
- # The template the record belongs to
10
- attr_accessor :template
8
+ # The name the record points to. This may be blank.
9
+ attr_accessor :name
11
10
 
12
- # The name the record points to. This may be blank.
13
- attr_accessor :name
11
+ # The content for the record.
12
+ attr_accessor :content
14
13
 
15
- # The content for the record.
16
- attr_accessor :content
14
+ # The record type
15
+ attr_accessor :record_type
17
16
 
18
- # The record type
19
- attr_accessor :record_type
17
+ # The time-to-live
18
+ attr_accessor :ttl
20
19
 
21
- # The time-to-live
22
- attr_accessor :ttl
20
+ # The priority (only for MX records)
21
+ attr_accessor :prio
23
22
 
24
- # The priority (only for MX records)
25
- attr_accessor :prio
26
-
27
- #:nodoc:
28
- def initialize(attributes)
29
- attributes.each do |key, value|
30
- m = "#{key}=".to_sym
31
- self.send(m, value) if self.respond_to?(m)
32
- end
33
- end
34
-
35
- def delete(options={})
36
- options.merge!(:basic_auth => Client.credentials)
37
- self.class.delete("#{Client.base_uri}/templates/#{template.id}/template_records/#{id}.json", options)
38
- end
39
- alias :destroy :delete
40
-
41
- def self.create(short_name, name, record_type, content, options={})
42
- template = Template.find(short_name)
23
+ def delete(options={})
24
+ DNSimple::Client.delete("templates/#{template.id}/template_records/#{id}.json", options)
25
+ end
26
+ alias :destroy :delete
43
27
 
44
- record_hash = {:name => name, :record_type => record_type, :content => content}
45
- record_hash[:ttl] = options.delete(:ttl) || 3600
46
- record_hash[:prio] = options.delete(:prio) || ''
28
+ def self.create(short_name, name, record_type, content, options={})
29
+ template = DNSimple::Template.find(short_name)
47
30
 
48
- options.merge!({:query => {:dns_template_record => record_hash}})
49
- options.merge!({:basic_auth => Client.credentials})
31
+ record_hash = {:name => name, :record_type => record_type, :content => content}
32
+ record_hash[:ttl] = options.delete(:ttl) || 3600
33
+ record_hash[:prio] = options.delete(:prio) || ''
50
34
 
51
- response = self.post("#{Client.base_uri}/templates/#{template.id}/template_records.json", options)
35
+ options.merge!({:query => {:dns_template_record => record_hash}})
52
36
 
53
- pp response if Client.debug?
37
+ response = DNSimple::Client.post("templates/#{template.id}/template_records.json", options)
54
38
 
55
- case response.code
56
- when 201
57
- return TemplateRecord.new({:template => template}.merge(response["dns_template_record"]))
58
- when 401
59
- raise RuntimeError, "Authentication failed"
60
- else
61
- raise DNSimple::Error.new("#{name}", response["errors"])
62
- end
39
+ case response.code
40
+ when 201
41
+ return new({:template => template}.merge(response["dns_template_record"]))
42
+ else
43
+ raise DNSimple::Error.new("#{name}", response["errors"])
63
44
  end
45
+ end
64
46
 
65
- def self.find(short_name, id, options={})
66
- template = Template.find(short_name)
67
- options.merge!(:basic_auth => Client.credentials)
68
- response = self.get("#{Client.base_uri}/templates/#{template.id}/template_records/#{id}.json", options)
69
-
70
- pp response if Client.debug?
71
-
72
- case response.code
73
- when 200
74
- return TemplateRecord.new({:template => template}.merge(response["dns_template_record"]))
75
- when 401
76
- raise RuntimeError, "Authentication failed"
77
- when 404
78
- raise RuntimeError, "Could not find template record #{id} for template #{short_name}"
79
- end
80
- end
47
+ def self.find(short_name, id, options={})
48
+ template = DNSimple::Template.find(short_name)
49
+ response = DNSimple::Client.get("templates/#{template.id}/template_records/#{id}.json", options)
81
50
 
82
- # Get all of the template records for the template with the
83
- # given short name.
84
- def self.all(short_name, options={})
85
- template = Template.find(short_name)
86
- options.merge!({:basic_auth => Client.credentials})
87
- response = self.get("#{Client.base_uri}/templates/#{template.id}/template_records.json", options)
88
-
89
- pp response if Client.debug?
90
-
91
- case response.code
92
- when 200
93
- response.map { |r| TemplateRecord.new({:template => template}.merge(r["dns_template_record"])) }
94
- when 401
95
- raise RuntimeError, "Authentication failed"
96
- else
97
- raise RuntimeError, "Error: #{response.code}"
98
- end
51
+ case response.code
52
+ when 200
53
+ return new({:template => template}.merge(response["dns_template_record"]))
54
+ when 404
55
+ raise RuntimeError, "Could not find template record #{id} for template #{short_name}"
99
56
  end
100
57
  end
101
58
 
102
-
59
+ # Get all of the template records for the template with the
60
+ # given short name.
61
+ def self.all(short_name, options={})
62
+ template = DNSimple::Template.find(short_name)
63
+ response = DNSimple::Client.get("templates/#{template.id}/template_records.json", options)
64
+
65
+ case response.code
66
+ when 200
67
+ response.map { |r| new({:template => template}.merge(r["dns_template_record"])) }
68
+ else
69
+ raise RuntimeError, "Error: #{response.code}"
70
+ end
71
+ end
103
72
  end