gehirn_dns 1.0.0.pre → 1.0.0.pre2
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.
- checksums.yaml +4 -4
- data/.rubocop.yml +6 -0
- data/gehirn_dns.gemspec +1 -1
- data/lib/gehirn_dns/client.rb +5 -2
- data/lib/gehirn_dns/resource/record.rb +5 -7
- data/lib/gehirn_dns/resource/record_set.rb +15 -23
- data/lib/gehirn_dns/resource/version.rb +3 -3
- data/lib/gehirn_dns/resource/zone.rb +4 -4
- data/lib/gehirn_dns/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA1:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 1a6e1664a9de06793124e132a120b3b532c638c1
|
|
4
|
+
data.tar.gz: c8e1c9035c7a7a75947f966e1fb7f2856f8fa1e5
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: bba7ad504607f9eac051ea1835e39442e1e1c0e3a7eadce23f34df8f79cb767d269b7b431d8f4dfcd2ffab495a43c6d2c1f9a12bfc6209ba1f27e6259affed77
|
|
7
|
+
data.tar.gz: fb334cbfb24d6401e5cbd962196d99c1036d7b31cfe13e2f78645f438fbb4460d0f8e715377942a35752cb3281e1c35defafd3b12c929728bedf34a31de50c7b
|
data/.rubocop.yml
CHANGED
|
@@ -14,6 +14,12 @@ Metrics/AbcSize:
|
|
|
14
14
|
Enabled: false
|
|
15
15
|
Style/ClassAndModuleChildren:
|
|
16
16
|
Enabled: false
|
|
17
|
+
Style/TrailingCommaInLiteral:
|
|
18
|
+
EnforcedStyleForMultiline: comma
|
|
19
|
+
Metrics/PerceivedComplexity:
|
|
20
|
+
Max: 9
|
|
21
|
+
Metrics/CyclomaticComplexity:
|
|
22
|
+
Max: 9
|
|
17
23
|
AllCops:
|
|
18
24
|
Exclude:
|
|
19
25
|
- 'Rakefile'
|
data/gehirn_dns.gemspec
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
# coding: utf-8
|
|
2
1
|
# frozen_string_literal: true
|
|
3
2
|
|
|
4
3
|
lib = File.expand_path('../lib', __FILE__)
|
|
@@ -21,6 +20,7 @@ Gem::Specification.new do |spec|
|
|
|
21
20
|
spec.bindir = 'exe'
|
|
22
21
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
23
22
|
spec.require_paths = ['lib']
|
|
23
|
+
spec.required_ruby_version = '>= 2.3'
|
|
24
24
|
|
|
25
25
|
spec.add_development_dependency 'bundler', '~> 1.14'
|
|
26
26
|
spec.add_development_dependency 'rake', '~> 10.0'
|
data/lib/gehirn_dns/client.rb
CHANGED
|
@@ -13,7 +13,8 @@ require 'gehirn_dns/version'
|
|
|
13
13
|
|
|
14
14
|
module GehirnDns
|
|
15
15
|
class Client
|
|
16
|
-
|
|
16
|
+
attr_reader :base_uri
|
|
17
|
+
attr_accessor :token, :secret
|
|
17
18
|
|
|
18
19
|
DEFAULT_USER_AGENT = "gehirndns-ruby/#{::GehirnDns::VERSION}"
|
|
19
20
|
|
|
@@ -45,11 +46,12 @@ module GehirnDns
|
|
|
45
46
|
end
|
|
46
47
|
|
|
47
48
|
def inspect
|
|
48
|
-
%
|
|
49
|
+
%(#<#{self.class}:#{object_id} @base_uri=#{@base_uri.inspect}, @secret=<HIDDEN>, @token=<HIDDEN>, @user_agent=#{@user_agent.inspect}>)
|
|
49
50
|
end
|
|
50
51
|
|
|
51
52
|
private
|
|
52
53
|
|
|
54
|
+
# rubocop:disable Metrics/MethodLength
|
|
53
55
|
def execute(method, path, body = nil)
|
|
54
56
|
response = request(method, path, body)
|
|
55
57
|
|
|
@@ -76,6 +78,7 @@ module GehirnDns
|
|
|
76
78
|
raise RequestError.new(path, body)
|
|
77
79
|
end
|
|
78
80
|
end
|
|
81
|
+
# rubocop:enable Metrics/MethodLength
|
|
79
82
|
|
|
80
83
|
def request_class_for(method)
|
|
81
84
|
case method.downcase.to_sym
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module GehirnDns
|
|
4
4
|
class Record
|
|
5
|
-
attr_reader :id
|
|
6
|
-
attr_accessor :record_set
|
|
5
|
+
attr_reader :id, :record_set
|
|
7
6
|
|
|
8
7
|
RECORD_TYPES = %i(A AAAA CNAME MX NS SRV TXT).freeze
|
|
9
8
|
RECORD_FIELDS = {
|
|
@@ -39,11 +38,11 @@ module GehirnDns
|
|
|
39
38
|
end
|
|
40
39
|
|
|
41
40
|
def attributes(type: @record_set&.type)
|
|
42
|
-
Hash[attribute_names(type: type).map{|attr| [attr, instance_variable_get(:"@#{attr}")] }]
|
|
41
|
+
Hash[attribute_names(type: type).map { |attr| [attr, instance_variable_get(:"@#{attr}")] }]
|
|
43
42
|
end
|
|
44
43
|
|
|
45
44
|
def attribute_names(type: @record_set&.type)
|
|
46
|
-
return RECORD_FIELDS.values.flatten unless RECORD_FIELDS.
|
|
45
|
+
return RECORD_FIELDS.values.flatten.uniq unless RECORD_FIELDS.key? type
|
|
47
46
|
RECORD_FIELDS[type]
|
|
48
47
|
end
|
|
49
48
|
|
|
@@ -73,9 +72,8 @@ module GehirnDns
|
|
|
73
72
|
end
|
|
74
73
|
else
|
|
75
74
|
remove_instance_variable(inst_var_sym) if instance_variable_defined?(inst_var_sym)
|
|
76
|
-
singleton_class.class_eval
|
|
77
|
-
|
|
78
|
-
end
|
|
75
|
+
singleton_class.class_eval { undef_method setter_sym } if respond_to?(setter_sym)
|
|
76
|
+
singleton_class.class_eval { undef_method attr } if respond_to?(attr)
|
|
79
77
|
end
|
|
80
78
|
end
|
|
81
79
|
end
|
|
@@ -2,8 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
module GehirnDns
|
|
4
4
|
class RecordSet < Resource
|
|
5
|
-
attr_reader :id, :type, :enable_alias, :editable, :version
|
|
6
|
-
attr_accessor :name, :alias_to, :ttl, :records
|
|
5
|
+
attr_reader :id, :type, :enable_alias, :editable, :version, :name, :alias_to, :ttl
|
|
7
6
|
|
|
8
7
|
include Enumerable
|
|
9
8
|
|
|
@@ -63,34 +62,23 @@ module GehirnDns
|
|
|
63
62
|
response = http_post '../records', to_h
|
|
64
63
|
@id = response[:id]
|
|
65
64
|
@name = response[:name]
|
|
66
|
-
rescue => e # failed to add record set, revert
|
|
65
|
+
rescue StandardError => e # failed to add record set, revert
|
|
67
66
|
@version = nil
|
|
68
67
|
@client = nil
|
|
69
68
|
@base_path = nil
|
|
70
69
|
raise e
|
|
71
70
|
end
|
|
72
|
-
|
|
73
|
-
self
|
|
74
71
|
end
|
|
75
72
|
|
|
76
73
|
# append record
|
|
77
74
|
def <<(record)
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
record
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
record.record_set = self
|
|
86
|
-
elsif record.record_set != self
|
|
87
|
-
raise ArgumentError, "record is already member of a RecordSet"
|
|
88
|
-
end
|
|
89
|
-
|
|
90
|
-
record
|
|
91
|
-
else
|
|
92
|
-
raise ArgumentError
|
|
93
|
-
end
|
|
75
|
+
record = Record.new(record) unless record.is_a? Record
|
|
76
|
+
|
|
77
|
+
return self if @records.include?(record) || equal?(record.record_set)
|
|
78
|
+
|
|
79
|
+
raise ArgumentError, 'record is already member of a RecordSet' if record.record_set && record.record_set != self
|
|
80
|
+
|
|
81
|
+
record.record_set = self
|
|
94
82
|
|
|
95
83
|
@enable_alias = false
|
|
96
84
|
@alias_to = nil
|
|
@@ -98,13 +86,17 @@ module GehirnDns
|
|
|
98
86
|
|
|
99
87
|
begin
|
|
100
88
|
update
|
|
101
|
-
rescue => e # failed to add record, revert
|
|
89
|
+
rescue StandardError => e # failed to add record, revert
|
|
102
90
|
@records.delete(record)
|
|
103
91
|
record.record_set = nil
|
|
104
92
|
raise e
|
|
105
93
|
end
|
|
106
94
|
end
|
|
107
95
|
|
|
96
|
+
def records
|
|
97
|
+
@records.clone
|
|
98
|
+
end
|
|
99
|
+
|
|
108
100
|
def records=(records)
|
|
109
101
|
@records = records.map { |r| Record.new(r, record_set: self) }
|
|
110
102
|
@enable_alias = false
|
|
@@ -136,7 +128,7 @@ module GehirnDns
|
|
|
136
128
|
end
|
|
137
129
|
|
|
138
130
|
def delete_record(record)
|
|
139
|
-
raise ArgumentError, "record isn't member of record set" unless @records.include?
|
|
131
|
+
raise ArgumentError, "record isn't member of record set" unless @records.include?(record) || equal?(record.record_set)
|
|
140
132
|
raise ValidationError, "Can't delete only record of record set" if @records.size == 1
|
|
141
133
|
@records.delete(record)
|
|
142
134
|
update
|
|
@@ -21,8 +21,8 @@ module GehirnDns
|
|
|
21
21
|
end
|
|
22
22
|
|
|
23
23
|
def record_set(id: nil, name: nil, type: nil)
|
|
24
|
-
raise ArgumentError,
|
|
25
|
-
raise ArgumentError,
|
|
24
|
+
raise ArgumentError, 'passing both id and name is not allowed' if id && (name || type)
|
|
25
|
+
raise ArgumentError, 'missing keyword: one of id, name, type is required' if !id && !(name || type)
|
|
26
26
|
|
|
27
27
|
if id
|
|
28
28
|
respnose = http_get "records/#{id}"
|
|
@@ -61,7 +61,7 @@ module GehirnDns
|
|
|
61
61
|
payload = {
|
|
62
62
|
applied_at: applied_at ? applied_at.getutc.strftime('%FT%TZ') : nil,
|
|
63
63
|
name: name,
|
|
64
|
-
next_version_id: @id
|
|
64
|
+
next_version_id: @id,
|
|
65
65
|
}.compact
|
|
66
66
|
|
|
67
67
|
response = http_post '../../presets', payload
|
|
@@ -8,8 +8,8 @@ module GehirnDns
|
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def zone(id: nil, name: nil)
|
|
11
|
-
raise ArgumentError,
|
|
12
|
-
raise ArgumentError,
|
|
11
|
+
raise ArgumentError, 'passing both id and name is not allowed' if id && name
|
|
12
|
+
raise ArgumentError, 'missing keyword: id or name' if !id && !name
|
|
13
13
|
|
|
14
14
|
if id
|
|
15
15
|
response = get "zones/#{id}"
|
|
@@ -46,8 +46,8 @@ module GehirnDns
|
|
|
46
46
|
end
|
|
47
47
|
|
|
48
48
|
def version(id: nil, name: nil)
|
|
49
|
-
raise ArgumentError,
|
|
50
|
-
raise ArgumentError,
|
|
49
|
+
raise ArgumentError, 'passing both id and name is not allowed' if id && name
|
|
50
|
+
raise ArgumentError, 'missing keyword: id or name' if !id && !name
|
|
51
51
|
|
|
52
52
|
if id
|
|
53
53
|
response = http_get "versions/#{id}"
|
data/lib/gehirn_dns/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: gehirn_dns
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 1.0.0.
|
|
4
|
+
version: 1.0.0.pre2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- kyontan
|
|
@@ -104,7 +104,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
|
104
104
|
requirements:
|
|
105
105
|
- - ">="
|
|
106
106
|
- !ruby/object:Gem::Version
|
|
107
|
-
version: '
|
|
107
|
+
version: '2.3'
|
|
108
108
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
109
109
|
requirements:
|
|
110
110
|
- - ">"
|