Skip to content

Commit

Permalink
Added simple .tr TLD parser (whois.nic.tr).
Browse files Browse the repository at this point in the history
  • Loading branch information
weppos committed May 28, 2010
1 parent 6e2323d commit adfa56a
Show file tree
Hide file tree
Showing 7 changed files with 231 additions and 1 deletion.
2 changes: 2 additions & 0 deletions CHANGELOG.rdoc
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@

* NEW: Added simple .ht TLD parser (whois.nic.ht).

* NEW: Added simple .tr TLD parser (whois.nic.tr).


== Release 1.1.7

Expand Down
5 changes: 5 additions & 0 deletions lib/whois/answer/parser/NOTES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -16,3 +16,8 @@ whois.cat (.cat)
== Property Proposals

* changed_by


== Feature Proposals

* .org -> LIMIT EXCEEDED
83 changes: 83 additions & 0 deletions lib/whois/answer/parser/whois.nic.tr.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
#
# = 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.nic.tr parser
#
# Parser for the whois.nic.tr 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 WhoisNicTr < Base

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

property_supported :available? do
@available ||= !!(content_for_scanner =~ /No match found for "(.*?)"/)
end

property_supported :registered? do
@registered ||= !available?
end


property_supported :created_on do
@created_on ||= if content_for_scanner =~ /Created on\.+:\s+(.*)\n/
time = Time.parse($1)
Time.utc(time.year, time.month, time.day)
end
end

property_not_supported :updated_on

property_supported :expires_on do
@expires_on ||= if content_for_scanner =~ /Expires on\.+:\s+(.*)\n/
time = Time.parse($1)
Time.utc(time.year, time.month, time.day)
end
end


property_supported :nameservers do
@nameservers ||= if content_for_scanner =~ / Domain Servers:\n((.+\n)+)\n/
$1.split("\n")
else
[]
end
end

end

end
end
end
91 changes: 91 additions & 0 deletions test/answer/parser/whois.nic.tr_test.rb
Original file line number Diff line number Diff line change
@@ -0,0 +1,91 @@
require 'test_helper'
require 'whois/answer/parser/whois.nic.tr'

class AnswerParserWhoisNicTrTest < Whois::Answer::Parser::TestCase

def setup
@klass = Whois::Answer::Parser::WhoisNicTr
@host = "whois.nic.tr"
end


def test_status
parser = @klass.new(load_part('/registered.txt'))
expected = :registered
assert_equal expected, parser.status
assert_equal expected, parser.instance_eval { @status }

parser = @klass.new(load_part('/available.txt'))
expected = :available
assert_equal expected, parser.status
assert_equal expected, parser.instance_eval { @status }
end

def test_available?
parser = @klass.new(load_part('/registered.txt'))
expected = false
assert_equal expected, parser.available?
assert_equal expected, parser.instance_eval { @available }

parser = @klass.new(load_part('/available.txt'))
expected = true
assert_equal expected, parser.available?
assert_equal expected, parser.instance_eval { @available }
end

def test_registered?
parser = @klass.new(load_part('/registered.txt'))
expected = true
assert_equal expected, parser.registered?
assert_equal expected, parser.instance_eval { @registered }

parser = @klass.new(load_part('/available.txt'))
expected = false
assert_equal expected, parser.registered?
assert_equal expected, parser.instance_eval { @registered }
end


def test_created_on
parser = @klass.new(load_part('/registered.txt'))
expected = Time.utc(2001, 8, 23)
assert_equal expected, parser.created_on
assert_equal expected, parser.instance_eval { @created_on }

parser = @klass.new(load_part('/available.txt'))
expected = nil
assert_equal expected, parser.created_on
assert_equal expected, parser.instance_eval { @created_on }
end

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

def test_expires_on
parser = @klass.new(load_part('/registered.txt'))
expected = Time.utc(2010, 8, 22)
assert_equal expected, parser.expires_on
assert_equal expected, parser.instance_eval { @expires_on }

parser = @klass.new(load_part('/available.txt'))
expected = nil
assert_equal expected, parser.expires_on
assert_equal expected, parser.instance_eval { @expires_on }
end


def test_nameservers
parser = @klass.new(load_part('/registered.txt'))
expected = %w( ns1.google.com ns2.google.com )
assert_equal expected, parser.nameservers
assert_equal expected, parser.instance_eval { @nameservers }

parser = @klass.new(load_part('/available.txt'))
expected = %w()
assert_equal expected, parser.nameservers
assert_equal expected, parser.instance_eval { @nameservers }
end

end
2 changes: 1 addition & 1 deletion test/list_tld
Original file line number Diff line number Diff line change
Expand Up @@ -272,7 +272,7 @@ tl;whois.nic.tl;thinkcode.tl;u34jedzcq.tl
tn;;;
#Whois::Server.define :tld, ".to", "whois.tonic.to"
tp;;;
#Whois::Server.define :tld, ".tr", "whois.nic.tr"
tr;whois.nic.tr;google.com.tr;u34jedzcq.com.tr
tt;;;
tv;whois.nic.tv;thinkcode.tv;u34jedzcq.tv
#Whois::Server.define :tld, ".tw", "whois.twnic.net"
Expand Down
1 change: 1 addition & 0 deletions test/testcases/responses/whois.nic.tr/available.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
No match found for "u34jedzcq.com.tr"
48 changes: 48 additions & 0 deletions test/testcases/responses/whois.nic.tr/registered.txt
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
** Registrant:
Google Inc.
2400 E. Bayshore Pkwy Mountain View CA 94043

Out of Turkey,
United States of America
dns-admin@google.com
+ 901-650-3300100-
+ 901-650-6188571


** Administrative Contact:
NIC Handle : mi154-metu
Organization Name : MarkMonitor, Inc
Address : Hidden upon user request
Phone : Hidden upon user request
Fax : Hidden upon user request


** Technical Contact:
NIC Handle : btl1-metu
Organization Name : BER�L TEKNOLOJ� LTD. �T�.
Address : Ceyhun Atuf Kansu Cad. Bayraktar �� Merkezi
No:114 G-4 Balgat
Ankara,06520
T�rkiye
Phone : + 90-312-4733035-
Fax : + 90-312-4733039-


** Billing Contact:
NIC Handle : btl1-metu
Organization Name : BER�L TEKNOLOJ� LTD. �T�.
Address : Ceyhun Atuf Kansu Cad. Bayraktar �� Merkezi
No:114 G-4 Balgat
Ankara,06520
T�rkiye
Phone : + 90-312-4733035-
Fax : + 90-312-4733039-


** Domain Servers:
ns1.google.com
ns2.google.com

** Additional Info:
Created on..............: 2001-Aug-23.
Expires on..............: 2010-Aug-22.

0 comments on commit adfa56a

Please sign in to comment.