splicer-dns_made_easy 1.2.6 → 2.1.1

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.
@@ -12,10 +12,6 @@ module Splicer
12
12
  def provider
13
13
  Provider.new(self)
14
14
  end
15
-
16
- def client
17
- Client.new(key, secret)
18
- end
19
15
  end
20
16
 
21
17
  end
@@ -9,13 +9,11 @@ module Splicer
9
9
  @data = params
10
10
  end
11
11
 
12
- def id?
12
+ def persisted?
13
13
  !!@id
14
14
  end
15
+ alias_method :id?, :persisted?
15
16
 
16
- def persisted?
17
- id?
18
- end
19
17
  end
20
18
 
21
19
  end
@@ -7,7 +7,7 @@ module Splicer
7
7
 
8
8
  def initialize(config)
9
9
  @config = config
10
- @client = config.client
10
+ @client = Client.new(config.key, config.secret)
11
11
  end
12
12
 
13
13
  def create_zone(zone)
@@ -15,36 +15,12 @@ module Splicer
15
15
  domain = find_domain(zone.name)
16
16
  return false if domain.persisted?
17
17
 
18
- client.post('dns/managed', name: zone.name)
19
-
20
- zone.records.each do |record|
21
- create_record(domain.id, record)
22
- end
23
- end
24
-
25
- def update_zone(zone)
26
- Splicer.logger.debug "[SPLICER][DNSMADEEASY] #update_zone zone=#{zone.inspect}"
27
- rewrite_zone(zone)
28
- end
29
-
30
- def rewrite_zone(zone)
31
- Splicer.logger.debug "[SPLICER][DNSMADEEASY] #rewrite_zone zone=#{zone.inspect}"
32
- domain = find_domain(zone.name)
33
-
34
- unless domain.persisted?
35
- client.post('dns/managed', name: zone.name)
36
- domain = find_domain(zone.name)
37
- end
38
-
39
- if domain.persisted?
40
- fetch_records(domain.id).each do |record|
41
- delete_record(domain.id, record.id)
42
- end
43
- end
18
+ create_domain(zone)
44
19
 
45
20
  zone.records.each do |record|
46
21
  create_record(domain.id, record)
47
22
  end
23
+ true
48
24
  end
49
25
 
50
26
  def delete_zone(zone)
@@ -72,18 +48,19 @@ module Splicer
72
48
 
73
49
  records = find_records(record.name, record.type, domain.id)
74
50
  return false if records.empty?
75
-
76
51
  update_record(domain.id, records.first.id, record)
77
52
  end
78
53
 
79
54
  def create_record_in_zone(record, zone)
80
55
  Splicer.logger.debug "[SPLICER][DNSMADEEASY] #create_record_in_zone record=#{record.inspect} zone=#{zone.inspect}"
81
56
  domain = find_domain(zone.name)
82
- return false unless domain.persisted?
57
+ unless domain.persisted?
58
+ create_domain(zone)
59
+ domain = find_domain(zone.name)
60
+ end
83
61
 
84
62
  records = find_records(record.name, record.type, domain.id)
85
63
  return false unless records.empty?
86
-
87
64
  create_record(domain.id, record)
88
65
  end
89
66
 
@@ -92,7 +69,7 @@ module Splicer
92
69
  # @param [Integer] domain_id
93
70
  # @return [Array<Splicer::DnsMadeEasy::Record>]
94
71
  def fetch_records(domain_id)
95
- response = JSON.parse(client.get(records_resource_url(domain_id)))
72
+ response = JSON.parse(client.get(record_url(domain_id)))
96
73
  list = []
97
74
  response['data'].each do |r|
98
75
  list << Record.new(r)
@@ -103,13 +80,14 @@ module Splicer
103
80
  end
104
81
 
105
82
  # @param [Integer] domain_id
83
+ # @param [String] type
106
84
  # @return [Array<Splicer::DnsMadeEasy::Record>]
107
85
  def find_records(name, type, domain_id)
108
86
  payload = {
109
87
  type: type,
110
88
  recordName: name ? name : ''
111
89
  }
112
- response = JSON.parse(client.get(records_resource_url(domain_id), payload))
90
+ response = JSON.parse(client.get(record_url(domain_id), payload))
113
91
  if response['data'].is_a?(Array)
114
92
  list = []
115
93
  response['data'].each do |params|
@@ -120,15 +98,20 @@ module Splicer
120
98
  [Record.new(response['data'])]
121
99
  end
122
100
  rescue Splicer::Errors::Error => error
123
- Splicer.logger.debug "[SPLICER][DNSMADEEASY] #{error}"
124
101
  []
125
102
  end
126
103
 
104
+ def create_domain(zone)
105
+ client.post('dns/managed', name: zone.name)
106
+ end
107
+
127
108
  # @param [Integer] domain_id
128
109
  # @param [Splicer::Records::Record] splicer_record
129
110
  # @return [String]
130
111
  def create_record(domain_id, splicer_record)
131
- client.post(records_resource_url(domain_id), record_resource_payload(splicer_record))
112
+ url = record_url(domain_id)
113
+ payload = record_payload(splicer_record)
114
+ client.post(url, payload)
132
115
  end
