dnsimple-ruby 0.8.4 → 0.9.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.
data/.rvmrc ADDED
@@ -0,0 +1,2 @@
1
+ rvm use ruby-1.8.7-p249
2
+ rvm gemset use dnsimple-ruby
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.8.4
1
+ 0.9.0
data/bin/dnsimple.rb CHANGED
@@ -72,6 +72,14 @@ contact:delete contact_id # Delete the given c
72
72
 
73
73
  extended-attributes:list tld # List all extended attributes for the given TLD
74
74
 
75
+ service:list # List all supported services
76
+ service:describe short_name # Describe a specific service
77
+
78
+ service:applied domain.com # List all of the services applied to the domain
79
+ service:available domain.com # List all of the services available for the domain
80
+ service:add domain.com short_name # Add the service to the domain
81
+ service:remove domain.com short_name # Remove the service from the domain
82
+
75
83
 
76
84
  Please see the DNSimple documentation at https://dnsimple.com/documentation/api for additional
77
85
  information on the commands that are available to DNSimple customers.
data/lib/dnsimple.rb CHANGED
@@ -12,3 +12,4 @@ require 'dnsimple/template'
12
12
  require 'dnsimple/template_record'
13
13
  require 'dnsimple/transfer_order'
14
14
  require 'dnsimple/extended_attribute'
15
+ require 'dnsimple/service'
data/lib/dnsimple/cli.rb CHANGED
@@ -61,7 +61,15 @@ module DNSimple
61
61
  'contact:update' => DNSimple::Commands::UpdateContact,
62
62
  'contact:delete' => DNSimple::Commands::DeleteContact,
63
63
 
64
- 'extended-attributes:list' => DNSimple::Commands::ListExtendedAttributes
64
+ 'extended-attributes:list' => DNSimple::Commands::ListExtendedAttributes,
65
+
66
+ 'service:list' => DNSimple::Commands::ListServices,
67
+ 'service:describe' => DNSimple::Commands::DescribeService,
68
+
69
+ 'service:applied' => DNSimple::Commands::ListAppliedServices,
70
+ 'service:available' => DNSimple::Commands::ListAvailableServices,
71
+ 'service:add' => DNSimple::Commands::AddService,
72
+ 'service:remove' => DNSimple::Commands::RemoveService
65
73
  }
66
74
  end
67
75
 
@@ -103,3 +111,11 @@ require 'dnsimple/commands/update_contact'
103
111
  require 'dnsimple/commands/delete_contact'
104
112
 
105
113
  require 'dnsimple/commands/list_extended_attributes'
114
+
115
+ require 'dnsimple/commands/list_services'
116
+ require 'dnsimple/commands/describe_service'
117
+
118
+ require 'dnsimple/commands/list_available_services'
119
+ require 'dnsimple/commands/list_applied_services'
120
+ require 'dnsimple/commands/add_service'
121
+ require 'dnsimple/commands/remove_service'
@@ -0,0 +1,14 @@
1
+ module DNSimple
2
+ module Commands
3
+ class AddService
4
+ def execute(args, options={})
5
+ domain_name = args.shift
6
+ domain = Domain.find(domain_name)
7
+ short_name = args.shift
8
+ service = Service.find(short_name)
9
+ domain.add_service(short_name)
10
+ puts "Added #{service.name} to #{domain_name}"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,12 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DescribeService
4
+ def execute(args, options={})
5
+ short_name = args.shift
6
+ service = Service.find(short_name)
7
+ puts "\t#{service.name} (short: #{service.short_name}, id: #{service.id})"
8
+ puts "\t\t#{service.description}"
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,16 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListAppliedServices
4
+ def execute(args, options={})
5
+ domain_name = args.shift
6
+ domain = Domain.find(domain_name)
7
+ services = domain.applied_services
8
+ puts "Found #{services.length} applied services for #{domain_name}"
9
+ services.each do |service|
10
+ puts "\t#{service.name} (short: #{service.short_name}, id: #{service.id})"
11
+ puts "\t\t#{service.description}"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,16 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListAvailableServices
4
+ def execute(args, options={})
5
+ domain_name = args.shift
6
+ domain = Domain.find(domain_name)
7
+ services = domain.available_services
8
+ puts "Found #{services.length} available services for #{domain_name}"
9
+ services.each do |service|
10
+ puts "\t#{service.name} (short: #{service.short_name}, id: #{service.id})"
11
+ puts "\t\t#{service.description}"
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,14 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListServices
4
+ def execute(args, options={})
5
+ services = Service.all
6
+ puts "Found #{services.length} services:"
7
+ services.each do |service|
8
+ puts "\t#{service.name} (short: #{service.short_name}, id: #{service.id})"
9
+ puts "\t\t#{service.description}"
10
+ end
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,14 @@
1
+ module DNSimple
2
+ module Commands
3
+ class RemoveService
4
+ def execute(args, options={})
5
+ domain_name = args.shift
6
+ domain = Domain.find(domain_name)
7
+ short_name = args.shift
8
+ service = Service.find(short_name)
9
+ domain.remove_service(service.id)
10
+ puts "Removed #{service.name} from #{domain_name}"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -42,6 +42,7 @@ module DNSimple #:nodoc:
42
42
  self.class.post("#{Client.base_uri}/domains/#{id}/templates/#{template.id}/apply.json", options)
