dnsimple-ruby 0.5.0 → 0.6.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.
@@ -0,0 +1,2 @@
1
+ ---
2
+ BUNDLE_DISABLE_SHARED_GEMS: "1"
data/Gemfile ADDED
@@ -0,0 +1,9 @@
1
+ source 'http://rubygems.org'
2
+
3
+ gem 'httparty'
4
+
5
+ group :development do
6
+ gem 'rake'
7
+ gem 'jeweler'
8
+ gem 'rspec', '>= 2.0.0'
9
+ end
@@ -0,0 +1,36 @@
1
+ GEM
2
+ remote: http://rubygems.org/
3
+ specs:
4
+ crack (0.1.8)
5
+ diff-lcs (1.1.2)
6
+ gemcutter (0.6.1)
7
+ git (1.2.5)
8
+ httparty (0.6.1)
9
+ crack (= 0.1.8)
10
+ jeweler (1.4.0)
11
+ gemcutter (>= 0.1.0)
12
+ git (>= 1.2.5)
13
+ rubyforge (>= 2.0.0)
14
+ json_pure (1.4.6)
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)
28
+
29
+ PLATFORMS
30
+ ruby
31
+
32
+ DEPENDENCIES
33
+ httparty
34
+ jeweler
35
+ rake
36
+ rspec (>= 2.0.0)
data/README CHANGED
@@ -26,15 +26,53 @@ The following commands are available for domains:
26
26
  * dnsimple list
27
27
  * dnsimple describe domain.com
28
28
  * dnsimple create domain.com
29
+ * dnsimple register domain.com registrant_id
30
+ * dnsimple transfer domain.com registrant_id [authinfo]
29
31
  * dnsimple delete domain.com
30
32
  * dnsimple apply domain.com template_short_name
31
33
 
34
+ Please note that domain registration and transfer can only be done through the API for domains that do not require extended attributes. A future version of the API will add support for extended attributes.
35
+
32
36
  The following commands are available for records:
33
37
 
34
38
  * dnsimple record:create [--prio=priority] domain.com name type content [ttl]
35
39
  * dnsimple record:list domain.com
36
40
  * dnsimple record:delete domain.com record_id
37
41
 
42
+ The following commands are available for custom templates:
43
+
44
+ * dnsimple template:list
45
+ * dnsimple template:create name short_name [description]
46
+ * dnsimple template:delete short_name
47
+ * dnsimple template:list_records short_name
48
+ * dnsimple template:add_record short_name name type content [ttl] [prio]
49
+ * dnsimple template:delete_record short_name template_record_id
50
+
51
+ The following commands are available for managing contacts:
52
+
53
+ * dnsimple contact:list
54
+ * dnsimple contact:describe id
55
+ * dnsimple contact:create [name:value name:value ...]
56
+ * dnsimple contact:update id [name:value name:value ...]
57
+ * dnsimple contact:delete id
58
+
59
+ The contact name/value pairs are:
60
+
61
+ * first_name
62
+ * last_name
63
+ * organization_name (optional)
64
+ * job_title (required if organization name is specified)
65
+ * address1
66
+ * address2 (optional)
67
+ * city
68
+ * state_province (also aliased as state)
69
+ * postal_code
70
+ * country
71
+ * email
72
+ * phone
73
+ * phone_ext (optional)
74
+ * fax (optional)
75
+
38
76
  == Wrapper Classes
39
77
 
40
78
  In addition to the command line utility you may also use the included Ruby
@@ -9,6 +9,11 @@ In this file add the following:
9
9
  username: YOUR_USERNAME
10
10
  password: YOUR_PASSWORD
11
11
 
12
+ Alternatively you can pass the credentials via command-line arguments, as in:
13
+
14
+ dnsimple -u username -p password command
15
+
16
+
12
17
  == Commands
13
18
 
14
19
  The following commands are available for domains:
@@ -16,11 +21,83 @@ The following commands are available for domains:
16
21
  * dnsimple list
17
22
  * dnsimple describe domain.com
18
23
  * dnsimple create domain.com
24
+ * dnsimple register domain.com registrant_id
25
+ * dnsimple transfer domain.com registrant_id [authinfo]
19
26
  * dnsimple delete domain.com
20
27
  * dnsimple apply domain.com template_short_name
21
28
 