133
116
 
134
117
  # @param [Integer] record_id
@@ -136,19 +119,23 @@ module Splicer
136
119
  # @param [Splicer::Records::Record] splicer_record
137
120
  # @return [String]
138
121
  def update_record(domain_id, record_id, splicer_record)
139
- client.put(records_resource_url(domain_id, record_id), record_resource_payload(splicer_record).merge({id: record_id}))
122
+ url = record_url(domain_id, record_id)
123
+ payload = record_payload(splicer_record).merge({id: record_id})
124
+ client.put(url, payload)
140
125
  end
141
126
 
142
127
  # @param [Integer] record_id
143
128
  # @param [Integer] domain_id
144
129
  # @return [String]
145
130
  def delete_record(domain_id, record_id)
146
- client.delete(records_resource_url(domain_id, record_id), id: record_id)
131
+ url = record_url(domain_id, record_id)
132
+ payload = { id: record_id }
133
+ client.delete(url, payload)
147
134
  end
148
135
 
149
136
  # @param [Integer] domain_id
150
137
  # @return [String]
151
- def records_resource_url(domain_id, record_id=nil)
138
+ def record_url(domain_id, record_id=nil)
152
139
  if record_id
153
140
  "dns/managed/#{domain_id}/records/#{record_id}"
154
141
  else
@@ -172,7 +159,7 @@ module Splicer
172
159
  # Returns a hash for the record data
173
160
  # @param [Splicer::Records::Record] record
174
161
  # @return [Hash]