43
43
  end
44
44
 
45
+ #:nodoc:
45
46
  def resolve_template(template)
46
47
  case template
47
48
  when DNSimple::Template
@@ -51,6 +52,64 @@ module DNSimple #:nodoc:
51
52
  end
52
53
  end
53
54
 
55
+ def applied_services(options={})
56
+ options.merge!({:basic_auth => Client.credentials})
57
+ response = self.class.get("#{Client.base_uri}/domains/#{id}/applied_services.json", options)
58
+ pp response if Client.debug?
59
+ case response.code
60
+ when 200
61
+ response.map { |r| Service.new(r["service"]) }
62
+ when 401
63
+ raise RuntimeError, "Authentication failed"
64
+ else
65
+ raise RuntimeError, "Error: #{response.code}"
66
+ end
67
+ end
68
+
69
+ def available_services(options={})
70
+ options.merge!({:basic_auth => Client.credentials})
71
+ response = self.class.get("#{Client.base_uri}/domains/#{id}/available_services.json", options)
72
+ pp response if Client.debug?
73
+ case response.code
74
+ when 200
75
+ response.map { |r| Service.new(r["service"]) }
76
+ when 401
77
+ raise RuntimeError, "Authentication failed"
78
+ else
79
+ raise RuntimeError, "Error: #{response.code}"
80
+ end
81
+ end
82
+
83
+ def add_service(id_or_short_name, options={})
84
+ options.merge!(:basic_auth => Client.credentials)
85
+ options.merge!(:body => {:service => {:id => id_or_short_name}})
86
+ response = self.class.post("#{Client.base_uri}/domains/#{name}/applied_services.json", options)
87
+ pp response if Client.debug?
88
+ case response.code
89
+ when 200
90
+ true
91
+ when 401
92
+ raise RuntimeError, "Authentication failed"
93
+ else
94
+ raise "Error: #{response.code}"
95
+ end
96
+ end
97
+
98
+ def remove_service(id, options={})
99
+ options.merge!(:basic_auth => Client.credentials)
100
+ response = self.class.delete("#{Client.base_uri}/domains/#{name}/applied_services/#{id}.json", options)
101
+ pp response if Client.debug?
102
+ case response.code
103
+ when 200
104
+ true
105
+ when 401
106
+ raise RuntimeError, "Authentication failed"
107
+ else
108
+ raise "Error: #{response.code}"
109
+ end
110
+ end
111
+
112
+ # Check the availability of a name
54
113
  def self.check(name, options={})
55
114
  options.merge!(:basic_auth => Client.credentials)
56
115
  response = self.get("#{Client.base_uri}/domains/#{name}/check.json", options)
@@ -118,6 +177,8 @@ module DNSimple #:nodoc:
118
177
  end
119
178
  end
120
179
 
