dnsimple-ruby 1.2.6 → 1.3.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,45 +1,28 @@
1
- module DNSimple #:nodoc:
2
- # Class representing a transfer order in DNSimple
3
- class TransferOrder
4
- include HTTParty
1
+ class DNSimple::TransferOrder # Class representing a transfer order in DNSimple
2
+ attr_accessor :id
5
3
 
6
- attr_accessor :id
4
+ attr_accessor :status
7
5
 
8
- attr_accessor :status
6
+ def self.create(name, authinfo='', registrant={}, extended_attributes={}, options={})
7
+ body = {:domain => {:name => name}, :transfer_order => {:authinfo => authinfo}}
9
8
 
10
- def initialize(attributes)
11
- attributes.each do |key, value|
12
- m = "#{key}=".to_sym
13
- self.send(m, value) if self.respond_to?(m)
14
- end
9
+ if registrant[:id]
10
+ body[:domain][:registrant_id] = registrant[:id]
11
+ else
12
+ body.merge!(:contact => Contact.resolve_attributes(registrant))
15
13
  end
16
14
 
17
- def self.create(name, authinfo='', registrant={}, extended_attributes={}, options={})
18
- body = {:domain => {:name => name}, :transfer_order => {:authinfo => authinfo}}
15
+ body.merge!(:extended_attribute => extended_attributes)
19
16
 
20
- if registrant[:id]
21
- body[:domain][:registrant_id] = registrant[:id]
22
- else
23
- body.merge!(:contact => Contact.resolve_attributes(registrant))
24
- end
17
+ options.merge!({:body => body})
25
18
 
26
- body.merge!(:extended_attribute => extended_attributes)
19
+ response = DNSimple::Client.post 'domain_transfers.json', options
27
20
 
28
- options.merge!({:body => body})
29
- options.merge!({:basic_auth => Client.credentials})
30
-
31
- response = self.post("#{Client.base_uri}/domain_transfers.json", options)
32
-
33
- pp response if Client.debug?
34
-
35
- case response.code
36
- when 201
37
- return TransferOrder.new(response["transfer_order"])
38
- when 401
39
- raise RuntimeError, "Authentication failed"
40
- else
41
- raise DNSimple::Error.new(name, response["errors"])
42
- end
21
+ case response.code
22
+ when 201
23
+ return new(response["transfer_order"])
24
+ else
25
+ raise DNSimple::Error.new(name, response["errors"])
43
26
  end
44
27
  end
45
28
  end
data/lib/dnsimple/user.rb CHANGED
@@ -1,44 +1,30 @@
1
- module DNSimple
2
- class User
3
- include HTTParty
1
+ class DNSimple::User < DNSimple::Base
2
+ attr_accessor :id
4
3
 
5
- attr_accessor :id
4
+ attr_accessor :created_at
6
5
 
7
- attr_accessor :created_at
6
+ attr_accessor :updated_at
8
7
 
9
- attr_accessor :updated_at
8
+ attr_accessor :email
10
9
 
11
- attr_accessor :email
10
+ attr_accessor :login_count
12
11
 
13
- attr_accessor :login_count
12
+ attr_accessor :failed_login_count
14
13
 
15
- attr_accessor :failed_login_count
14
+ attr_accessor :domain_count
16
15
 
17
- attr_accessor :domain_count
16
+ attr_accessor :domain_limit
18
17
 
19
- attr_accessor :domain_limit
18
+ def self.me(options={})
19
+ response = DNSimple::Client.get("users/me.json", options)
20
20
 
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 self.me(options={})
29
- options.merge!({:basic_auth => Client.credentials})
30
- response = self.get("#{Client.base_uri}/users/me.json", options)
31
-
32
- case response.code
33
- when 200
34
- return User.new(response["user"])
35
- when 401
36
- raise DNSimple::AuthenticationFailed, "Authentication failed"
37
- when 404
38
- raise DNSimple::UserNotFound, "Could not find user"
39
- else
40
- raise DNSimple::Error, "Error: #{response.code} #{response.message}"
41
- end
21
+ case response.code
22
+ when 200
23
+ return new(response["user"])
24
+ when 404
25
+ raise DNSimple::UserNotFound, "Could not find user"
26
+ else
27
+ raise DNSimple::Error, "Error: #{response.code} #{response.message}"
42
28
  end
