Skip to content

Commit

Permalink
Added simple .gd, vg, tc TLD parser (whois.adamsnames.tc).
Browse files Browse the repository at this point in the history
  • Loading branch information
weppos committed Jan 9, 2010
1 parent 77cc751 commit 33955da
Show file tree
Hide file tree
Showing 11 changed files with 291 additions and 3 deletions.
2 changes: 2 additions & 0 deletions CHANGELOG.rdoc
Expand Up @@ -83,6 +83,8 @@

* ADDED: Simple .ws TLD parser (whois.samoanic.ws).

* ADDED: Simple .gd, vg, tc TLD parser (whois.adamsnames.tc).

* ADDED: Added ability to flag a property as :defined, :implemented and :supported.
Parsers now can mark a property as supported or not supported using
'property_supported' and 'property_not_supported' methods
Expand Down
12 changes: 12 additions & 0 deletions Manifest
Expand Up @@ -22,6 +22,7 @@ lib/whois/answer/parser/base.rb
lib/whois/answer/parser/blank.rb
lib/whois/answer/parser/jobswhois.verisign-grs.com.rb
lib/whois/answer/parser/scanners/verisign.rb
lib/whois/answer/parser/whois.adamsnames.tc.rb
lib/whois/answer/parser/whois.aero.rb
lib/whois/answer/parser/whois.afilias-grs.info.rb
lib/whois/answer/parser/whois.afilias.info.rb
Expand Down Expand Up @@ -65,6 +66,7 @@ lib/whois/answer/parser/whois.register.bg.rb
lib/whois/answer/parser/whois.registro.br.rb
lib/whois/answer/parser/whois.ripe.net.rb
lib/whois/answer/parser/whois.rotld.ro.rb
lib/whois/answer/parser/whois.samoanic.ws.rb
lib/whois/answer/parser/whois.za.net.rb
lib/whois/answer/parser/whois.za.org.rb
lib/whois/answer/part.rb
Expand Down Expand Up @@ -93,6 +95,7 @@ tasks/server.rake
test/answer/parser/base_test.rb
test/answer/parser/blank_test.rb
test/answer/parser/jobswhois.verisign-grs.com_test.rb
test/answer/parser/whois.adamsnames.tc_test.rb
test/answer/parser/whois.aero_test.rb
test/answer/parser/whois.afilias-grs.info_test.rb
test/answer/parser/whois.afilias.info_test.rb
Expand Down Expand Up @@ -136,6 +139,7 @@ test/answer/parser/whois.register.bg_test.rb
test/answer/parser/whois.registro.br_test.rb
test/answer/parser/whois.ripe.net_test.rb
test/answer/parser/whois.rotld.ro_test.rb
test/answer/parser/whois.samoanic.ws_test.rb
test/answer/parser/whois.za.net_test.rb
test/answer/parser/whois.za.org_test.rb
test/answer/parser_test.rb
Expand Down Expand Up @@ -164,6 +168,12 @@ test/testcases/referrals/pir.org.txt
test/testcases/responses/jobswhois.verisign-grs.com/available.txt
test/testcases/responses/jobswhois.verisign-grs.com/registered.txt
test/testcases/responses/super_struct_test.rb
test/testcases/responses/whois.adamsnames.tc/gd/available.txt
test/testcases/responses/whois.adamsnames.tc/gd/registered.txt
test/testcases/responses/whois.adamsnames.tc/tc/available.txt
test/testcases/responses/whois.adamsnames.tc/tc/registered.txt
test/testcases/responses/whois.adamsnames.tc/vg/available.txt
test/testcases/responses/whois.adamsnames.tc/vg/registered.txt
test/testcases/responses/whois.aero/available.txt
test/testcases/responses/whois.aero/registered.txt
test/testcases/responses/whois.afilias-grs.info/bz/available.txt
Expand Down Expand Up @@ -290,6 +300,8 @@ test/testcases/responses/whois.ripe.net/va/available.txt
test/testcases/responses/whois.ripe.net/va/registered.txt
test/testcases/responses/whois.rotld.ro/available.txt
test/testcases/responses/whois.rotld.ro/registered.txt
test/testcases/responses/whois.samoanic.ws/available.txt
test/testcases/responses/whois.samoanic.ws/registered.txt
test/testcases/responses/whois.za.net/available.txt
test/testcases/responses/whois.za.net/registered.txt
test/testcases/responses/whois.za.org/available.txt
Expand Down
64 changes: 64 additions & 0 deletions lib/whois/answer/parser/whois.adamsnames.tc.rb
@@ -0,0 +1,64 @@
#
# = Ruby Whois
#
# An intelligent pure Ruby WHOIS client and parser.
#
#
# Category:: Net
# Package:: Whois
# Author:: Simone Carletti <weppos@weppos.net>
# License:: MIT License
#
#--
#
#++


