# 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/io" # require "whois/parser/neustar" # require "whois/parser/sonic" # require "whois/parser/verisign" module Whois module Parser PARSERS = [ Afilias, AFNIC, CIRA, IO, 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