43
29
  end
44
30
  end
@@ -0,0 +1,3 @@
1
+ module DNSimple
2
+ VERSION = '1.3.0'
3
+ end
@@ -3,12 +3,24 @@ require 'dnsimple/certificate'
3
3
  require 'dnsimple/commands/purchase_certificate'
4
4
 
5
5
  describe DNSimple::Commands::PurchaseCertificate do
6
- let(:out) { StringIO.new }
6
+ let(:out) { StringIO.new }
7
7
  let(:domain_name) { 'example.com' }
8
+ let(:domain) { stub('domain') }
9
+ let(:contact) { stub('contact') }
10
+
8
11
  context "with one argument" do
9
- xit "purchases the certificate" do
10
- DNSimple::Certificate.expects(:purchase).with(domain_name, '').returns(stub("certificate", :fqdn => domain_name))
11
- DNSimple::Commands::PurchaseCertificate.new(out).execute([domain_name])
12
+ before :each do
13
+ DNSimple::Domain.stubs(:find).returns(domain)
14
+ DNSimple::Contact.stubs(:find).returns(contact)
15
+ end
16
+
17
+ it "purchases the certificate" do
18
+ DNSimple::Certificate.expects(:purchase).
19
+ with(domain, 'certname', contact).
20
+ returns(stub("certificate", :fqdn => domain_name))
21
+
22
+ DNSimple::Commands::PurchaseCertificate.new(out).
23
+ execute([domain_name, 'certname', stub('contact id')])
12
24
  end
13
25
  end
14
26
  end
@@ -0,0 +1,58 @@
1
+ require 'spec_helper'
2
+
3
+ describe DNSimple::Client do
4
+ before :each do
5
+ @username, @password, @api_token = DNSimple::Client.username,
6
+ DNSimple::Client.password, DNSimple::Client.api_token
7
+ end
8
+
9
+ after :each do
10
+ DNSimple::Client.username = @username
11
+ DNSimple::Client.password = @password
12
+ DNSimple::Client.api_token = @api_token
13
+ end
14
+
15
+ [:get, :post, :put, :delete].each do |method|
16
+ describe ".#{method}" do
17
+ let(:response) { stub('response', :code => 200) }
18
+
19
+ it "uses HTTP authentication if there's a password provided" do
20
+ DNSimple::Client.username = 'user'
21
+ DNSimple::Client.password = 'pass'
22
+ DNSimple::Client.api_token = nil
23
+
24
+ HTTParty.expects(method).
25
+ with('http://localhost:3000/domains',
26
+ :format => :json, :headers => {'Accept' => 'application/json'},
27
+ :basic_auth => {:username => 'user', :password => 'pass'}).
28
+ returns(response)
29
+
30
+ DNSimple::Client.send(method, 'domains')
31
+ end
32
+
33
+ it "uses header authentication if there's an api token provided" do
34
+ DNSimple::Client.username = 'user'
35
+ DNSimple::Client.password = nil
36
+ DNSimple::Client.api_token = 'token'
37
+
38
+ HTTParty.expects(method).
39
+ with('http://localhost:3000/domains',
40
+ :format => :json, :headers => {'Accept' => 'application/json',
41
+ 'X-DNSimple-Token' => 'user:token'}).
42
+ returns(response)
43
+
44
+ DNSimple::Client.send(method, 'domains')
45
+ end
46
+
47
+ it "raises an error if there's no password or api token provided" do
48
+ DNSimple::Client.username = 'user'
49
+ DNSimple::Client.password = nil
50
+ DNSimple::Client.api_token = nil
51
+
52
+ lambda {
53
+ DNSimple::Client.send(method, 'domains')
54
+ }.should raise_error(RuntimeError, 'A password or API token is required for all API requests.')
55
+ end
56
+ end
57
+ end
58
+ end
data/spec/spec_helper.rb CHANGED
@@ -1,6 +1,8 @@
1
- require 'vcr'
2
1
  require 'cgi'