require 'whois/answer/parser/base'


module Whois
class Answer
class Parser

#
# = whois.adamsnames.tc
#
# Parser for the whois.adamsnames.tc server.
#
# NOTE: This parser is just a stub and provides only a few basic methods
# to check for domain availability and get domain status.
# Please consider to contribute implementing missing methods.
# See WhoisNicIt parser for an explanation of all available methods
# and examples.
#
class WhoisAdamsnamesTc < Base

property_supported :status do
@status ||= if available?
:available
else
:registered
end
end

property_supported :available? do
@available ||= !!(content.to_s =~ /is not registered/)
end

property_supported :registered? do
!available?
end


property_not_supported :created_on

property_not_supported :updated_on

property_not_supported :expires_on

end

end
end
end
122 changes: 122 additions & 0 deletions test/answer/parser/whois.adamsnames.tc_test.rb
@@ -0,0 +1,122 @@
require 'test_helper'
require 'whois/answer/parser/whois.adamsnames.tc.rb'

class AnswerParserWhoisAdamsnamesTcTest < Whois::Answer::Parser::TestCase

def setup
@klass = Whois::Answer::Parser::WhoisAdamsnamesTc
@host = "whois.adamsnames.tc"
end

end

class AnswerParserWhoisAdamsnamesTcGdTest < AnswerParserWhoisAdamsnamesTcTest

def test_status
assert_equal :registered,
@klass.new(load_part('/gd/registered.txt')).status
assert_equal :available,
@klass.new(load_part('/gd/available.txt')).status
end

def test_available?
assert !@klass.new(load_part('/gd/registered.txt')).available?
assert @klass.new(load_part('/gd/available.txt')).available?
end

def test_registered?
assert @klass.new(load_part('/gd/registered.txt')).registered?
assert !@klass.new(load_part('/gd/available.txt')).registered?
end


def test_created_on
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/gd/registered.txt')).created_on }
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/gd/available.txt')).created_on }
end

def test_updated_on
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/gd/registered.txt')).updated_on }
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/gd/available.txt')).updated_on }
end

def test_expires_on
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/gd/registered.txt')).expires_on }
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/gd/available.txt')).expires_on }
end

end

class AnswerParserWhoisAdamsnamesTcTcTest < AnswerParserWhoisAdamsnamesTcTest

def test_status
assert_equal :registered,
@klass.new(load_part('/tc/registered.txt')).status
assert_equal :available,
@klass.new(load_part('/tc/available.txt')).status
end

def test_available?
assert !@klass.new(load_part('/tc/registered.txt')).available?
assert @klass.new(load_part('/tc/available.txt')).available?
end

def test_registered?
assert @klass.new(load_part('/tc/registered.txt')).registered?
assert !@klass.new(load_part('/tc/available.txt')).registered?
end


def test_created_on
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/tc/registered.txt')).created_on }
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/tc/available.txt')).created_on }
end

def test_updated_on
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/tc/registered.txt')).updated_on }
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/tc/available.txt')).updated_on }
end

def test_expires_on
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/tc/registered.txt')).expires_on }
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/tc/available.txt')).expires_on }
end

end

class AnswerParserWhoisAdamsnamesTcVgTest < AnswerParserWhoisAdamsnamesTcTest

def test_status
assert_equal :registered,
@klass.new(load_part('/vg/registered.txt')).status
assert_equal :available,
@klass.new(load_part('/vg/available.txt')).status
end

def test_available?
assert !@klass.new(load_part('/vg/registered.txt')).available?
assert @klass.new(load_part('/vg/available.txt')).available?
end

def test_registered?
assert @klass.new(load_part('/vg/registered.txt')).registered?
assert !@klass.new(load_part('/vg/available.txt')).registered?
end


def test_created_on
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/vg/registered.txt')).created_on }
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/vg/available.txt')).created_on }
end

def test_updated_on
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/vg/registered.txt')).updated_on }
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/vg/available.txt')).updated_on }
end

def test_expires_on
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/vg/registered.txt')).expires_on }
assert_raise(Whois::PropertyNotSupported) { @klass.new(load_part('/vg/available.txt')).expires_on }
end

