Sha256: bd5e6775062557da835ec16f3addb1452578bda3d7ad810c0f2413a4d7ce97b2

Contents?: true

Size: 998 Bytes

Versions: 10

Compression:

Stored size: 998 Bytes

Contents

# frozen_string_literal: true

module DnsMock
  module Record
    module Builder
      class Mx < DnsMock::Record::Builder::Base
        include DnsMock::Error::Helper

        MX_RECORD_REGEX_PATTERN = /\A(.+):(\d+)|(.+)\z/.freeze
        RECORD_PREFERENCE_STEP = 10

        def build
          records_data.map.with_index(1) do |record_data, record_preference|
            record_data, custom_record_preference = parse_mx_record_data(record_data)
            target_factory.new(
              record_data: [
                custom_record_preference&.to_i || record_preference * DnsMock::Record::Builder::Mx::RECORD_PREFERENCE_STEP,
                record_data
              ]
            ).create
          end
        end

        private

        def parse_mx_record_data(record_data)
          raise_record_context_type_error(:mx, record_data, ::String)
          record_data.scan(DnsMock::Record::Builder::Mx::MX_RECORD_REGEX_PATTERN).flatten.compact
        end
      end
    end
  end
end

Version data entries

10 entries across 10 versions & 1 rubygems

Version Path
dns_mock-1.4.2 lib/dns_mock/record/builder/mx.rb
dns_mock-1.4.1 lib/dns_mock/record/builder/mx.rb
dns_mock-1.4.0 lib/dns_mock/record/builder/mx.rb
dns_mock-1.3.1 lib/dns_mock/record/builder/mx.rb
dns_mock-1.3.0 lib/dns_mock/record/builder/mx.rb
dns_mock-1.2.4 lib/dns_mock/record/builder/mx.rb
dns_mock-1.2.3 lib/dns_mock/record/builder/mx.rb
dns_mock-1.2.2 lib/dns_mock/record/builder/mx.rb
dns_mock-1.2.1 lib/dns_mock/record/builder/mx.rb
dns_mock-1.2.0 lib/dns_mock/record/builder/mx.rb