dnsimple-ruby 0.9.7 → 0.9.8
Sign up to get free protection for your applications and to get access to all the features.
- data/VERSION +1 -1
- data/features/README +12 -0
- data/features/cli/certificates/purchase_certificate.feature +10 -0
- data/features/step_definitions/certificate_steps.rb +3 -0
- data/features/step_definitions/cli_steps.rb +6 -1
- data/features/step_definitions/domain_steps.rb +3 -3
- data/features/support/env.rb +3 -0
- data/lib/dnsimple.rb +1 -0
- data/lib/dnsimple/certificate.rb +58 -0
- data/lib/dnsimple/cli.rb +5 -1
- data/lib/dnsimple/client.rb +5 -1
- data/lib/dnsimple/commands/purchase_certificate.rb +13 -0
- data/lib/dnsimple/contact.rb +2 -1
- data/lib/dnsimple/domain.rb +2 -1
- data/lib/dnsimple/extended_attribute.rb +1 -0
- data/lib/dnsimple/transfer_order.rb +1 -1
- data/spec/README +6 -2
- data/spec/domain_spec.rb +2 -1
- data/spec/extended_attributes_spec.rb +17 -0
- data/spec/spec_helper.rb +2 -2
- metadata +11 -4
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.9.
|
1
|
+
0.9.8
|
data/features/README
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
Before running the DNSimple Ruby Client cucumber feature files, you must do the following:
|
2
|
+
|
3
|
+
1.) If you haven't already go to https://test.dnsimple.com and create an account. Activate your account to the Platinum level using the credit card number of "1".
|
4
|
+
|
5
|
+
2.) Create a file in your home directory called .dnsimple.test and include the following:
|
6
|
+
|
7
|
+
username: YOUR_USERNAME
|
8
|
+
password: YOUR_PASSWORD
|
9
|
+
site: https://test.dnsimple.com
|
10
|
+
|
11
|
+
|
12
|
+
|
@@ -0,0 +1,10 @@
|
|
1
|
+
Feature: purchase a certificate with the CLI
|
2
|
+
As a user
|
3
|
+
In order to purchase a certificate
|
4
|
+
I should be able to use the CLI for purchasing a certificate
|
5
|
+
|
6
|
+
@announce-cmd @announce-stdout
|
7
|
+
Scenario:
|
8
|
+
Given I have set up my credentials
|
9
|
+
When I run `dnsimple certificate:purchase` with a domain I created
|
10
|
+
Then the output should show that a certificate was purchased
|
@@ -1,3 +1,8 @@
|
|
1
1
|
Given /^I have set up my credentials$/ do
|
2
|
-
|
2
|
+
path = DNSimple::Client.config_path
|
3
|
+
File.exists?(File.expand_path(path)).should be_true, "Please set up your #{path} file to continue"
|
4
|
+
credentials = YAML.load(File.new(File.expand_path(path)))
|
5
|
+
credentials['username'].should_not be_nil, "You must specify a username in your #{path} file"
|
6
|
+
credentials['password'].should_not be_nil, "You must specify a password in your #{path} file"
|
7
|
+
credentials['site'].should_not be_nil, "For cucumber to run, you must specify a site in your #{path} file"
|
3
8
|
end
|
@@ -8,13 +8,13 @@ When /^I run `(.*)` with a in\-addr\.arpa domain$/ do |cmd|
|
|
8
8
|
steps %Q(When I run `#{cmd} #{@domain_name}`)
|
9
9
|
end
|
10
10
|
|
11
|
-
When /^I run `
|
11
|
+
When /^I run `(.*)` with a domain I created$/ do |cmd|
|
12
12
|
steps %Q(
|
13
13
|
When I run `dnsimple create` with a new domain
|
14
14
|
)
|
15
15
|
steps %Q(
|
16
|
-
And I run
|
17
|
-
)
|
16
|
+
And I run `#{cmd} #{@domain_name}`
|
17
|
+
)
|
18
18
|
end
|
19
19
|
|
20
20
|
Then /^the output should show that the domain was created$/ do
|
data/features/support/env.rb
CHANGED
data/lib/dnsimple.rb
CHANGED
@@ -0,0 +1,58 @@
|
|
1
|
+
module DNSimple #:nodoc:
|
2
|
+
class Certificate
|
3
|
+
include HTTParty
|
4
|
+
#debug_output $stdout
|
5
|
+
|
6
|
+
# The certificate ID in DNSimple
|
7
|
+
attr_accessor :id
|
8
|
+
|
9
|
+
attr_accessor :domain
|
10
|
+
|
11
|
+
# The subdomain on the certificate
|
12
|
+
attr_accessor :name
|
13
|
+
|
14
|
+
# When the certificate was purchased
|
15
|
+
attr_accessor :created_at
|
16
|
+
|
17
|
+
# When the certificate was last updated
|
18
|
+
attr_accessor :updated_at
|
19
|
+
|
20
|
+
#:nodoc:
|
21
|
+
def initialize(attributes)
|
22
|
+
attributes.each do |key, value|
|
23
|
+
m = "#{key}=".to_sym
|
24
|
+
self.send(m, value) if self.respond_to?(m)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
|
28
|
+
def fqdn
|
29
|
+
[name, domain.name].delete_if { |p| p !~ /\S+/ }.join(".")
|
30
|
+
end
|
31
|
+
|
32
|
+
def self.purchase(domain_name, name, options={})
|
33
|
+
domain = DNSimple::Domain.find(domain_name)
|
34
|
+
|
35
|
+
certificate_hash = {
|
36
|
+
:name => name
|
37
|
+
}
|
38
|
+
|
39
|
+
options.merge!(DNSimple::Client.standard_options_with_credentials)
|
40
|
+
options.merge!({:body => {:certificate => certificate_hash}})
|
41
|
+
|
42
|
+
response = self.post("#{DNSimple::Client.base_uri}/domains/#{domain.id}/certificates", options)
|
43
|
+
|
44
|
+
pp response if DNSimple::Client.debug?
|
45
|
+
|
46
|
+
case response.code
|
47
|
+
when 201
|
48
|
+
return DNSimple::Certificate.new({:domain => domain}.merge(response["certificate"]))
|
49
|
+
when 401
|
50
|
+
raise RuntimeError, "Authentication failed"
|
51
|
+
when 406
|
52
|
+
raise DNSimple::CertificateExists.new("#{name}.#{domain_name}", response["errors"])
|
53
|
+
else
|
54
|
+
raise DNSimple::Error.new("#{name}.#{domain_name}", response["errors"])
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/dnsimple/cli.rb
CHANGED
@@ -65,7 +65,9 @@ module DNSimple
|
|
65
65
|
'service:applied' => DNSimple::Commands::ListAppliedServices,
|
66
66
|
'service:available' => DNSimple::Commands::ListAvailableServices,
|
67
67
|
'service:add' => DNSimple::Commands::AddService,
|
68
|
-
'service:remove' => DNSimple::Commands::RemoveService
|
68
|
+
'service:remove' => DNSimple::Commands::RemoveService,
|
69
|
+
|
70
|
+
'certificate:purchase' => DNSimple::Commands::PurchaseCertificate
|
69
71
|
}
|
70
72
|
end
|
71
73
|
end
|
@@ -110,3 +112,5 @@ require 'dnsimple/commands/list_available_services'
|
|
110
112
|
require 'dnsimple/commands/list_applied_services'
|
111
113
|
require 'dnsimple/commands/add_service'
|
112
114
|
require 'dnsimple/commands/remove_service'
|
115
|
+
|
116
|
+
require 'dnsimple/commands/purchase_certificate'
|
data/lib/dnsimple/client.rb
CHANGED
@@ -41,7 +41,11 @@ module DNSimple
|
|
41
41
|
load_credentials unless credentials_loaded?
|
42
42
|
end
|
43
43
|
|
44
|
-
def self.
|
44
|
+
def self.config_path
|
45
|
+
ENV['DNSIMPLE_CONFIG'] || '~/.dnsimple'
|
46
|
+
end
|
47
|
+
|
48
|
+
def self.load_credentials(path=config_path)
|
45
49
|
credentials = YAML.load(File.new(File.expand_path(path)))
|
46
50
|
self.username = credentials['username']
|
47
51
|
self.password = credentials['password']
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module DNSimple
|
2
|
+
module Commands
|
3
|
+
class PurchaseCertificate
|
4
|
+
def execute(args, options={})
|
5
|
+
domain_name = args.shift
|
6
|
+
name = args.empty? ? '' : args.shift
|
7
|
+
|
8
|
+
certificate = Certificate.purchase(domain_name, name)
|
9
|
+
puts "Purchased certificate for #{certificate.fqdn}"
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
data/lib/dnsimple/contact.rb
CHANGED
@@ -107,9 +107,10 @@ module DNSimple #:nodoc:
|
|
107
107
|
'last' => 'last_name',
|
108
108
|
'state' => 'state_province',
|
109
109
|
'province' => 'state_province',
|
110
|
+
'state_or_province' => 'state_province',
|
110
111
|
'email' => 'email_address',
|
111
112
|
}
|
112
|
-
aliases[name] || name
|
113
|
+
aliases[name.to_s] || name
|
113
114
|
end
|
114
115
|
|
115
116
|
def self.resolve_attributes(attributes)
|
data/lib/dnsimple/domain.rb
CHANGED
@@ -149,6 +149,7 @@ module DNSimple #:nodoc:
|
|
149
149
|
end
|
150
150
|
end
|
151
151
|
|
152
|
+
# Purchase a domain name.
|
152
153
|
def self.register(name, registrant={}, extended_attributes={}, options={})
|
153
154
|
options.merge!(DNSimple::Client.standard_options_with_credentials)
|
154
155
|
|
@@ -157,7 +158,7 @@ module DNSimple #:nodoc:
|
|
157
158
|
if registrant[:id]
|
158
159
|
body[:domain][:registrant_id] = registrant[:id]
|
159
160
|
else
|
160
|
-
body.merge!(:contact => registrant)
|
161
|
+
body.merge!(:contact => Contact.resolve_attributes(registrant))
|
161
162
|
end
|
162
163
|
end
|
163
164
|
body.merge!(:extended_attribute => extended_attributes)
|
@@ -20,7 +20,7 @@ module DNSimple #:nodoc:
|
|
20
20
|
if registrant[:id]
|
21
21
|
body[:domain][:registrant_id] = registrant[:id]
|
22
22
|
else
|
23
|
-
body.merge!(:contact => registrant)
|
23
|
+
body.merge!(:contact => Contact.resolve_attributes(registrant))
|
24
24
|
end
|
25
25
|
|
26
26
|
body.merge!(:extended_attribute => extended_attributes)
|
data/spec/README
CHANGED
@@ -1,6 +1,10 @@
|
|
1
|
-
Before running the DNSimple Ruby Client specifications, you must
|
1
|
+
Before running the DNSimple Ruby Client specifications, you must do the following:
|
2
|
+
|
3
|
+
1.) If you haven't already create a new account at https://test.dnsimple.com and activate it using the credit card number of "1"
|
4
|
+
|
5
|
+
2.) Create a file in your home directory called .dnsimple.test and include the following:
|
2
6
|
|
3
7
|
username: YOUR_USERNAME
|
4
8
|
password: YOUR_PASSWORD
|
5
|
-
|
9
|
+
site: https://test.dnsimple.com
|
6
10
|
|
data/spec/domain_spec.rb
CHANGED
@@ -45,7 +45,8 @@ describe DNSimple::Domain do
|
|
45
45
|
:city => 'Miami',
|
46
46
|
:state_or_province => 'FL',
|
47
47
|
:country => 'US',
|
48
|
-
:postal_code => '33143'
|
48
|
+
:postal_code => '33143',
|
49
|
+
:phone => '321 555 1212'
|
49
50
|
}
|
50
51
|
domain = DNSimple::Domain.register(name, registrant)
|
51
52
|
domain.name.should eql(name)
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require File.join(File.dirname(__FILE__), 'spec_helper')
|
2
|
+
|
3
|
+
describe DNSimple::ExtendedAttribute do
|
4
|
+
|
5
|
+
describe "list extended attributes" do
|
6
|
+
context "for com" do
|
7
|
+
it "is an empty array" do
|
8
|
+
DNSimple::ExtendedAttribute.find('com').should be_empty
|
9
|
+
end
|
10
|
+
end
|
11
|
+
context "for ca" do
|
12
|
+
it "is not empty" do
|
13
|
+
DNSimple::ExtendedAttribute.find('ca').should_not be_empty
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/spec/spec_helper.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'lib/dnsimple'
|
2
2
|
|
3
|
-
config = YAML.load(File.new(File.expand_path('~/.dnsimple.
|
3
|
+
config = YAML.load(File.new(File.expand_path('~/.dnsimple.test')))
|
4
4
|
|
5
|
-
DNSimple::Client.base_uri = config['site'] || "
|
5
|
+
DNSimple::Client.base_uri = config['site'] || "https://test.dnsimple.com/"
|
6
6
|
DNSimple::Client.username = config['username']
|
7
7
|
DNSimple::Client.password = config['password']
|
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:
|
4
|
+
hash: 43
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 9
|
9
|
-
-
|
10
|
-
version: 0.9.
|
9
|
+
- 8
|
10
|
+
version: 0.9.8
|
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: 2011-
|
18
|
+
date: 2011-05-22 00:00:00 -04:00
|
19
19
|
default_executable: dnsimple
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
@@ -171,6 +171,8 @@ files:
|
|
171
171
|
- bin/dnsimple
|
172
172
|
- bin/dnsimple.rb
|
173
173
|
- dnsimple-ruby.gemspec
|
174
|
+
- features/README
|
175
|
+
- features/cli/certificates/purchase_certificate.feature
|
174
176
|
- features/cli/contacts/create_contact.feature
|
175
177
|
- features/cli/domains/check_domain.feature
|
176
178
|
- features/cli/domains/create_domain.feature
|
@@ -180,12 +182,14 @@ files:
|
|
180
182
|
- features/cli/records/create_record.feature
|
181
183
|
- features/cli/records/delete_record.feature
|
182
184
|
- features/cli/templates/apply_template.feature
|
185
|
+
- features/step_definitions/certificate_steps.rb
|
183
186
|
- features/step_definitions/cli_steps.rb
|
184
187
|
- features/step_definitions/domain_steps.rb
|
185
188
|
- features/step_definitions/record_steps.rb
|
186
189
|
- features/step_definitions/template_steps.rb
|
187
190
|
- features/support/env.rb
|
188
191
|
- lib/dnsimple.rb
|
192
|
+
- lib/dnsimple/certificate.rb
|
189
193
|
- lib/dnsimple/cli.rb
|
190
194
|
- lib/dnsimple/client.rb
|
191
195
|
- lib/dnsimple/commands/add_service.rb
|
@@ -216,6 +220,7 @@ files:
|
|
216
220
|
- lib/dnsimple/commands/list_services.rb
|
217
221
|
- lib/dnsimple/commands/list_template_records.rb
|
218
222
|
- lib/dnsimple/commands/list_templates.rb
|
223
|
+
- lib/dnsimple/commands/purchase_certificate.rb
|
219
224
|
- lib/dnsimple/commands/register_domain.rb
|
220
225
|
- lib/dnsimple/commands/remove_service.rb
|
221
226
|
- lib/dnsimple/commands/transfer_domain.rb
|
@@ -234,6 +239,7 @@ files:
|
|
234
239
|
- spec/README
|
235
240
|
- spec/contact_spec.rb
|
236
241
|
- spec/domain_spec.rb
|
242
|
+
- spec/extended_attributes_spec.rb
|
237
243
|
- spec/record_spec.rb
|
238
244
|
- spec/spec_helper.rb
|
239
245
|
- spec/template_spec.rb
|
@@ -275,6 +281,7 @@ summary: A ruby wrapper for the DNSimple API
|
|
275
281
|
test_files:
|
276
282
|
- spec/contact_spec.rb
|
277
283
|
- spec/domain_spec.rb
|
284
|
+
- spec/extended_attributes_spec.rb
|
278
285
|
- spec/record_spec.rb
|
279
286
|
- spec/spec_helper.rb
|
280
287
|
- spec/template_spec.rb
|