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 CHANGED
@@ -6,4 +6,5 @@ group :development do
6
6
  gem 'rake'
7
7
  gem 'jeweler'
8
8
  gem 'rspec', '>= 2.0.0'
9
+ gem 'ruby-debug'
9
10
  end
@@ -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.4.0)
11
- gemcutter (>= 0.1.0)
10
+ jeweler (1.5.1)
11
+ bundler (~> 1.0.0)
12
12
  git (>= 1.2.5)
13
- rubyforge (>= 2.0.0)
14
- json_pure (1.4.6)
13
+ rake
14
+ linecache (0.43)
15
15
  rake (0.8.7)
16
- rspec (2.0.0)
17
- rspec-core (= 2.0.0)
18
- rspec-expectations (= 2.0.0)
19
- rspec-mocks (= 2.0.0)
20
- rspec-core (2.0.0)
21
- rspec-expectations (2.0.0)
22
- diff-lcs (>= 1.1.2)
23
- rspec-mocks (2.0.0)
24
- rspec-core (= 2.0.0)
25
- rspec-expectations (= 2.0.0)
26
- rubyforge (2.0.4)
27
- json_pure (>= 1.1.7)
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.7.1
1
+ 0.8.0
@@ -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 # Register the given domain with DNSimple
42
- transfer domain.com registrant_id [authinfo] # Transfer the given domain into DNSimple
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
 
@@ -11,3 +11,4 @@ require 'dnsimple/record'
11
11
  require 'dnsimple/template'
12
12
  require 'dnsimple/template_record'
13
13
  require 'dnsimple/transfer_order'
14
+ require 'dnsimple/extended_attribute'
@@ -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'
@@ -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
- domain = Domain.register(name, registrant)
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
- transfer_order = TransferOrder.create(name, authinfo, registrant)
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: 1
4
+ hash: 63
5
5
  prerelease: false
6
6
  segments:
7
7
  - 0
8
- - 7
9
- - 1
10
- version: 0.7.1
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-12 00:00:00 -06:00
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
- requirement: &id001 !ruby/object:Gem::Requirement
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
- version_requirements: *id001
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
- - --charset=UTF-8
180
+ rdoc_options: []
181
+
109
182
  require_paths:
110
183
  - lib
111
184
  required_ruby_version: !ruby/object:Gem::Requirement
data/.gitignore DELETED
@@ -1,3 +0,0 @@
1
- pkg
2
- rdoc
3
- dnsimple-ruby.gemspec