Class: DnsMadeEasy::Zone::AnameFlattener

Inherits:
Object
  • Object
show all
Defined in:
lib/dnsmadeeasy/zone/aname_flattener.rb

Overview

Flattens ANAME records into resolved A records for RFC-portable exports. Resolution is a point-in-time snapshot, so every conversion is reported as a notice.

Instance Method Summary collapse

Constructor Details

#initialize(records, resolver: nil) ⇒ AnameFlattener

Returns a new instance of AnameFlattener.



15
16
17
18
# File 'lib/dnsmadeeasy/zone/aname_flattener.rb', line 15

def initialize(records, resolver: nil)
  @records = records
  @resolver = resolver || default_resolver
end

Instance Method Details

#callObject



20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
# File 'lib/dnsmadeeasy/zone/aname_flattener.rb', line 20

def call
  flattened = []
  notices = []

  records.each do |record|
    if record.type == 'ANAME'
      addresses = resolve(record)
      return Failure(["Unable to resolve ANAME target #{record.value} for --strict-rfc export"]) if addresses.empty?

      addresses.each { |address| flattened << record.new(type: 'A', value: address) }
      notices << flatten_notice(record, addresses)
    else
      flattened << record
    end
  end

  Success([flattened, notices])
end