29
+ Please note that domain registration and transfer can only be done through the API for domains that do not require extended attributes. A future version of the API will add support for extended attributes.
30
+
22
31
  The following commands are available for records:
23
32
 
24
33
  * dnsimple record:create [--prio=priority] domain.com name type content [ttl]
25
34
  * dnsimple record:list domain.com
26
35
  * dnsimple record:delete domain.com record_id
36
+
37
+ The following commands are available for custom templates:
38
+
39
+ * dnsimple template:list
40
+ * dnsimple template:create name short_name [description]
41
+ * dnsimple template:delete short_name
42
+ * dnsimple template:list_records short_name
43
+ * dnsimple template:add_record short_name name type content [ttl] [prio]
44
+ * dnsimple template:delete_record short_name template_record_id
45
+
46
+ The following commands are available for managing contacts:
47
+
48
+ * dnsimple contact:list
49
+ * dnsimple contact:describe id
50
+ * dnsimple contact:create [name:value name:value ...]
51
+ * dnsimple contact:update id [name:value name:value ...]
52
+ * dnsimple contact:delete id
53
+
54
+ === Contact Attributes
55
+
56
+ The contact attributes that can be used in the name:value pairs are:
57
+
58
+ * first_name
59
+ * last_name
60
+ * organization_name (optional)
61
+ * job_title (required if organization name is specified)
62
+ * address1
63
+ * address2 (optional)
64
+ * city
65
+ * state_province (also aliased as state)
66
+ * postal_code
67
+ * country
68
+ * email
69
+ * phone
70
+ * phone_ext (optional)
71
+ * fax (optional)
72
+
73
+ == Wrapper Classes
74
+
75
+ In addition to the command line utility you may also use the included Ruby
76
+ classes directly in your Ruby applications.
77
+
78
+ Sample:
79
+
80
+ require 'rubygems'
81
+ require 'dnsimple'
82
+
83
+ DNSimple::Client.username = 'YOUR_USERNAME'
84
+ DNSimple::Client.password = 'YOUR_PASSWORD'
85
+
86
+ user = User.me
87
+ puts "#{user.domain_count} domains"
88
+
89
+ puts "Domains..."
90
+ Domain.all.each do |domain|
91
+ puts " #{domain.name}"
92
+ end
93
+
94
+ domain = Domain.find("example.com")
95
+ domain.apply("template") # applies a standard or custom template to the domain
96
+
97
+ domain = Domain.create("newdomain.com")
98
+ puts "Added #{domain.name}"
99
+ domain.delete # removes from DNSimple
100
+
101
+ The complete RDoc for the wrapper classes can be found here:
102
+
103
+ http://rdoc.info/projects/aetrion/dnsimple-ruby
@@ -36,15 +36,55 @@ The following commands are available for domains:
36
36
  * dnsimple list
37
37
  * dnsimple describe domain.com
38
38
  * dnsimple create domain.com
39
+ * dnsimple register domain.com registrant_id
40
+ * dnsimple transfer domain.com registrant_id [authinfo]
39
41
  * dnsimple delete domain.com
40
42
  * dnsimple apply domain.com template_short_name
41
43
 
44
+ Please note that domain registration and transfer can only be done through the API for domains that do not require extended attributes. A future version of the API will add support for extended attributes.
45
+
42
46
  The following commands are available for records:
43
47
 
44
48
  * dnsimple record:create [--prio=priority] domain.com name type content [ttl]
45
49
  * dnsimple record:list domain.com
46
50
  * dnsimple record:delete domain.com record_id
47
51
 
52
+ The following commands are available for custom templates:
53
+
54
+ * dnsimple template:list
55
+ * dnsimple template:create name short_name [description]
56
+ * dnsimple template:delete short_name
57
+ * dnsimple template:list_records short_name
58
+ * dnsimple template:add_record short_name name type content [ttl] [prio]
59
+ * dnsimple template:delete_record short_name template_record_id
60
+
61
+ The following commands are available for managing contacts:
62
+
63
+ * dnsimple contact:list
64
+ * dnsimple contact:describe id
65
+ * dnsimple contact:create [name:value name:value ...]
66
+ * dnsimple contact:update id [name:value name:value ...]
67
+ * dnsimple contact:delete id
68
+
69
+ h3. Contact Attributes
70
+
71
+ The contact attributes that can be used in the name:value pairs are:
72
+
73
+ * first_name
74
+ * last_name
75
+ * organization_name (optional)
76
+ * job_title (required if organization name is specified)
77
+ * address1
78
+ * address2 (optional)
79
+ * city
80
+ * state_province (also aliased as state)
81
+ * postal_code
82
+ * country
83
+ * email
84
+ * phone
85
+ * phone_ext (optional)
86
+ * fax (optional)
87
+
48
88
  h2. Wrapper Classes
