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.
- data/lib/splicer/dns_made_easy/config.rb +0 -4
- data/lib/splicer/dns_made_easy/domain.rb +2 -4
- data/lib/splicer/dns_made_easy/provider.rb +25 -38
- data/lib/splicer/dns_made_easy/record.rb +2 -1
- data/lib/splicer/dns_made_easy/version.rb +1 -1
- data/spec/spec_helper.rb +3 -0
- data/spec/splicer/dns_made_easy/domain_spec.rb +19 -0
- data/spec/splicer/dns_made_easy/provider_spec.rb +28 -6
- data/spec/splicer/dns_made_easy/record_spec.rb +33 -0
- data/splicer-dns_made_easy.gemspec +1 -1
- metadata +8 -6
@@ -7,7 +7,7 @@ module Splicer
|
|
7
7
|
|
8
8
|
def initialize(config)
|
9
9
|
@config = config
|
10
|
-
@client = config.
|
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
|
-
|
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
|
-
|
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(
|
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(
|
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
|
-
|
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
|
-
|
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
|
-
|
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
|
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
|
162
|
+
def record_payload(record)
|
176
163
|
payload = {
|
177
164
|
type: record.type,
|
178
165
|
gtdLocation: 'DEFAULT',
|
data/spec/spec_helper.rb
CHANGED
@@ -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
|
-
|
12
|
-
|
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', '~>
|
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.
|
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-
|
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: '
|
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: '
|
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:
|
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:
|
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
|