dnsimple-ruby 0.7.1 → 0.8.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/Gemfile +1 -0
- data/Gemfile.lock +19 -17
- data/VERSION +1 -1
- data/bin/dnsimple.rb +4 -2
- data/lib/dnsimple.rb +1 -0
- data/lib/dnsimple/cli.rb +4 -0
- data/lib/dnsimple/client.rb +9 -0
- data/lib/dnsimple/commands/list_extended_attributes.rb +25 -0
- data/lib/dnsimple/commands/register_domain.rb +8 -1
- data/lib/dnsimple/commands/transfer_domain.rb +7 -1
- data/lib/dnsimple/extended_attribute.rb +73 -0
- metadata +84 -11
- data/.gitignore +0 -3
data/Gemfile
CHANGED
data/Gemfile.lock
CHANGED
@@ -1,30 +1,31 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
+
columnize (0.3.2)
|
4
5
|
crack (0.1.8)
|
5
6
|
diff-lcs (1.1.2)
|
6
|
-
gemcutter (0.6.1)
|
7
7
|
git (1.2.5)
|
8
8
|
httparty (0.6.1)
|
9
9
|
crack (= 0.1.8)
|
10
|
-
jeweler (1.
|
11
|
-
|
10
|
+
jeweler (1.5.1)
|
11
|
+
bundler (~> 1.0.0)
|
12
12
|
git (>= 1.2.5)
|
13
|
-
|
14
|
-
|
13
|
+
rake
|
14
|
+
linecache (0.43)
|
15
15
|
rake (0.8.7)
|
16
|
-
rspec (2.
|
17
|
-
rspec-core (
|
18
|
-
rspec-expectations (
|
19
|
-
rspec-mocks (
|
20
|
-
rspec-core (2.
|
21
|
-
rspec-expectations (2.
|
22
|
-
diff-lcs (
|
23
|
-
rspec-mocks (2.
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
16
|
+
rspec (2.1.0)
|
17
|
+
rspec-core (~> 2.1.0)
|
18
|
+
rspec-expectations (~> 2.1.0)
|
19
|
+
rspec-mocks (~> 2.1.0)
|
20
|
+
rspec-core (2.1.0)
|
21
|
+
rspec-expectations (2.1.0)
|
22
|
+
diff-lcs (~> 1.1.2)
|
23
|
+
rspec-mocks (2.1.0)
|
24
|
+
ruby-debug (0.10.4)
|
25
|
+
columnize (>= 0.1)
|
26
|
+
ruby-debug-base (~> 0.10.4.0)
|
27
|
+
ruby-debug-base (0.10.4)
|
28
|
+
linecache (>= 0.3)
|
28
29
|
|
29
30
|
PLATFORMS
|
30
31
|
ruby
|
@@ -34,3 +35,4 @@ DEPENDENCIES
|
|
34
35
|
jeweler
|
35
36
|
rake
|
36
37
|
rspec (>= 2.0.0)
|
38
|
+
ruby-debug
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.8.0
|
data/bin/dnsimple.rb
CHANGED
@@ -38,8 +38,10 @@ list # List all domains
|
|
38
38
|
check domain.com # Check if a domain is available (for registration)
|
39
39
|
describe domain.com # Describe the given domain
|
40
40
|
create [--template=short_name] domain.com # Add the given domain
|
41
|
-
register [--template=short_name] domain.com registrant_id
|
42
|
-
|
41
|
+
register [--template=short_name] domain.com registrant_id \ # Register the given domain with DNSimple
|
42
|
+
[[name:value] [name:value]] # name:value pairs can be given for extended attributes
|
43
|
+
transfer domain.com registrant_id [authinfo] \ # Transfer the given domain into DNSimple
|
44
|
+
[[name:value] [name:value]] # name:value pairs can be given for extended attributes
|
43
45
|
delete domain.com # Delete the given domain
|
44
46
|
apply domain.com template_short_name # Apply a template to the domain
|
45
47
|
|
data/lib/dnsimple.rb
CHANGED
data/lib/dnsimple/cli.rb
CHANGED
@@ -58,6 +58,8 @@ module DNSimple
|
|
58
58
|
'contact:describe' => DNSimple::Commands::DescribeContact,
|
59
59
|
'contact:update' => DNSimple::Commands::UpdateContact,
|
60
60
|
'contact:delete' => DNSimple::Commands::DeleteContact,
|
61
|
+
|
62
|
+
'extended-attributes:list' => DNSimple::Commands::ListExtendedAttributes
|
61
63
|
}
|
62
64
|
end
|
63
65
|
|
@@ -95,3 +97,5 @@ require 'dnsimple/commands/list_contacts'
|
|
95
97
|
require 'dnsimple/commands/describe_contact'
|
96
98
|
require 'dnsimple/commands/update_contact'
|
97
99
|
require 'dnsimple/commands/delete_contact'
|
100
|
+
|
101
|
+
require 'dnsimple/commands/list_extended_attributes'
|
data/lib/dnsimple/client.rb
CHANGED
@@ -8,6 +8,7 @@ module DNSimple
|
|
8
8
|
end
|
9
9
|
|
10
10
|
def self.username
|
11
|
+
raise RuntimeError, "You must set your username first: DNSimple::Client.username = 'username'" unless defined?(@@username)
|
11
12
|
@@username
|
12
13
|
end
|
13
14
|
|
@@ -16,6 +17,7 @@ module DNSimple
|
|
16
17
|
end
|
17
18
|
|
18
19
|
def self.password
|
20
|
+
raise RuntimeError, "You must set your password first: DNSimple::Client.password = 'password'" unless defined?(@@password)
|
19
21
|
@@password
|
20
22
|
end
|
21
23
|
|
@@ -34,5 +36,12 @@ module DNSimple
|
|
34
36
|
def self.base_uri=(base_uri)
|
35
37
|
@@base_uri = base_uri.gsub(/\/$/, '')
|
36
38
|
end
|
39
|
+
|
40
|
+
def self.load_credentials(path='~/.dnsimple')
|
41
|
+
credentials = YAML.load(File.new(File.expand_path(path)))
|
42
|
+
self.username = credentials['username']
|
43
|
+
self.password = credentials['password']
|
44
|
+
"Credentials loaded from #{path}"
|
45
|
+
end
|
37
46
|
end
|
38
47
|
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module DNSimple
|
2
|
+
module Commands
|
3
|
+
class ListExtendedAttributes
|
4
|
+
def execute(args, options={})
|
5
|
+
tld = args.shift
|
6
|
+
extended_attributes = ExtendedAttribute.find(tld)
|
7
|
+
puts "Extended attributes: "
|
8
|
+
extended_attributes.each do |extended_attribute|
|
9
|
+
o = " #{extended_attribute.name}"
|
10
|
+
o << " (required)" if extended_attribute.required
|
11
|
+
o << " : #{extended_attribute.description}\n"
|
12
|
+
unless extended_attribute.options.empty?
|
13
|
+
o << " Options:\n"
|
14
|
+
extended_attribute.options.each do |option|
|
15
|
+
o << " #{option.title}: #{option.value}"
|
16
|
+
o << " (#{option.description})" if option.description
|
17
|
+
o << "\n"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
puts o
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
24
|
+
end
|
25
|
+
end
|
@@ -4,7 +4,14 @@ module DNSimple
|
|
4
4
|
def execute(args, options={})
|
5
5
|
name = args.shift
|
6
6
|
registrant = {:id => args.shift}
|
7
|
-
|
7
|
+
|
8
|
+
extended_attributes = {}
|
9
|
+
args.each do |arg|
|
10
|
+
n, v = arg.split(":")
|
11
|
+
extended_attributes[n] = v
|
12
|
+
end
|
13
|
+
|
14
|
+
domain = Domain.register(name, registrant, extended_attributes)
|
8
15
|
puts "Registered #{domain.name}"
|
9
16
|
|
10
17
|
if template = options.delete(:template)
|
@@ -7,7 +7,13 @@ module DNSimple
|
|
7
7
|
authinfo = args.shift unless args.empty?
|
8
8
|
authinfo ||= ''
|
9
9
|
|
10
|
-
|
10
|
+
extended_attributes = {}
|
11
|
+
args.each do |arg|
|
12
|
+
n, v = arg.split(":")
|
13
|
+
extended_attributes[n] = v
|
14
|
+
end
|
15
|
+
|
16
|
+
transfer_order = TransferOrder.create(name, authinfo, registrant, extended_attributes)
|
11
17
|
puts "Transfer order issued for #{name}"
|
12
18
|
end
|
13
19
|
end
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module DNSimple #:nodoc:
|
2
|
+
# Used for domains that require extended attributes.
|
3
|
+
class ExtendedAttribute
|
4
|
+
# An option for an extended attribute
|
5
|
+
class Option
|
6
|
+
# The option name
|
7
|
+
attr_accessor :title
|
8
|
+
|
9
|
+
# The option value
|
10
|
+
attr_accessor :value
|
11
|
+
|
12
|
+
# A long description of the option
|
13
|
+
attr_accessor :description
|
14
|
+
|
15
|
+
#:nodoc:
|
16
|
+
def initialize(attributes)
|
17
|
+
attributes.each do |key, value|
|
18
|
+
m = "#{key}=".to_sym
|
19
|
+
self.send(m, value) if self.respond_to?(m)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
include HTTParty
|
25
|
+
|
26
|
+
# The extended attribute name
|
27
|
+
attr_accessor :name
|
28
|
+
|
29
|
+
# A description of the extended attribute
|
30
|
+
attr_accessor :description
|
31
|
+
|
32
|
+
# Boolean indicating if the extended attribute is required
|
33
|
+
attr_accessor :required
|
34
|
+
|
35
|
+
#:nodoc:
|
36
|
+
def initialize(attributes)
|
37
|
+
attributes.each do |key, value|
|
38
|
+
m = "#{key}=".to_sym
|
39
|
+
self.send(m, value) if self.respond_to?(m)
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
# An array of options for the extended attribute
|
44
|
+
def options
|
45
|
+
@options ||= []
|
46
|
+
end
|
47
|
+
|
48
|
+
def options=(opts)
|
49
|
+
@options = []
|
50
|
+
opts.each do |opt|
|
51
|
+
@options << Option.new(opt)
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
# Find the extended attributes for the given TLD
|
56
|
+
def self.find(tld, options={})
|
57
|
+
options.merge!({:basic_auth => Client.credentials})
|
58
|
+
|
59
|
+
response = self.get("#{Client.base_uri}/extended_attributes/#{tld}.json", options)
|
60
|
+
|
61
|
+
pp response if Client.debug?
|
62
|
+
|
63
|
+
case response.code
|
64
|
+
when 200
|
65
|
+
response.map { |r| ExtendedAttribute.new(r) }
|
66
|
+
when 401
|
67
|
+
raise RuntimeError, "Authentication failed"
|
68
|
+
else
|
69
|
+
raise RuntimeError, "Error: #{response.code}"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
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:
|
4
|
+
hash: 63
|
5
5
|
prerelease: false
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
-
|
9
|
-
-
|
10
|
-
version: 0.
|
8
|
+
- 8
|
9
|
+
- 0
|
10
|
+
version: 0.8.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Anthony Eden
|
@@ -15,13 +15,42 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2010-11-
|
18
|
+
date: 2010-11-21 00:00:00 +01:00
|
19
19
|
default_executable:
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
|
+
type: :runtime
|
23
|
+
prerelease: false
|
22
24
|
name: httparty
|
25
|
+
version_requirements: &id001 !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
27
|
+
requirements:
|
28
|
+
- - ">="
|
29
|
+
- !ruby/object:Gem::Version
|
30
|
+
hash: 3
|
31
|
+
segments:
|
32
|
+
- 0
|
33
|
+
version: "0"
|
34
|
+
requirement: *id001
|
35
|
+
- !ruby/object:Gem::Dependency
|
36
|
+
type: :development
|
37
|
+
prerelease: false
|
38
|
+
name: rake
|
39
|
+
version_requirements: &id002 !ruby/object:Gem::Requirement
|
40
|
+
none: false
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
hash: 3
|
45
|
+
segments:
|
46
|
+
- 0
|
47
|
+
version: "0"
|
48
|
+
requirement: *id002
|
49
|
+
- !ruby/object:Gem::Dependency
|
50
|
+
type: :development
|
23
51
|
prerelease: false
|
24
|
-
|
52
|
+
name: jeweler
|
53
|
+
version_requirements: &id003 !ruby/object:Gem::Requirement
|
25
54
|
none: false
|
26
55
|
requirements:
|
27
56
|
- - ">="
|
@@ -30,13 +59,56 @@ dependencies:
|
|
30
59
|
segments:
|
31
60
|
- 0
|
32
61
|
version: "0"
|
62
|
+
requirement: *id003
|
63
|
+
- !ruby/object:Gem::Dependency
|
64
|
+
type: :development
|
65
|
+
prerelease: false
|
66
|
+
name: rspec
|
67
|
+
version_requirements: &id004 !ruby/object:Gem::Requirement
|
68
|
+
none: false
|
69
|
+
requirements:
|
70
|
+
- - ">="
|
71
|
+
- !ruby/object:Gem::Version
|
72
|
+
hash: 15
|
73
|
+
segments:
|
74
|
+
- 2
|
75
|
+
- 0
|
76
|
+
- 0
|
77
|
+
version: 2.0.0
|
78
|
+
requirement: *id004
|
79
|
+
- !ruby/object:Gem::Dependency
|
80
|
+
type: :development
|
81
|
+
prerelease: false
|
82
|
+
name: ruby-debug
|
83
|
+
version_requirements: &id005 !ruby/object:Gem::Requirement
|
84
|
+
none: false
|
85
|
+
requirements:
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
hash: 3
|
89
|
+
segments:
|
90
|
+
- 0
|
91
|
+
version: "0"
|
92
|
+
requirement: *id005
|
93
|
+
- !ruby/object:Gem::Dependency
|
33
94
|
type: :runtime
|
34
|
-
|
95
|
+
prerelease: false
|
96
|
+
name: httparty
|
97
|
+
version_requirements: &id006 !ruby/object:Gem::Requirement
|
98
|
+
none: false
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
hash: 3
|
103
|
+
segments:
|
104
|
+
- 0
|
105
|
+
version: "0"
|
106
|
+
requirement: *id006
|
35
107
|
description: A ruby wrapper for the DNSimple API that also includes a command-line client.
|
36
108
|
email: anthony.eden@dnsimple.com
|
37
109
|
executables:
|
38
|
-
- dnsimple
|
39
110
|
- dnsimple.rb
|
111
|
+
- dnsimple
|
40
112
|
extensions: []
|
41
113
|
|
42
114
|
extra_rdoc_files:
|
@@ -46,7 +118,6 @@ extra_rdoc_files:
|
|
46
118
|
- README.textile
|
47
119
|
files:
|
48
120
|
- .bundle/config
|
49
|
-
- .gitignore
|
50
121
|
- Gemfile
|
51
122
|
- Gemfile.lock
|
52
123
|
- LICENSE
|
@@ -78,6 +149,7 @@ files:
|
|
78
149
|
- lib/dnsimple/commands/describe_user.rb
|
79
150
|
- lib/dnsimple/commands/list_contacts.rb
|
80
151
|
- lib/dnsimple/commands/list_domains.rb
|
152
|
+
- lib/dnsimple/commands/list_extended_attributes.rb
|
81
153
|
- lib/dnsimple/commands/list_records.rb
|
82
154
|
- lib/dnsimple/commands/list_template_records.rb
|
83
155
|
- lib/dnsimple/commands/list_templates.rb
|
@@ -87,6 +159,7 @@ files:
|
|
87
159
|
- lib/dnsimple/contact.rb
|
88
160
|
- lib/dnsimple/domain.rb
|
89
161
|
- lib/dnsimple/error.rb
|
162
|
+
- lib/dnsimple/extended_attribute.rb
|
90
163
|
- lib/dnsimple/record.rb
|
91
164
|
- lib/dnsimple/template.rb
|
92
165
|
- lib/dnsimple/template_record.rb
|
@@ -104,8 +177,8 @@ homepage: http://github.com/aetrion/dnsimple-ruby
|
|
104
177
|
licenses: []
|
105
178
|
|
106
179
|
post_install_message:
|
107
|
-
rdoc_options:
|
108
|
-
|
180
|
+
rdoc_options: []
|
181
|
+
|
109
182
|
require_paths:
|
110
183
|
- lib
|
111
184
|
required_ruby_version: !ruby/object:Gem::Requirement
|
data/.gitignore
DELETED