175
- def record_resource_payload(record)
162
+ def record_payload(record)
176
163
  payload = {
177
164
  type: record.type,
178
165
  gtdLocation: 'DEFAULT',
@@ -11,9 +11,10 @@ module Splicer
11
11
  @data = params
12
12
  end
13
13
 
14
- def id?
14
+ def persisted?
15
15
  !!@id
16
16
  end
17
+ alias_method :id?, :persisted?
17
18
  end
18
19
 
19
20
  end
@@ -1,5 +1,5 @@
1
1
  module Splicer
2
2
  module DnsMadeEasy
3
- VERSION = "1.2.6"
3
+ VERSION = "2.1.1"
4
4
  end
5
5
  end
data/spec/spec_helper.rb CHANGED
@@ -5,3 +5,6 @@ require 'splicer/dns_made_easy'
5
5
  RSpec.configure do |config|
6
6
  config.mock_with :rspec
7
7
  end
8
+
9
+ Splicer.configure do |config|
10
+ end
@@ -3,5 +3,24 @@ require 'spec_helper'
3
3
  describe Splicer::DnsMadeEasy::Domain do
4
4
 
5
5
  describe '#initialize' do
6
+ def params
7
+ { 'id' => 1 }
8
+ end
9
+ subject { Splicer::DnsMadeEasy::Domain.new(params) }
10
+ its(:id) { should eq(1) }
11
+ its(:data) { should eq(params) }
12
+ end
13
+
14
+ describe '#persisted?' do
15
+ subject { domain.persisted? }
16
+ context 'when the domain is persisted' do
17
+ let(:domain) { Splicer::DnsMadeEasy::Domain.new({'id' => 1}) }
18
+ it { should be_true }
19
+ end
20
+
21
+ context 'when the domain is not persisted' do
22
+ let(:domain) { Splicer::DnsMadeEasy::Domain.new }
23
+ it { should be_false }
24
+ end
6
25
  end
7
26
  end
@@ -3,32 +3,54 @@ require 'spec_helper'
3
3
  describe Splicer::DnsMadeEasy::Provider do
4
4
  let(:config) { Splicer::DnsMadeEasy::Config.new('key','secret') }
5
5
  let(:provider) { Splicer::DnsMadeEasy::Provider.new(config) }
6
+ let(:domain) { Splicer::DnsMadeEasy::Domain.new({'id' => 1}) }
6
7
 
7
8
  describe '#create_zone' do
9
+ let(:zone) { Splicer::Zone.new('rspectesting.com') }
8
10
  subject { provider.create_zone(zone) }
9
- end
10
11
 
11
- describe '#update_zone' do
12
- subject { provider.update_zone(zone) }
12
+ context 'when the domain exists' do
13
+ before do
14
+ provider.stub(:find_domain).and_return(domain)
15
+ provider.stub(:create_domain).and_raise(Splicer::Errors::RequestError)
16
+ end
17
+ it { should be_false }
18
+ end
19
+
20
+ context 'when the domain exists' do
21
+ before do
22
+ provider.stub(:find_domain).and_return(Splicer::DnsMadeEasy::Domain.new)
23
+ provider.stub(:create_domain).and_return(true)
24
+ provider.stub(:create_record).and_return(true)
25
+ end
26
+ it { should be_true }
27
+ end
13
28
  end
14
29
 
15
- describe '#rewrite_zone' do
16
- subject { provider.rewrite_zone(zone) }
17
- end
18
30
 
19
31
  describe '#delete_zone' do
32
+ let(:zone) { Splicer::Zone.new('rspectesting.com') }
20
33
  subject { provider.delete_zone(zone) }
21
34
  end
22
35
 
36
+
23
37
  describe '#delete_record_in_zone' do
38
+ let(:record) { Splicer::Records::ARecord.new(nil, '127.0.0.1') }
39
+ let(:zone) { Splicer::Zone.new('rspectesting.com') }
24
40
  subject { provider.delete_record_in_zone(record, zone) }
25
41
  end
26
42
 
43
+
27
44
  describe '#update_record_in_zone' do
45
+ let(:record) { Splicer::Records::ARecord.new(nil, '127.0.0.1') }
46
+ let(:zone) { Splicer::Zone.new('rspectesting.com') }
28
47
  subject { provider.update_record_in_zone(record, zone) }
29
48
  end
30
49
 
50
+
31
51
  describe '#create_record_in_zone' do
52
+ let(:record) { Splicer::Records::ARecord.new(nil, '127.0.0.1') }
53
+ let(:zone) { Splicer::Zone.new('rspectesting.com') }
32
54
  subject { provider.create_record_in_zone(record, zone) }
33
55
  end
34
56
  end
@@ -0,0 +1,33 @@
1
+ require 'spec_helper'
2
+
3
+ describe Splicer::DnsMadeEasy::Record do
4
+ describe '#initialize' do
5
+ def params
6
+ {
7
+ 'id' => 1,
8
+ 'type' => 'A',
9
+ 'value' => '127.0.0.1',
10
+ 'ttl' => 3600
11
+ }
12
+ end
13
+ subject { Splicer::DnsMadeEasy::Record.new(params) }
14
+ its(:id) { should eq(params['id']) }
15
+ its(:type) { should eq(params['type']) }
16
+ its(:value) { should eq(params['value']) }
17
+ its(:ttl) { should eq(params['ttl']) }
18
+ its(:data) { should eq(params) }
19
+ end
20
+
21
+ describe '#persisted?' do
22
+ subject { record.persisted? }
23
+ context 'when the record is persisted' do
24
+ let(:record) { Splicer::DnsMadeEasy::Record.new({'id' => 1}) }
25
+ it { should be_true }
26
+ end
27
+
28
+ context 'when the record is not persisted' do
29
+ let(:record) { Splicer::DnsMadeEasy::Record.new }
30
+ it { should be_false }
31
+ end
32
+ end
33
+ end
@@ -18,7 +18,7 @@ Gem::Specification.new do |spec|
18
18
  spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
19
19
  spec.require_paths = ["lib"]
20
20
 
21
- spec.add_dependency('splicer', '~> 1.1')
21
+ spec.add_dependency('splicer', '~> 2.1')
22
22
  spec.add_dependency('rest-client')
23
23
 
24
24
  spec.add_development_dependency "bundler", "~> 1.3"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: splicer-dns_made_easy
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.6
4
+ version: 2.1.1
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-05-21 00:00:00.000000000 Z
12
+ date: 2013-05-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: splicer
@@ -18,7 +18,7 @@ dependencies:
18
18
  requirements:
19
19
  - - ~>
20
20
  - !ruby/object:Gem::Version
21
- version: '1.1'
21
+ version: '2.1'
22
22
  type: :runtime
23
23
  prerelease: false
24
24
  version_requirements: !ruby/object:Gem::Requirement
@@ -26,7 +26,7 @@ dependencies:
26
26
  requirements:
27
27
  - - ~>
28
28
  - !ruby/object:Gem::Version
29
- version: '1.1'
29
+ version: '2.1'
30
30
  - !ruby/object:Gem::Dependency
31
31
  name: rest-client
32
32
  requirement: !ruby/object:Gem::Requirement
@@ -119,6 +119,7 @@ files:
119
119
  - spec/splicer/dns_made_easy/config_spec.rb
120
120
  - spec/splicer/dns_made_easy/domain_spec.rb
121
121
  - spec/splicer/dns_made_easy/provider_spec.rb
122
+ - spec/splicer/dns_made_easy/record_spec.rb
122
123
  - splicer-dns_made_easy.gemspec
123
124
  homepage: https://github.com/zippykid/dns_made_easy
124
125
  licenses:
@@ -135,7 +136,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
135
136
  version: '0'
136
137
  segments:
137
138
  - 0
138
- hash: 992635597092004664
139
+ hash: 2898526824841093068
139
140
  required_rubygems_version: !ruby/object:Gem::Requirement
140
141
  none: false
141
142
  requirements:
@@ -144,7 +145,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
144
145
  version: '0'
145
146
  segments:
146
147
  - 0
147
- hash: 992635597092004664
148
+ hash: 2898526824841093068
148
149
  requirements: []
149
150
  rubyforge_project:
150
151
  rubygems_version: 1.8.25
@@ -157,3 +158,4 @@ test_files:
157
158
  - spec/splicer/dns_made_easy/config_spec.rb
158
159
  - spec/splicer/dns_made_easy/domain_spec.rb
159
160
  - spec/splicer/dns_made_easy/provider_spec.rb
161
+ - spec/splicer/dns_made_easy/record_spec.rb