49
89
 
50
90
  In addition to the command line utility you may also use the included Ruby
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.5.0
1
+ 0.6.0
@@ -5,6 +5,7 @@ require 'httparty'
5
5
  require 'dnsimple/client'
6
6
  require 'dnsimple/error'
7
7
  require 'dnsimple/user'
8
+ require 'dnsimple/contact'
8
9
  require 'dnsimple/domain'
9
10
  require 'dnsimple/record'
10
11
  require 'dnsimple/template'
@@ -51,6 +51,12 @@ module DNSimple
51
51
  'template:list_records' => DNSimple::Commands::ListTemplateRecords,
52
52
  'template:add_record' => DNSimple::Commands::AddTemplateRecord,
53
53
  'template:delete_record' => DNSimple::Commands::DeleteTemplateRecord,
54
+
55
+ 'contact:create' => DNSimple::Commands::CreateContact,
56
+ 'contact:list' => DNSimple::Commands::ListContacts,
57
+ 'contact:describe' => DNSimple::Commands::DescribeContact,
58
+ 'contact:update' => DNSimple::Commands::UpdateContact,
59
+ 'contact:delete' => DNSimple::Commands::DeleteContact,
54
60
  }
55
61
  end
56
62
 
@@ -81,3 +87,9 @@ require 'dnsimple/commands/delete_template'
81
87
  require 'dnsimple/commands/list_template_records'
82
88
  require 'dnsimple/commands/add_template_record'
83
89
  require 'dnsimple/commands/delete_template_record'
