# Copyright (C) 2018 Colin Darie , 2018 Evolix # License: GNU AGPL-3+ (see full text in LICENSE file) require "null_logger" require "whois/errors" require "whois/parser/afilias" require "whois/parser/afnic" require "whois/parser/cira" require "whois/parser/neustar" require "whois/parser/sonic" require "whois/parser/verisign" module Whois module Parser PARSERS = [ Afilias, AFNIC, CIRA, Neustar, Sonic, Verisign, ].freeze class << self def for(domain, logger: NullLogger.new) parser_class = PARSERS.find { |k| k.supports?(domain) } fail UnsupportedDomainError, "Unsupported domain '#{domain}'" if parser_class.nil? parser_class.new(domain, logger: logger) end end end end