3
- require 'lib/dnsimple'
2
+ require 'rubygems'
3
+ require 'bundler'
4
+
5
+ Bundler.require :default, :development
4
6
 
5
7
  VCR.config do |c|
6
8
  c.cassette_library_dir = 'fixtures/vcr_cassettes'
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: 19
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 2
9
- - 6
10
- version: 1.2.6
8
+ - 3
9
+ - 0
10
+ version: 1.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Anthony Eden
@@ -15,10 +15,10 @@ autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
17
 
18
- date: 2012-02-29 00:00:00 Z
18
+ date: 2012-06-16 00:00:00 Z
19
19
  dependencies:
20
20
  - !ruby/object:Gem::Dependency
21
- requirement: &id001 !ruby/object:Gem::Requirement
21
+ version_requirements: &id001 !ruby/object:Gem::Requirement
22
22
  none: false
23
23
  requirements:
24
24
  - - ">="
@@ -27,12 +27,12 @@ dependencies:
27
27
  segments:
28
28
  - 0
29
29
  version: "0"
30
- version_requirements: *id001
31
- name: httparty
32
30
  prerelease: false
33
31
  type: :runtime
32
+ name: httparty
33
+ requirement: *id001
34
34
  - !ruby/object:Gem::Dependency
35
- requirement: &id002 !ruby/object:Gem::Requirement
35
+ version_requirements: &id002 !ruby/object:Gem::Requirement
36
36
  none: false
37
37
  requirements:
38
38
  - - ">="
@@ -41,12 +41,12 @@ dependencies:
41
41
  segments:
42
42
  - 0
43
43
  version: "0"
44
- version_requirements: *id002
45
- name: rake
46
44
  prerelease: false
47
45
  type: :development
46
+ name: aruba
47
+ requirement: *id002
48
48
  - !ruby/object:Gem::Dependency
49
- requirement: &id003 !ruby/object:Gem::Requirement
49
+ version_requirements: &id003 !ruby/object:Gem::Requirement
50
50
  none: false
51
51
  requirements:
52
52
  - - ">="
@@ -55,28 +55,12 @@ dependencies:
55
55
  segments:
56
56
  - 0
57
57
  version: "0"
58
- version_requirements: *id003
59
- name: jeweler
60
- prerelease: false
61
- type: :development
62
- - !ruby/object:Gem::Dependency
63
- requirement: &id004 !ruby/object:Gem::Requirement
64
- none: false
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- hash: 15
69
- segments:
70
- - 2
71
- - 0
72
- - 0
73
- version: 2.0.0
74
- version_requirements: *id004
75
- name: rspec
76
58
  prerelease: false
77
59
  type: :development
60
+ name: cucumber
61
+ requirement: *id003
78
62
  - !ruby/object:Gem::Dependency
79
- requirement: &id005 !ruby/object:Gem::Requirement
63
+ version_requirements: &id004 !ruby/object:Gem::Requirement
80
64
  none: false
81
65
  requirements:
82
66
  - - ">="
@@ -85,12 +69,12 @@ dependencies:
85
69
  segments:
86
70
  - 0
87
71
  version: "0"
88
- version_requirements: *id005
89
- name: mocha
90
72
  prerelease: false
91
73
  type: :development
74
+ name: fakeweb
75
+ requirement: *id004
92
76
  - !ruby/object:Gem::Dependency
