cloudflare-dns-update 2.3.0 → 2.4.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 64b3a3163bf2e4812153fa6814b6247b03d8c032
4
- data.tar.gz: 0be12003d1e9810de4ad1924d026d900c2a42f4e
2
+ SHA256:
3
+ metadata.gz: e6409c6fe221e5dc21eee10b9f2596347b3efc04fd067bbacefe71ca2b63d211
4
+ data.tar.gz: b60b29f36731b746f7a2a25efd2dce823280d0a711a313a5d1573cb47bd3c82f
5
5
  SHA512:
6
- metadata.gz: ef0cd00df6d06b716e629108761d8dac69ce3de2928e06c1d1d391c0cb5675b3471052b6f305dd39c4c42fa582b8eb57e818166c369729da5c967a21349e0f87
7
- data.tar.gz: 2aef4729871a2d9f7400322057722827159708edc8176de68df843b922bf9a5e5b45034896cc30fe9ab5fc247143977da2d8cb7360e09b295ca16372321ae993
6
+ metadata.gz: 5c9ced0e278352962f1efbe644df9d9eb05f8534edc0a62b8a8dcaa63231bf1e0c4903a02b65e4c22f033bc8f6f1a85d4a5741f40b04201a6f33ba92dbd18274
7
+ data.tar.gz: 9eeb1f04daaa93faaa8c3d1dcb82536e5905afac22be61e835f722323ca14ef561316e102b0347e900fd6d2755ca6ac047c7a3985363fa1648ee96a2146d380f
@@ -1,19 +1,22 @@
1
1
  language: ruby
2
- sudo: false
3
- dist: trusty
2
+ dist: xenial
4
3
  cache: bundler
5
- rvm:
6
- - 2.0
7
- - 2.1
8
- - 2.2
9
- - 2.3
10
- - 2.4
11
- - jruby-head
12
- - ruby-head
4
+
13
5
  matrix:
6
+ include:
7
+ - rvm: 2.3
8
+ - rvm: 2.4
9
+ - rvm: 2.5
10
+ - rvm: 2.6
11
+ - rvm: jruby-head
12
+ env: JRUBY_OPTS="--debug -X+O"
13
+ - rvm: truffleruby
14
+ - rvm: ruby-head
14
15
  allow_failures:
15
- - rvm: ruby-head
16
- - rvm: jruby-head
16
+ - rvm: ruby-head
17
+ - rvm: jruby-head
18
+ - rvm: truffleruby
19
+
17
20
  env:
18
21
  global:
19
22
  secure: LU7mGKnIrWrnrdtq7Ug7HTxzqJoB+NbLHwT8dPmGf4GIfNosO4Jx+G4JLzUd/sCHzUR+XXrsMd7El8WkTVV28+nt6Cv2JvO4EJRIplnAL8Yauc0YSWRwA9nGYhcc2TJc5czbL0mZkJSOv4B+aWco0VWerJfgLYurIA05XrQFGGY=
@@ -23,10 +23,12 @@ Gem::Specification.new do |spec|
23
23
  spec.require_paths = ["lib"]
24
24
 
25
25
  spec.add_dependency "samovar", "~> 1.3"
26
- spec.add_dependency "tty-prompt", "~> 0.12.0"
27
- spec.add_dependency "cloudflare", "~> 3.0"
28
-
26
+ spec.add_dependency "tty-prompt", "~> 0.12"
27
+ spec.add_dependency "cloudflare", "~> 4.0"
28
+
29
+ spec.add_development_dependency 'async-rspec'
30
+
29
31
  spec.add_development_dependency "rspec", "~> 3.6"
30
- spec.add_development_dependency "bundler", "~> 1.3"
32
+ spec.add_development_dependency "bundler"
31
33
  spec.add_development_dependency "rake"
32
34
  end
@@ -55,15 +55,7 @@ module Cloudflare::DNS::Update
55
55
  end
56
56
 
57
57
  def logger
58
- @logger ||= Logger.new($stderr).tap do |logger|
59
- if verbose?
60
- logger.level = Logger::DEBUG
61
- elsif quiet?
62
- logger.level = Logger::WARN
63
- else
64
- logger.level = Logger::INFO
65
- end
66
- end
58
+ @logger ||= Async.logger
67
59
  end
68
60
 
69
61
  def prompt
@@ -94,9 +86,9 @@ module Cloudflare::DNS::Update
94
86
  def initialize_zone
