Skip to content
This repository
Fetching contributors…

Cannot retrieve contributors at this time

file 97 lines (77 sloc) 2.369 kb
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97
#--
# Ruby Whois
#
# An intelligent pure Ruby WHOIS client and parser.
#
# Copyright (c) 2009-2012 Simone Carletti <weppos@weppos.net>
#++

require 'whois/record/parser/base'
require 'whois/record/parser/scanners/whois.cctld.by'

module Whois
  class Record
    class Parser

      #
      # = whois.cctld.by parser
      #
      # Parser for the whois.cctld.by server.
      #
      # @author Aliaksei Kliuchnikau <aliaksei.kliuchnikau@gmail.com>
      class WhoisCctldBy < Base
        include Scanners::Ast

        # Initializes a new {Scanners::WhoisCctldBy} instance
        # passing the {#content_for_scanner}
        # and calls +parse+ on it.
        #
        # @return [Hash]
        def parse
          Scanners::WhoisCctldBy.new(content_for_scanner).parse
        end

        property_supported :available? do
          !!node("status:available")
        end

        property_supported :registered? do
          !available?
        end

        property_supported :status do
          if available?
            :available
          else
            :registered
          end
        end

        property_supported :domain do
          node("Domain Name", &:downcase)
        end

        property_supported :registrar do
          node("Registrar") do |registrar|
            Record::Registrar.new(:id => registrar,
                                  :name => registrar,
                                  :organization => registrar
            )
          end
        end

        property_supported :updated_on do
          node("Updated Date") { |value| Time.parse(value) }
        end

        property_supported :created_on do
          node("Creation Date") { |value| Time.parse(value) }
        end

        property_supported :expires_on do
          node("Expiration Date") { |value| Time.parse(value) }
        end

        property_supported :nameservers do
          Array.wrap(node("Name Server")).map do |name|
            Nameserver.new(name.downcase)
          end
        end

        property_not_supported :disclaimer

        property_not_supported :referral_whois

        property_not_supported :referral_url

        property_not_supported :domain_id

        property_not_supported :registrant_contacts

        property_not_supported :admin_contacts

        property_not_supported :technical_contacts
      end
    end
  end
end
Something went wrong with that request. Please try again.