class Mihari::WhoisRecord

Public Class Methods

build_by_domain(domain) click to toggle source

Build whois record

@param [Stinrg] domain

@return [WhoisRecord, nil]

# File lib/mihari/models/whois.rb, line 21
def build_by_domain(domain)
  domain = PublicSuffix.domain(domain)

  # check memo
  if @memo.key?(domain)
    whois_record = @memo[domain]
    # return clone of the record
    return whois_record.dup
  end

  record = Whois.whois(domain)
  parser = record.parser

  return nil if parser.available?

  whois_record = new(
    domain: domain,
    created_on: get_created_on(parser),
    updated_on: get_updated_on(parser),
    expires_on: get_expires_on(parser),
    registrar: get_registrar(parser),
    contacts: get_contacts(parser)
  )
  # set memo
  @memo[domain] = whois_record
  whois_record
rescue Whois::Error, Whois::ParserError, Timeout::Error
  nil
end

Private Class Methods

get_contacts(parser) click to toggle source

Get contacts

@param [::Whois::Parser:] parser

@return [Array, nil]

# File lib/mihari/models/whois.rb, line 112
def get_contacts(parser)
  parser.contacts.map(&:to_h)
rescue ::Whois::AttributeNotImplemented
  nil
end
get_created_on(parser) click to toggle source

Get created_on

@param [::Whois::Parser:] parser

@return [Date, nil]

# File lib/mihari/models/whois.rb, line 60
def get_created_on(parser)
  parser.created_on
rescue ::Whois::AttributeNotImplemented
  nil
end
get_expires_on(parser) click to toggle source

Get expires_on

@param [::Whois::Parser:] parser

@return [Date, nil]

# File lib/mihari/models/whois.rb, line 86
def get_expires_on(parser)
  parser.expires_on
rescue ::Whois::AttributeNotImplemented
  nil
end
get_registrar(parser) click to toggle source

Get registrar

@param [::Whois::Parser:] parser

@return [Hash, nil]

# File lib/mihari/models/whois.rb, line 99
def get_registrar(parser)
  parser.registrar&.to_h
rescue ::Whois::AttributeNotImplemented
  nil
end
get_updated_on(parser) click to toggle source

Get updated_on

@param [::Whois::Parser:] parser

@return [Date, nil]

# File lib/mihari/models/whois.rb, line 73
def get_updated_on(parser)
  parser.updated_on
rescue ::Whois::AttributeNotImplemented
  nil
end