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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 58c59e72437e8283188c2c51075d062b11e4b58a
4
- data.tar.gz: 270c708b1baa5ea61359797db016b9318351e1b0
3
+ metadata.gz: 1a6e1664a9de06793124e132a120b3b532c638c1
4
+ data.tar.gz: c8e1c9035c7a7a75947f966e1fb7f2856f8fa1e5
5
5
  SHA512:
6
- metadata.gz: 1b6af906fe22e06b6aa6c7b04cf21c47e769cc1b274cc41d5192a5fadb4a54d87d2b4796e7de53ba553a28bbe9749b91d76550250d0b73adad9bb92fdb672171
7
- data.tar.gz: 4ef110de89b2b7a047d84ac0480e0f9189d7e2e218e09bf4089bfdf26a308a1dc5b6d5cdac467028c3667579d11c7d0366a5976c72b1e978ca60741b2c3c8ca2
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'
@@ -13,7 +13,8 @@ require 'gehirn_dns/version'
13
13
 
14
14
  module GehirnDns
15
15
  class Client
16
- attr_accessor :base_uri, :token, :secret
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
- %Q(#<#{self.class}:#{object_id} @base_uri=#{@base_uri.inspect}, @secret=<HIDDEN>, @token=<HIDDEN>, @user_agent=#{@user_agent.inspect}>)
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.has_key? type
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 do
77
- undef_method attr, setter_sym if respond_to?(setter_sym)
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
- return self if @records.include?(record) || self.equal?(record.record_set)
79
-
80
- record = case record
81
- when Hash
82
- Record.new(record, record_set: self)
83
- when Record
84
- if record.record_set.nil?
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? record || self.equal?(record.record_set)
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, "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)
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, "passing both id and name is not allowed" if id && name
12
- raise ArgumentError, "missing keyword: id or name" if !id && !name
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, "passing both id and name is not allowed" if id && name
50
- raise ArgumentError, "missing keyword: id or name" if !id && !name
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}"
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module GehirnDns
4
- VERSION = '1.0.0.pre'
4
+ VERSION = '1.0.0.pre2'
5
5
  end
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.pre
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: '0'
107
+ version: '2.3'
108
108
  required_rubygems_version: !ruby/object:Gem::Requirement
109
109
  requirements:
110
110
  - - ">"