95
87
  configuration_store.transaction do |configuration|
96
88
  unless configuration[:zone]
97
- zone = prompt.select("What zone do you want to update?", @connection.zones.all)
89
+ zone = prompt.select("What zone do you want to update?", @connection.zones)
98
90
 
99
- configuration[:zone] = zone.record
91
+ configuration[:zone] = zone.value
100
92
  end
101
93
  end
102
94
  end
@@ -111,9 +103,9 @@ module Cloudflare::DNS::Update
111
103
  zone_id = configuration[:zone][:id]
112
104
  zone = @connection.zones.find_by_id(zone_id)
113
105
 
114
- dns_records = prompt.multi_select("What records do you want to update (select 1 or more)?", zone.dns_records.all)
106
+ dns_records = prompt.multi_select("What records do you want to update (select 1 or more)?", zone.dns_records)
115
107
 
116
- domains = configuration[:domains] = dns_records.map(&:record)
108
+ domains = configuration[:domains] = dns_records.map(&:value)
117
109
  end
118
110
  end
119
111
  end
@@ -126,6 +118,25 @@ module Cloudflare::DNS::Update
126
118
  end
127
119
  end
128
120
 
121
+ def update_domain(zone, record, content)
122
+ if content != record[:content] || @options[:force]
123
+ logger.info "Content changed #{content.inspect}, updating records..."
124
+
125
+ domain = zone.dns_records.find_by_id(record[:id])
126
+
127
+ begin
128
+ domain.update_content(content)
129
+
130
+ logger.info "Updated domain: #{record[:name]} #{record[:type]} #{content}"
131
+ record[:content] = content
132
+ rescue => error
133
+ logger.warn("Failed to update domain: #{record[:name]} #{record[:type]} #{content}") {error}
134
+ end
135
+ else
136
+ logger.debug "Content hasn't changed: #{record[:name]} #{record[:type]} #{content}"
137
+ end
138
+ end
139
+
129
140
  def update_domains(content = nil)
130
141
  configuration_store.transaction do |configuration|
131
142
  unless content
@@ -136,40 +147,18 @@ module Cloudflare::DNS::Update
136
147
  raise RuntimeError.new("Content command failed with non-zero output: #{status}")
137
148
  end
138
149
 
139
- unless zone = @connection.zones.find_by_id(configuration[:zone][:id])
140
- raise RuntimeError.new("Couldn't load zone #{configuration[:zone].inspect} from API!")
141
- end
142
-
143
150
  # Make sure there is no trailing space:
144
151
  content.chomp!
145
- end
146
-
147
- if content != configuration[:content] || @options[:force]
148
- logger.info "Content changed #{content.inspect}, updating records..."
149
152
 
150
- configuration[:domains].each do |record|
151
- domain = zone.dns_records.find_by_id(record[:id])
152
-
153
- changes = {
154
- type: domain.record[:type],
155
- name: domain.record[:name],
156
- content: content
157
- }
158
-
159
- response = domain.put(changes.to_json, content_type: 'application/json')
160
-
161
- if response.successful?
162
- logger.info "Updated domain content to #{content}."
163
- record[:content] = content
164
- else
165
- logger.warn "Failed to update domain content to #{content}: #{response.errors.join(', ')}!"
166
- end
167
- end
168
-
169
- # Save the last value of content:
170
153
  configuration[:content] = content
171
- else
172
- logger.debug "Content hasn't changed."
154
+ end
155
+
156
+ unless zone = @connection.zones.find_by_id(configuration[:zone][:id])
157
+ raise RuntimeError.new("Couldn't load zone #{configuration[:zone].inspect} from API!")
158
+ end
159
+
160
+ configuration[:domains].each do |record|
161
+ update_domain(zone, record, content)
173
162
  end
174
163
  end
175
164
 
@@ -182,6 +171,12 @@ module Cloudflare::DNS::Update
182
171
  elsif @options[:help]
183
172
  print_usage(program_name)
184
173
  else
174
+ if verbose?
175
+ Async.logger.debug!
176
+ elsif quiet?
177
+ Async.logger.warn!
178
+ end
179
+
185
180
  connect!
186
181
 
187
182
  initialize_zone
@@ -22,7 +22,7 @@
22
22
  module Cloudflare
23
23
  module DNS
24
24
  module Update
25
- VERSION = "2.3.0"
25
+ VERSION = "2.4.0"
26
26
  end
27
27
  end
28
28
  end
