2018-08-02 00:09:29 +02:00
|
|
|
# Copyright (C) 2018 Colin Darie <colin@darie.eu>, 2018 Evolix <info@evolix.fr>
|
|
|
|
# License: GNU AGPL-3+ (see full text in LICENSE file)
|
|
|
|
|
2018-05-30 12:04:07 +02:00
|
|
|
module Whois
|
|
|
|
module Parser
|
2019-02-28 21:54:57 +01:00
|
|
|
PARSERS = [
|
|
|
|
Afilias,
|
|
|
|
AFNIC,
|
|
|
|
CIRA,
|
2022-06-13 22:35:37 +02:00
|
|
|
Icann,
|
2019-02-28 23:28:29 +01:00
|
|
|
IO,
|
2019-02-28 21:54:57 +01:00
|
|
|
Neustar,
|
2019-02-28 22:33:48 +01:00
|
|
|
Sonic,
|
2019-02-28 21:54:57 +01:00
|
|
|
Verisign,
|
|
|
|
].freeze
|
2018-05-30 12:04:07 +02:00
|
|
|
|
|
|
|
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
|