90
+
91
+ require 'dnsimple/commands/create_contact'
92
+ require 'dnsimple/commands/list_contacts'
93
+ require 'dnsimple/commands/describe_contact'
94
+ require 'dnsimple/commands/update_contact'
95
+ require 'dnsimple/commands/delete_contact'
@@ -0,0 +1,21 @@
1
+ module DNSimple
2
+ module Commands
3
+ class CreateContact
4
+ # Execute the contact:create command.
5
+ #
6
+ # Args expected to be:
7
+ # [name:value name:value ...]
8
+ def execute(args, options={})
9
+ attributes = {}
10
+ attributes['state_province_choice'] = 'S'
11
+ args.each do |arg|
12
+ name, value = arg.split(":")
13
+ attributes[Contact.resolve(name)] = value
14
+ end
15
+
16
+ contact = Contact.create(attributes, options)
17
+ puts "Created #{contact.name} (id: #{contact.id})"
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,14 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DeleteContact
4
+ def execute(args, options={})
5
+ id = args.shift
6
+
7
+ contact = Contact.find(id)
8
+ contact.delete
9
+
10
+ puts "Deleted #{contact.name} (id: #{contact.id})"
11
+ end
12
+ end
13
+ end
14
+ end
@@ -0,0 +1,25 @@
1
+ module DNSimple
2
+ module Commands
3
+ class DescribeContact
4
+ def execute(args, options={})
5
+ id = args.shift
6
+ contact = Contact.find(id)
7
+ puts "Contact: #{contact.name}:"
8
+ puts "\tID: #{contact.id}"
9
+ puts "\tFirst Name: #{contact.first_name}"
10
+ puts "\tLast Name: #{contact.last_name}"
11
+ puts "\tOrganization Name: #{contact.organization_name}" unless contact.organization_name.blank?
12
+ puts "\tJob Title: #{contact.job_title}" unless contact.job_title.blank?
13
+ puts "\tAddress 1: #{contact.address1}"
14
+ puts "\tAddress 2: #{contact.address2}"
15
+ puts "\tCity: #{contact.city}"
16
+ puts "\tState or Province: #{contact.state_province}"
17
+ puts "\tPostal Code: #{contact.postal_code}"
18
+ puts "\tCountry: #{contact.country}"
19
+ puts "\tEmail: #{contact.email_address}"
20
+ puts "\tPhone: #{contact.phone}"
21
+ puts "\tPhone Ext: #{contact.phone_ext}" unless contact.phone_ext.blank?
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,13 @@
1
+ module DNSimple
2
+ module Commands
3
+ class ListContacts
4
+ def execute(args, options={})
5
+ contacts = Contact.all
6
+ puts "Found #{contacts.length} contacts:"
7
+ contacts.each do |contact|
8
+ puts "\t#{contact.name} (id:#{contact.id})"
9
+ end
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,25 @@
1
+ module DNSimple
2
+ module Commands
3
+ class UpdateContact
4
+ # Execute the contact:update command.
5
+ #
6
+ # Args expected:
7
+ # id [name:value name:value ...]
8
+ def execute(args, options={})
9
+ attributes = {}
10
+ id = args.shift
11
+ args.each do |arg|
12
+ name, value = arg.split(":")
13
+ attributes[Contact.resolve(name)] = value
14
+ end
15
+
16
+ contact = Contact.find(id)
17
+ attributes.each do |name, value|
18
+ contact.send("#{name}=", value)
19
+ end
20
+ contact.save
21
+ puts "Updated contact #{contact.name} (id: #{contact.id})"
22
+ end
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,171 @@
1
+ module DNSimple #:nodoc:
2
+ # CLass representing a contact in DNSimple
3
+ class Contact
4
+ include HTTParty
5
+
6
+ # The contact ID in DNSimple
7
+ attr_accessor :id
8
+
9
+ # The name of the organization in which the contact works
10
+ # (may be omitted)
11
+ attr_accessor :organization_name
12
+
13
+ # The contact first name
14
+ attr_accessor :first_name
15
+
16
+ # The contact last name
17
+ attr_accessor :last_name
18
+
19
+ # The contact's job title (may be omitted)
20
+ attr_accessor :job_title
21
+
22
+ # The contact street address
23
+ attr_accessor :address1
24
+
25
+ # Apartment or suite number
26
+ attr_accessor :address2
27
+
28
+ # The city name
29
+ attr_accessor :city
30
+
31
+ # The state or province name
32
+ attr_accessor :state_province
33
+
34
+ # The contact postal code
35
+ attr_accessor :postal_code
36
+
37
+ # The contact country (as a 2-character country code)
38
+ attr_accessor :country
39
+
40
+ # The contact email address
41
+ attr_accessor :email_address
42
+
43
+ # The contact phone number
44
+ attr_accessor :phone
45
+
46
+ # The contact phone extension (may be omitted)
47
+ attr_accessor :phone_ext
48
+
49
+ # The contact fax number (may be omitted)
50
+ attr_accessor :fax
51
+
52
+ # When the contact was created in DNSimple
53
+ attr_accessor :created_at
54
+
55
+ # When the contact was last updated in DNSimple
56
+ attr_accessor :updated_at
57
+
58
+ #:nodoc:
59
+ def initialize(attributes)
60
+ attributes.each do |key, value|
61
+ m = "#{key}=".to_sym
62
+ self.send(m, value) if self.respond_to?(m)
63
+ end
64
+ end
65
+
66
+ def name
67
+ [first_name, last_name].join(' ')
68
+ end
69
+
70
+ def save(options={})
71
+ contact_hash = {}
72
+ %w(first_name last_name organization_name job_title address1 address2 city
73
+ state_province postal_code country email_address phone phone_ext fax).each do |attribute|
74
+ contact_hash[Contact.resolve(attribute)] = self.send(attribute)
75
+ end
76
+
77
+ options.merge!({:basic_auth => Client.credentials})
78
+ options.merge!({:body => {:contact => contact_hash}})
79
+
80
+ response = self.class.put("#{Client.base_uri}/contacts/#{id}.json", options)
81
+
82
+ pp response if Client.debug?
83
+
84
+ case response.code
85
+ when 200
86
+ return self
87
+ when 401
88
+ raise RuntimeError, "Authentication failed"
89
+ else
90
+ raise RuntimeError, "Failed to update contact: #{response.inspect}"
91
+ end
92
+ end
93
+
94
+ # Delete the contact from DNSimple. WARNING: this cannot be undone.
95
+ def delete(options={})
96
+ options.merge!({:basic_auth => Client.credentials})
97
+ self.class.delete("#{Client.base_uri}/contacts/#{id}.json", options)
98
+ end
99
+
100
+ # Map an aliased field name to it's real name. For example, if you
101
+ # pass "first" it will be resolved to "first_name", "email" is resolved
102
+ # to "email_address" and so on.
103
+ def self.resolve(name)
104
+ aliases = {
105
+ 'first' => 'first_name',
106
+ 'last' => 'last_name',
107
+ 'state' => 'state_province',
108
+ 'province' => 'state_province',
109
+ 'email' => 'email_address',
110
+ }
111
+ aliases[name] || name
112
+ end
113
+
114
+ # Create the contact with the given attributes in DNSimple.
115
+ # This method returns a Contact instance of the contact is created
116
+ # and raises an error otherwise.
117
+ def self.create(attributes, options={})
118
+ contact_hash = attributes
119
+
120
+ options.merge!({:body => {:contact => contact_hash}})
121
+ options.merge!({:basic_auth => Client.credentials})
122
+
123
+ response = self.post("#{Client.base_uri}/contacts.json", options)
124
+
125
+ pp response if Client.debug?
126
+
127
+ case response.code
128
+ when 201
129
+ return Contact.new(response["contact"])
130
+ when 401
131
+ raise RuntimeError, "Authentication failed"
132
+ else
133
+ raise RuntimeError, "Failed to create contact: #{response.inspect}"
134
+ end
135
+ end
136
+
137
+ def self.find(id, options={})
138
+ options.merge!({:basic_auth => Client.credentials})
139
+ response = self.get("#{Client.base_uri}/contacts/#{id}.json", options)
140
+
141
+ pp response if Client.debug?
142
+
143
+ case response.code
144
+ when 200
145
+ return Contact.new(response["contact"])
146
+ when 401
147
+ raise RuntimeError, "Authentication failed"
148
+ when 404
149
+ raise RuntimeError, "Could not find contact #{id}"
150
+ else
151
+ raise DNSimple::Error.new(id, response["errors"])
152
+ end
153
+ end
154
+
155
+ def self.all(options={})
156
+ options.merge!({:basic_auth => Client.credentials})
157
+ response = self.get("#{Client.base_uri}/contacts.json", options)
158
+
159
+ pp response if Client.debug?
160
+
161
+ case response.code
162
+ when 200
163
+ response.map { |r| Contact.new(r["contact"]) }
164
+ when 401
165
+ raise RuntimeError, "Authentication failed"
166
+ else
167
+ raise RuntimeError, "Error: #{response.code}"
168
+ end
169
+ end
170
+ end
171
+ end
@@ -34,6 +34,8 @@ module DNSimple #:nodoc:
34
34
  end