end
6 changes: 3 additions & 3 deletions test/list_tld
Expand Up @@ -124,7 +124,7 @@ fo;whois.ripe.net;nic.fo;u34jedzcq.fo
fr;whois.nic.fr;google.fr;u34jedzcq.fr
ga;;;
gb;;;
#Whois::Server.define :tld, ".gd", "whois.adamsnames.tc"
gd;whois.adamsnames.tc;google.gd;u34jedzcq.gd
ge;;;
gf;;;
#Whois::Server.define :tld, ".gg", "whois.gg"
Expand Down Expand Up @@ -260,7 +260,7 @@ sr;;;
sv;;;
sy;;;
sz;;;
#Whois::Server.define :tld, ".tc", "whois.adamsnames.tc"
tc;whois.adamsnames.tc;google.tc;u34jedzcq.tc
td;;;
#Whois::Server.define :tld, ".tf", "whois.nic.tf"
tg;;;
Expand Down Expand Up @@ -299,7 +299,7 @@ us;whois.nic.us;google.us;u34jedzcq.us
va;whois.ripe.net;vatican.va;u34jedzcq.va
vc;whois.afilias-grs.info;google.vc;u34jedzcq.vc
#Whois::Server.define :tld, ".ve", "whois.nic.ve"
#Whois::Server.define :tld, ".vg", "whois.adamsnames.tc"
vg;whois.adamsnames.tc;google.vg;u34jedzcq.vg
vi;;;
vn;;;
vu;;;
Expand Down
2 changes: 2 additions & 0 deletions test/testcases/responses/whois.adamsnames.tc/gd/available.txt
@@ -0,0 +1,2 @@
No
u34jedzcq.gd is not registered.
26 changes: 26 additions & 0 deletions test/testcases/responses/whois.adamsnames.tc/gd/registered.txt
@@ -0,0 +1,26 @@
Yes
google.gd is registered.

Domain Name: google.gd

Registrant, Technical Contact, Admin. Contact
Google, Inc.
1600 Amphitheatre Parkway, Mountain View, CA, 94043
United States
E-mail: dns-admin@google.com
Phone: +1 650 330 0100 x1005
Fax: +1 650 618 1499

Billing Contact
MarkMonitor
PMB 155, 10400 Overland Road, Boise, Idaho 83709
United States
E-mail: ccops@markmonitor.com
Phone: +1.2083895740
Fax: +1.208389 5771

Resource Records (2):
ns ns1.google.com
ns ns2.google.com


2 changes: 2 additions & 0 deletions test/testcases/responses/whois.adamsnames.tc/tc/available.txt
@@ -0,0 +1,2 @@
No
u34jedzcq.tc is not registered.
28 changes: 28 additions & 0 deletions test/testcases/responses/whois.adamsnames.tc/tc/registered.txt
@@ -0,0 +1,28 @@
Yes
google.tc is registered.

Domain Name: google.tc

Registrant, Technical Contact, Admin. Contact
Google, Inc.
1600 Amphitheatre Parkway, Mountain View, CA, 94043
United States
E-mail: dns-admin@google.com
Phone: +1 650 330 0100 x1005
Fax: +1 650 618 1499

Billing Contact
MarkMonitor
PMB 155, 10400 Overland Road, Boise, Idaho 83709
United States
E-mail: ccops@markmonitor.com
Phone: +1.2083895740
Fax: +1.208389 5771

Resource Records (4):
ns ns1.google.com
ns ns2.google.com
ns ns3.google.com
ns ns4.google.com


2 changes: 2 additions & 0 deletions test/testcases/responses/whois.adamsnames.tc/vg/available.txt
@@ -0,0 +1,2 @@
No
u34jedzcq.vg is not registered.
28 changes: 28 additions & 0 deletions test/testcases/responses/whois.adamsnames.tc/vg/registered.txt
@@ -0,0 +1,28 @@
Yes
google.vg is registered.

Domain Name: google.vg

Registrant, Technical Contact, Admin. Contact
Google, Inc.
1600 Amphitheatre Parkway, Mountain View, CA, 94043
United States
E-mail: dns-admin@google.com
Phone: +1 650 330 0100 x1005
Fax: +1 650 618 1499

Billing Contact
MarkMonitor
PMB 155, 10400 Overland Road, Boise, Idaho 83709
United States
E-mail: ccops@markmonitor.com
Phone: +1.2083895740
Fax: +1.208389 5771

Resource Records (4):
ns ns1.google.com
ns ns2.google.com
ns ns3.google.com
ns ns4.google.com


0 comments on commit 33955da

Please sign in to comment.