class WhoisXMLAPI::Result

Public Instance Methods

complete?() click to toggle source
# File lib/whoisxmlapi/result.rb, line 70
def complete?
  ( self.domain and self.registrar and ( self.registrant or self.admin or self.tech) )
end
contact_email(contact) click to toggle source
# File lib/whoisxmlapi/result.rb, line 83
def contact_email(contact)
  case contact
  when :registrant
    registrant ? registrant.email : nil
  when :admin
    admin ? admin.email : nil
  when :tech
    tech ? tech.email : nil
  when :billing
    billing ? billing.email : nil
  else
    nil
  end
end
contact_email_host(contact) click to toggle source
# File lib/whoisxmlapi/result.rb, line 99
def contact_email_host(contact)
  email = contact_email(contact)
  host = email.squish.split("@").last.downcase if email.present? && email.include?("@")
  PublicSuffix.valid?(host) ? host : nil
end
parse(record) click to toggle source
# File lib/whoisxmlapi/result.rb, line 33
def parse(record)
  self.domain = record['domainName']
  self.data_error = record['dataError'] ? record['dataError'] : nil
  self.status = record['status'] ? record['status'] : nil

  if record['registryData']
    self.record_created = record['registryData']['createdDate']
    self.record_updated = record['registryData']['updatedDate']
    self.record_expires = record['registryData']['expiresDate']
  else
    res = WhoisXMLAPI::UnParsable.new
    res.parse(record)
    return res
  end

  self.registrar = record['registrarName']
  self.nameservers = record['nameServers'] ? record['nameServers']['hostNames'] : (record['registryData'] && record['registryData']['nameServers'] ? record['registryData']['nameServers']['hostNames'] : nil)
  registrant_data = record['registrant'] || (record['registryData'] ? record['registryData']['registrant'] : nil)

  if registrant_data.nil?
    res = WhoisXMLAPI::UnParsable.new
    res.parse(record)
    return res
  end

  # more "optional" data
  administrative_data = record['administrativeContact'] || (record['registryData'] ? record['registryData']['administrativeContact'] : nil)
  technical_data      = record['technicalContact'] || (record['registryData'] ? record['registryData']['technicalContact'] : nil)
  billing_data        = record['billingContact'] || (record['registryData'] ? record['registryData']['billingContact'] : nil)

  self.registrant = WhoisXMLAPI::Contact.selectively_create_from_hash(registrant_data.merge({'email' => record['contactEmail']})) if registrant_data
  self.admin      = WhoisXMLAPI::Contact.selectively_create_from_hash(administrative_data) if administrative_data
  self.tech       = WhoisXMLAPI::Contact.selectively_create_from_hash(technical_data) if technical_data
  self.billing    = WhoisXMLAPI::Contact.selectively_create_from_hash(billing_data) if billing_data
end
private?() click to toggle source
# File lib/whoisxmlapi/result.rb, line 75
def private?
  %w/networksolutionsprivateregistration.com domainprivacygroup.com/.each do |priv|
    return true if self.registrant.email =~ /#{priv}/
  end
  false
end