35
35
  alias :destroy :delete
36
36
 
37
+ # Apply the given named template to the domain. This will add
38
+ # all of the records in the template to the domain.
37
39
  def apply(template_name, options={})
38
40
  template = DNSimple::Template.find(template_name)
39
41
  options.merge!({:basic_auth => Client.credentials})
@@ -0,0 +1,32 @@
1
+ require 'spec_helper'
2
+
3
+ describe DNSimple::Contact do
4
+ describe "a new contact" do
5
+ let(:contact_attributes) {
6
+ {
7
+ :first_name => 'John',
8
+ :last_name => 'Doe',
9
+ :address1 => '1 SW 1st Street',
10
+ :city => 'Miami',
11
+ :state_province => 'FL',
12
+ :postal_code => '33143',
13
+ :country => 'US',
14
+ :email_address => 'john.doe@example.com',
15
+ :phone => '305 111 2222'
16
+ }
17
+ }
18
+ before do
19
+ @contact = DNSimple::Contact.create(contact_attributes)
20
+ end
21
+ after do
22
+ @contact.delete
23
+ end
24
+ it "has specific attributes" do
25
+ @contact.first_name.should eql(contact_attributes[:first_name])
26
+ @contact.id.should_not be_nil
27
+ end
28
+ it "can be found by id" do
29
+ contact = DNSimple::Contact.find(@contact.id)
30
+ end
31
+ end
32
+ end
metadata CHANGED
@@ -1,12 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: dnsimple-ruby
3
3
  version: !ruby/object:Gem::Version
4
+ hash: 7
4
5
  prerelease: false
5
6
  segments:
6
7
  - 0
7
- - 5
8
+ - 6
8
9
  - 0
9
- version: 0.5.0
10
+ version: 0.6.0
10
11
  platform: ruby
11
12
  authors:
12
13
  - Anthony Eden