180
+ # Find a specific domain in the account either by the numeric ID
181
+ # or by the fully-qualified domain name.
121
182
  def self.find(id_or_name, options={})
122
183
  options.merge!({:basic_auth => Client.credentials})
123
184
  response = self.get("#{Client.base_uri}/domains/#{id_or_name}.json", options)
@@ -136,6 +197,7 @@ module DNSimple #:nodoc:
136
197
  end
137
198
  end
138
199
 
200
+ # Get all domains for the account.
139
201
  def self.all(options={})
140
202
  options.merge!({:basic_auth => Client.credentials})
141
203
  response = self.get("#{Client.base_uri}/domains.json", options)
@@ -0,0 +1,58 @@
1
+ module DNSimple #:nodoc:
2
+ # Class representing a service that can be applied to a domain
3
+ class Service
4
+ include HTTParty
5
+
6
+ attr_accessor :id
7
+
8
+ attr_accessor :name
9
+
10
+ attr_accessor :short_name
11
+
12
+ attr_accessor :description
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
39
+ end
40
+
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?
47
+
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
56
+ end
57
+ end
58
+ end
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dnsimple-ruby
3
3
  version: !ruby/object:Gem::Version
4
- hash: 55
4
+ hash: 59
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 8
9
- - 4
10
- version: 0.8.4
8
+ - 9
9
+ - 0
10
+ version: 0.9.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Anthony Eden
@@ -15,7 +15,7 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2010-12-18 00:00:00 +01:00
18
+ date: 2010-12-19 00:00:00 +01:00
19
19
  default_executable: dnsimple
20
20
  dependencies:
21
21
  - !ruby/object:Gem::Dependency
@@ -117,6 +117,7 @@ extra_rdoc_files:
117
117
  - README.textile
118
118
  files:
119
119
  - .bundle/config
120
+ - .rvmrc
120
121
  - Gemfile
121
122
  - Gemfile.lock
122
123
  - LICENSE
@@ -130,6 +131,7 @@ files:
130
131
  - lib/dnsimple.rb
131
132
  - lib/dnsimple/cli.rb
132
133
  - lib/dnsimple/client.rb
134
+ - lib/dnsimple/commands/add_service.rb
133
135
  - lib/dnsimple/commands/add_template_record.rb
134
136
  - lib/dnsimple/commands/apply_template.rb
135
137
  - lib/dnsimple/commands/check_domain.rb
@@ -146,14 +148,19 @@ files:
146
148
  - lib/dnsimple/commands/describe_contact.rb
147
149
  - lib/dnsimple/commands/describe_domain.rb
148
150
  - lib/dnsimple/commands/describe_record.rb
151
+ - lib/dnsimple/commands/describe_service.rb
149
152
  - lib/dnsimple/commands/describe_user.rb
153
+ - lib/dnsimple/commands/list_applied_services.rb
154
+ - lib/dnsimple/commands/list_available_services.rb
150
155
  - lib/dnsimple/commands/list_contacts.rb
151
156
  - lib/dnsimple/commands/list_domains.rb
152
157
  - lib/dnsimple/commands/list_extended_attributes.rb
153
158
  - lib/dnsimple/commands/list_records.rb
159
+ - lib/dnsimple/commands/list_services.rb
154
160
  - lib/dnsimple/commands/list_template_records.rb
155
161
  - lib/dnsimple/commands/list_templates.rb
156
162
  - lib/dnsimple/commands/register_domain.rb
163
+ - lib/dnsimple/commands/remove_service.rb
157
164
  - lib/dnsimple/commands/transfer_domain.rb
158
165
  - lib/dnsimple/commands/update_contact.rb
159
166
  - lib/dnsimple/commands/update_record.rb
@@ -162,6 +169,7 @@ files:
162
169
  - lib/dnsimple/error.rb
163
170
  - lib/dnsimple/extended_attribute.rb
164
171
  - lib/dnsimple/record.rb
172
+ - lib/dnsimple/service.rb
165
173
  - lib/dnsimple/template.rb
166
174
  - lib/dnsimple/template_record.rb
167
175
  - lib/dnsimple/transfer_order.rb