Sha256: 508e32ac79aceb6699107c21d8d8b92c3056b7286055e6a171ec4365a6ff8d42

Contents?: true

Size: 1.37 KB

Versions: 12

Compression:

Stored size: 1.37 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, record_data:)
          @dns_name = dns_name
          @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, :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("#{hostname}.")
        end
      end
    end
  end
end

Version data entries

12 entries across 12 versions & 1 rubygems

Version Path
dns_mock-1.3.1 lib/dns_mock/record/factory/base.rb
dns_mock-1.3.0 lib/dns_mock/record/factory/base.rb
dns_mock-1.2.4 lib/dns_mock/record/factory/base.rb
dns_mock-1.2.3 lib/dns_mock/record/factory/base.rb
dns_mock-1.2.2 lib/dns_mock/record/factory/base.rb
dns_mock-1.2.1 lib/dns_mock/record/factory/base.rb
dns_mock-1.2.0 lib/dns_mock/record/factory/base.rb
dns_mock-1.1.0 lib/dns_mock/record/factory/base.rb
dns_mock-1.0.0 lib/dns_mock/record/factory/base.rb
dns_mock-0.2.1 lib/dns_mock/record/factory/base.rb
dns_mock-0.2.0 lib/dns_mock/record/factory/base.rb
dns_mock-0.1.0 lib/dns_mock/record/factory/base.rb