@@ -14,16 +15,18 @@ autorequire:
14
15
  bindir: bin
15
16
  cert_chain: []
16
17
 
17
- date: 2010-09-30 00:00:00 +02:00
18
+ date: 2010-10-19 00:00:00 +02:00
18
19
  default_executable:
19
20
  dependencies:
20
21
  - !ruby/object:Gem::Dependency
21
22
  name: httparty
22
23
  prerelease: false
23
24
  requirement: &id001 !ruby/object:Gem::Requirement
25
+ none: false
24
26
  requirements:
25
27
  - - ">="
26
28
  - !ruby/object:Gem::Version
29
+ hash: 3
27
30
  segments:
28
31
  - 0
29
32
  version: "0"
@@ -42,7 +45,10 @@ extra_rdoc_files:
42
45
  - README.rdoc
43
46
  - README.textile
44
47
  files:
48
+ - .bundle/config
45
49
  - .gitignore
50
+ - Gemfile
51
+ - Gemfile.lock
46
52
  - LICENSE
47
53
  - README
48
54
  - README.rdoc
@@ -57,21 +63,27 @@ files:
57
63
  - lib/dnsimple/commands/add_template_record.rb
58
64
  - lib/dnsimple/commands/apply_template.rb
59
65
  - lib/dnsimple/commands/clear_domain.rb
66
+ - lib/dnsimple/commands/create_contact.rb
60
67
  - lib/dnsimple/commands/create_domain.rb
61
68
  - lib/dnsimple/commands/create_record.rb
62
69
  - lib/dnsimple/commands/create_template.rb
70
+ - lib/dnsimple/commands/delete_contact.rb
63
71
  - lib/dnsimple/commands/delete_domain.rb
64
72
  - lib/dnsimple/commands/delete_record.rb
65
73
  - lib/dnsimple/commands/delete_template.rb
66
74
  - lib/dnsimple/commands/delete_template_record.rb
75
+ - lib/dnsimple/commands/describe_contact.rb
67
76
  - lib/dnsimple/commands/describe_domain.rb
68
77
  - lib/dnsimple/commands/describe_user.rb
78
+ - lib/dnsimple/commands/list_contacts.rb
69
79
  - lib/dnsimple/commands/list_domains.rb
70
80
  - lib/dnsimple/commands/list_records.rb
71
81
  - lib/dnsimple/commands/list_template_records.rb
72
82
  - lib/dnsimple/commands/list_templates.rb
73
83
  - lib/dnsimple/commands/register_domain.rb
74
84
  - lib/dnsimple/commands/transfer_domain.rb
85
+ - lib/dnsimple/commands/update_contact.rb
86
+ - lib/dnsimple/contact.rb
75
87
  - lib/dnsimple/domain.rb
76
88
  - lib/dnsimple/error.rb
77
89
  - lib/dnsimple/record.rb
@@ -80,6 +92,7 @@ files:
80
92
  - lib/dnsimple/transfer_order.rb
81
93
  - lib/dnsimple/user.rb
82
94
  - spec/README
95
+ - spec/contact_spec.rb
83
96
  - spec/domain_spec.rb
84
97
  - spec/record_spec.rb
85
98
  - spec/spec_helper.rb
@@ -95,27 +108,32 @@ rdoc_options:
95
108
  require_paths:
96
109
  - lib
97
110
  required_ruby_version: !ruby/object:Gem::Requirement
111
+ none: false
98
112
  requirements:
99
113
  - - ">="
100
114
  - !ruby/object:Gem::Version
115
+ hash: 3
101
116
  segments:
102
117
  - 0
103
118
  version: "0"
104
119
  required_rubygems_version: !ruby/object:Gem::Requirement
120
+ none: false
105
121
  requirements:
106
122
  - - ">="
107
123
  - !ruby/object:Gem::Version
124
+ hash: 3
108
125
  segments:
109
126
  - 0
110
127
  version: "0"
111
128
  requirements: []
112
129
 
113
130
  rubyforge_project:
114
- rubygems_version: 1.3.6
131
+ rubygems_version: 1.3.7
115
132
  signing_key:
116
133
  specification_version: 3
117
134
  summary: A ruby wrapper for the DNSimple API
118
135
  test_files:
136
+ - spec/contact_spec.rb
119
137
  - spec/domain_spec.rb
120
138
  - spec/record_spec.rb
121
139
  - spec/spec_helper.rb