@@ -1,27 +1,19 @@
1
1
 
2
2
  require 'cloudflare/dns/update/command'
3
3
 
4
- RSpec.describe Cloudflare::DNS::Update::Command::Top, order: :defined do
4
+ RSpec.describe Cloudflare::DNS::Update::Command::Top, order: :defined, timeout: 60 do
5
5
  include_context Cloudflare::RSpec::Connection
6
6
 
7
7
  let(:configuration_path) {File.join(__dir__, 'test.yaml')}
8
8
 
9
9
  subject{described_class.new(["-c", configuration_path])}
10
10
 
11
- let(:zone) {connection.zones.all.first}
11
+ let(:zone) {connection.zones.first}
12
12
  let!(:name) {"dyndns#{ENV['TRAVIS_JOB_ID']}"}
13
- let!(:qualified_name) {"#{name}.#{zone.record[:name]}"}
13
+ let!(:qualified_name) {"#{name}.#{zone.name}"}
14
14
 
15
15
  it "should create dns record" do
16
- response = zone.dns_records.post({
17
- type: "A",
18
- name: name,
19
- content: "127.0.0.1",
20
- ttl: 240,
21
- proxied: false
22
- }.to_json, content_type: 'application/json')
23
-
24
- expect(response).to be_successful
16
+ zone.dns_records.create("A", name, "127.0.0.1", ttl: 240, proxied: false)
25
17
  end
26
18
 
27
19
  let(:dns_record) {zone.dns_records.find_by_name(qualified_name)}
@@ -31,8 +23,8 @@ RSpec.describe Cloudflare::DNS::Update::Command::Top, order: :defined do
31
23
 
32
24
  subject.configuration_store.transaction do |configuration|
33
25
  configuration[:content_command] = 'curl -s ipinfo.io/ip'
34
- configuration[:zone] = zone.record
35
- configuration[:domains] = [dns_record.record]
26
+ configuration[:zone] = zone.value
27
+ configuration[:domains] = [dns_record.value]
36
28
  end
37
29
 
38
30
  content = subject.update_domains
@@ -43,6 +35,6 @@ RSpec.describe Cloudflare::DNS::Update::Command::Top, order: :defined do
43
35
  end
44
36
 
45
37
  it "should delete dns record" do
46
- expect(dns_record.delete).to be_successful
38
+ expect(dns_record.delete).to be_success
47
39
  end
48
40
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cloudflare-dns-update
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.3.0
4
+ version: 2.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-07-12 00:00:00.000000000 Z
11
+ date: 2019-01-26 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: samovar
@@ -30,28 +30,42 @@ dependencies:
30
30
  requirements:
31
31
  - - "~>"
32
32
  - !ruby/object:Gem::Version
33
- version: 0.12.0
33
+ version: '0.12'
34
34
  type: :runtime
35
35
  prerelease: false
36
36
  version_requirements: !ruby/object:Gem::Requirement
37
37
  requirements:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
- version: 0.12.0
40
+ version: '0.12'
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: cloudflare
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
45
  - - "~>"
46
46
  - !ruby/object:Gem::Version
47
- version: '3.0'
47
+ version: '4.0'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - "~>"
53
53
  - !ruby/object:Gem::Version
54
- version: '3.0'
54
+ version: '4.0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: async-rspec
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
@@ -70,16 +84,16 @@ dependencies:
70
84
  name: bundler
71
85
  requirement: !ruby/object:Gem::Requirement
72
86
  requirements:
73
- - - "~>"
87
+ - - ">="
74
88
  - !ruby/object:Gem::Version
75
- version: '1.3'
89
+ version: '0'
76
90
  type: :development
77
91
  prerelease: false
78
92
  version_requirements: !ruby/object:Gem::Requirement
79
93
  requirements:
80
- - - "~>"
94
+ - - ">="
81
95
  - !ruby/object:Gem::Version
82
- version: '1.3'
96
+ version: '0'
83
97
  - !ruby/object:Gem::Dependency
84
98
  name: rake
85
99
  requirement: !ruby/object:Gem::Requirement
@@ -135,8 +149,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
135
149
  - !ruby/object:Gem::Version
136
150
  version: '0'
137
151
  requirements: []
138
- rubyforge_project:
139
- rubygems_version: 2.6.10
152
+ rubygems_version: 3.0.1
140
153
  signing_key:
141
154
  specification_version: 4
142
155
  summary: A dyndns client for Cloudflare.