dnsimple-ruby 0.9.7 → 0.9.8
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/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
|