93
- requirement: &id006 !ruby/object:Gem::Requirement
77
+ version_requirements: &id005 !ruby/object:Gem::Requirement
94
78
  none: false
95
79
  requirements:
96
80
  - - ">="
@@ -99,12 +83,12 @@ dependencies:
99
83
  segments:
100
84
  - 0
101
85
  version: "0"
102
- version_requirements: *id006
103
- name: ruby-debug
104
86
  prerelease: false
105
87
  type: :development
88
+ name: mocha
89
+ requirement: *id005
106
90
  - !ruby/object:Gem::Dependency
107
- requirement: &id007 !ruby/object:Gem::Requirement
91
+ version_requirements: &id006 !ruby/object:Gem::Requirement
108
92
  none: false
109
93
  requirements:
110
94
  - - ">="
@@ -113,40 +97,28 @@ dependencies:
113
97
  segments:
114
98
  - 0
115
99
  version: "0"
116
- version_requirements: *id007
117
- name: cucumber
118
100
  prerelease: false
119
101
  type: :development
102
+ name: rake
103
+ requirement: *id006
120
104
  - !ruby/object:Gem::Dependency
121
- requirement: &id008 !ruby/object:Gem::Requirement
105
+ version_requirements: &id007 !ruby/object:Gem::Requirement
122
106
  none: false
123
107
  requirements:
124
108
  - - ">="
125
109
  - !ruby/object:Gem::Version
126
- hash: 3
110
+ hash: 15
127
111
  segments:
112
+ - 2
128
113
  - 0
129
- version: "0"
130
- version_requirements: *id008
131
- name: aruba
132
- prerelease: false
133
- type: :development
134
- - !ruby/object:Gem::Dependency
135
- requirement: &id009 !ruby/object:Gem::Requirement
136
- none: false
137
- requirements:
138
- - - ">="
139
- - !ruby/object:Gem::Version
140
- hash: 3
141
- segments:
142
114
  - 0
143
- version: "0"
144
- version_requirements: *id009
145
- name: ruby-debug
115
+ version: 2.0.0
146
116
  prerelease: false
147
117
  type: :development
118
+ name: rspec
119
+ requirement: *id007
148
120
  - !ruby/object:Gem::Dependency
149
- requirement: &id010 !ruby/object:Gem::Requirement
121
+ version_requirements: &id008 !ruby/object:Gem::Requirement
150
122
  none: false
151
123
  requirements:
152
124
  - - ">="
@@ -155,42 +127,16 @@ dependencies:
155
127
  segments:
156
128
  - 0
157
129
  version: "0"
158
- version_requirements: *id010
159
- name: fakeweb
160
130
  prerelease: false
161
131
  type: :development
162
- - !ruby/object:Gem::Dependency
163
- requirement: &id011 !ruby/object:Gem::Requirement
164
- none: false
165
- requirements:
166
- - - ">="
167
- - !ruby/object:Gem::Version
168
- hash: 3
169
- segments:
170
- - 0
171
- version: "0"
172
- version_requirements: *id011
173
132
  name: vcr
174
- prerelease: false
175
- type: :development
176
- - !ruby/object:Gem::Dependency
177
- requirement: &id012 !ruby/object:Gem::Requirement
178
- none: false
179
- requirements:
180
- - - ">="
181
- - !ruby/object:Gem::Version
182
- hash: 3
183
- segments:
184
- - 0
185
- version: "0"
186
- version_requirements: *id012
187
- name: httparty
188
- prerelease: false
189
- type: :runtime
133
+ requirement: *id008
190
134
  description: A ruby wrapper for the DNSimple API that also includes a command-line client.
191
- email: anthony.eden@dnsimple.com
135
+ email:
136
+ - anthony.eden@dnsimple.com
192
137
  executables:
193
138
  - dnsimple
139
+ - dnsimple.rb
194
140
  extensions: []
195
141
 
196
142
  extra_rdoc_files:
@@ -199,8 +145,7 @@ extra_rdoc_files:
199
145
  - README.rdoc
200
146
  - README.textile
201
147
  files:
202
- - .bundle/config
203
- - .rvmrc
148
+ - .gitignore
204
149
  - Gemfile
205
150
  - Gemfile.lock
206
151
  - LICENSE
@@ -208,7 +153,6 @@ files:
208
153
  - README.rdoc
209
154
  - README.textile
210
155
  - Rakefile
211
- - VERSION
212
156
  - bin/dnsimple
213
157
  - bin/dnsimple.rb
214
158
  - dnsimple-ruby.gemspec
@@ -248,7 +192,9 @@ files:
248
192
  - fixtures/vcr_cassettes/DNSimple_Record/find_a_record.yml
249
193
  - fixtures/vcr_cassettes/DNSimple_Template/a_template.yml
250
194
  - fixtures/vcr_cassettes/DNSimple_User/_me.yml
195
+ - lib/dnsimple-ruby.rb
251
196
  - lib/dnsimple.rb
197
+ - lib/dnsimple/base.rb
252
198
  - lib/dnsimple/certificate.rb
253
199
  - lib/dnsimple/cli.rb
254
200
  - lib/dnsimple/client.rb
@@ -300,6 +246,7 @@ files:
300
246
  - lib/dnsimple/template_record.rb
301
247
  - lib/dnsimple/transfer_order.rb
302
248
  - lib/dnsimple/user.rb
249
+ - lib/dnsimple/version.rb
303
250
  - spec/README
304
251
  - spec/certificate_spec.rb
305
252
  - spec/command_spec.rb
@@ -309,6 +256,7 @@ files:
309
256
  - spec/commands/purchase_certificate_spec.rb
310
257
  - spec/commands/submit_certificate_spec.rb
311
258
  - spec/contact_spec.rb
259
+ - spec/dnsimple/client_spec.rb
312
260
  - spec/domain_spec.rb
313
261
  - spec/extended_attributes_spec.rb
314
262
  - spec/record_spec.rb
@@ -344,11 +292,29 @@ required_rubygems_version: !ruby/object:Gem::Requirement
344
292
  requirements: []
345
293
 
346
294
  rubyforge_project:
347
- rubygems_version: 1.8.10
295
+ rubygems_version: 1.8.24
348
296
  signing_key:
349
297
  specification_version: 3
350
298
  summary: A ruby wrapper for the DNSimple API
351
299
  test_files:
300
+ - features/README
301
+ - features/cli/certificates/purchase_certificate.feature
302
+ - features/cli/contacts/create_contact.feature
303
+ - features/cli/domains/check_domain.feature
304
+ - features/cli/domains/create_domain.feature
305
+ - features/cli/domains/delete_domain.feature
306
+ - features/cli/domains/register_domain.feature
307
+ - features/cli/records/create_ptr_record.feature
308
+ - features/cli/records/create_record.feature
309
+ - features/cli/records/delete_record.feature
310
+ - features/cli/templates/apply_template.feature
311
+ - features/step_definitions/certificate_steps.rb
312
+ - features/step_definitions/cli_steps.rb
313
+ - features/step_definitions/domain_steps.rb
314
+ - features/step_definitions/record_steps.rb
315
+ - features/step_definitions/template_steps.rb
316
+ - features/support/env.rb
317
+ - spec/README
352
318
  - spec/certificate_spec.rb
353
319
  - spec/command_spec.rb
354
320
  - spec/commands/add_service_spec.rb
@@ -357,6 +323,7 @@ test_files:
357
323
  - spec/commands/purchase_certificate_spec.rb
358
324
  - spec/commands/submit_certificate_spec.rb
359
325
  - spec/contact_spec.rb
326
+ - spec/dnsimple/client_spec.rb
360
327
  - spec/domain_spec.rb
361
328
  - spec/extended_attributes_spec.rb
362
329
  - spec/record_spec.rb