Sha256: 9e5286daf820f652e42a8cec957904cc98662fbb51876508aa93050c9cc8bc32

Contents?: true

Size: 1.57 KB

Versions: 29

Compression:

Stored size: 1.57 KB

Contents

# frozen_string_literal: true

module DnsMock
  module Record
    module Factory
      class Base
        extend DnsMock::Error::Helper

        class << self
          attr_reader :target_class

          def record_type(record_type)
            @target_class = ::Resolv::DNS::Resource::IN.const_get(
              record_type_check(record_type).upcase
            )
          end

          private

          def record_type_check(defined_record_type)
            raise_record_type_error(defined_record_type, DnsMock::AVAILABLE_DNS_RECORD_TYPES.include?(defined_record_type))
            defined_record_type
          end
        end

        def initialize(
          dns_name = ::Resolv::DNS::Name,
          punycode_representer = DnsMock::Representer::Punycode,
          record_data:
        )
          @dns_name = dns_name
          @punycode_representer = punycode_representer
          @record_data = record_data
        end

        def instance_params; end

        def create
          self.class.target_class.public_send(:new, *instance_params)
        rescue => error
          raise DnsMock::Error::RecordContext.new(error.message, record_type)
        end

        private

        attr_reader :dns_name, :punycode_representer, :record_data

        def record_type
          self.class.name.split('::').last.upcase
        end

        def create_dns_name(hostname)
          raise ::ArgumentError, "cannot interpret as DNS name: #{hostname}" unless hostname.is_a?(::String)
          dns_name.create("#{punycode_representer.call(hostname)}.")
        end
      end
    end
  end
end

Version data entries

29 entries across 29 versions & 1 rubygems

Version Path
dns_mock-1.7.1 lib/dns_mock/record/factory/base.rb
dns_mock-1.7.0 lib/dns_mock/record/factory/base.rb
dns_mock-1.6.2 lib/dns_mock/record/factory/base.rb
dns_mock-1.6.1 lib/dns_mock/record/factory/base.rb
dns_mock-1.6.0 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.18 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.17 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.16 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.15 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.14 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.13 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.12 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.11 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.10 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.9 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.8 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.7 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.6 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.5 lib/dns_mock/record/factory/base.rb
dns_mock-1.5.4 lib/dns_mock/record/factory/base.rb