whois 1.0.9 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (46) hide show
  1. data/CHANGELOG.rdoc +100 -87
  2. data/Manifest +15 -2
  3. data/lib/whois/answer/parser/whois.cira.ca.rb +2 -1
  4. data/lib/whois/answer/parser/whois.cnnic.cn.rb +73 -0
  5. data/lib/whois/answer/parser/whois.cnnic.net.cn.rb +3 -40
  6. data/lib/whois/answer/parser/whois.dns.be.rb +75 -0
  7. data/lib/whois/answer/parser/whois.domain-registry.nl.rb +2 -1
  8. data/lib/whois/answer/parser/whois.domreg.lt.rb +1 -1
  9. data/lib/whois/answer/parser/whois.educause.edu.rb +2 -1
  10. data/lib/whois/answer/parser/whois.eu.rb +2 -1
  11. data/lib/whois/answer/parser/whois.nic.cd.rb +2 -1
  12. data/lib/whois/answer/parser/whois.nic.ch.rb +2 -1
  13. data/lib/whois/answer/parser/whois.nic.gl.rb +2 -1
  14. data/lib/whois/answer/parser/whois.nic.ly.rb +2 -1
  15. data/lib/whois/answer/parser/whois.nic.mu.rb +2 -1
  16. data/lib/whois/answer/parser/whois.nic.nu.rb +2 -1
  17. data/lib/whois/answer/parser/whois.nic.or.kr.rb +81 -0
  18. data/lib/whois/answer/parser/whois.nic.tl.rb +2 -1
  19. data/lib/whois/answer/parser/whois.nic.uk.rb +2 -1
  20. data/lib/whois/answer/parser/whois.nic.ve.rb +2 -1
  21. data/lib/whois/answer/parser/whois.register.bg.rb +3 -2
  22. data/lib/whois/answer/parser/whois.samoanic.ws.rb +2 -1
  23. data/lib/whois/answer/parser/whois.za.net.rb +2 -1
  24. data/lib/whois/answer/parser/whois.za.org.rb +2 -1
  25. data/lib/whois/client.rb +0 -1
  26. data/lib/whois/server/adapters/base.rb +4 -3
  27. data/lib/whois/version.rb +1 -1
  28. data/test/answer/parser/whois.cnnic.cn_test.rb +73 -0
  29. data/test/answer/parser/whois.cnnic.net.cn_test.rb +2 -64
  30. data/test/answer/parser/whois.dns.be_test.rb +65 -0
  31. data/test/answer/parser/whois.domreg.lt_test.rb +7 -0
  32. data/test/answer/parser/whois.eu_test.rb +2 -2
  33. data/test/answer/parser/whois.nic.or.kr_test.rb +64 -0
  34. data/test/answer/parser/whois.register.bg_test.rb +7 -0
  35. data/test/list_tld +2 -2
  36. data/test/testcases/responses/UTF8.txt +5 -0
  37. data/test/testcases/responses/{whois.cnnic.net.cn → whois.cnnic.cn}/available.txt +0 -0
  38. data/test/testcases/responses/{whois.cnnic.net.cn → whois.cnnic.cn}/registered.txt +0 -0
  39. data/test/testcases/responses/whois.dns.be/available.txt +41 -0
  40. data/test/testcases/responses/whois.dns.be/registered.txt +66 -0
  41. data/test/testcases/responses/whois.domreg.lt/property_nameservers_with_ip.txt +32 -0
  42. data/test/testcases/responses/whois.nic.or.kr/available.txt +10 -0
  43. data/test/testcases/responses/whois.nic.or.kr/registered.txt +48 -0
  44. data/test/testcases/responses/whois.register.bg/property_nameservers_with_ip.txt +42 -0
  45. data/whois.gemspec +5 -5
  46. metadata +24 -5
@@ -74,8 +74,9 @@ module Whois
74
74
  property_supported :nameservers do
75
75
  @nameservers ||= if content_for_scanner =~ /Name servers:\n((?:\s+([^\s]+)\s+([^\s]+)\n)+)/
76
76
  $1.split("\n").map { |value| value.split(" ").first }
77
+ else
78
+ []
77
79
  end
78
- @nameservers ||= []
79
80
  end
80
81
 
81
82
  end
@@ -0,0 +1,73 @@
1
+ #
2
+ # = Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ #
7
+ # Category:: Net
8
+ # Package:: Whois
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # License:: MIT License
11
+ #
12
+ #--
13
+ #
14
+ #++
15
+
16
+
17
+ require 'whois/answer/parser/base'
18
+
19
+
20
+ module Whois
21
+ class Answer
22
+ class Parser
23
+
24
+ #
25
+ # = whois.cnnic.cn parser
26
+ #
27
+ # Parser for the whois.cnnic.cn server.
28
+ #
29
+ # NOTE: This parser is just a stub and provides only a few basic methods
30
+ # to check for domain availability and get domain status.
31
+ # Please consider to contribute implementing missing methods.
32
+ # See WhoisNicIt parser for an explanation of all available methods
33
+ # and examples.
34
+ #
35
+ class WhoisCnnicCn < Base
36
+
37
+ property_supported :status do
38
+ @status ||= content_for_scanner.scan(/Domain Status:\s+(.*?)\n/).flatten
39
+ end
40
+
41
+ property_supported :available? do
42
+ @available ||= (content_for_scanner.strip == "no matching record")
43
+ end
44
+
45
+ property_supported :registered? do
46
+ !available?
47
+ end
48
+
49
+
50
+ property_supported :created_on do
51
+ @created_on ||= if content_for_scanner =~ /Registration Date:\s+(.*)\n/
52
+ Time.parse($1)
53
+ end
54
+ end
55
+
56
+ property_not_supported :updated_on
57
+
58
+ property_supported :expires_on do
59
+ @expires_on ||= if content_for_scanner =~ /Expiration Date:\s+(.*)\n/
60
+ Time.parse($1)
61
+ end
62
+ end
63
+
64
+
65
+ property_supported :nameservers do
66
+ @nameservers ||= content_for_scanner.scan(/Name Server:(.*)\n/).flatten.map(&:downcase)
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+ end
73
+ end
@@ -15,6 +15,7 @@
15
15
 
16
16
 
17
17
  require 'whois/answer/parser/base'
18
+ require 'whois/answer/parser/whois.cnnic.cn.rb'
18
19
 
19
20
 
20
21
  module Whois
@@ -25,47 +26,9 @@ module Whois
25
26
  # = whois.cnnic.net.cn parser
26
27
  #
27
28
  # Parser for the whois.cnnic.net.cn server.
29
+ # Aliases the whois.cnnic.cn parser.
28
30
  #
29
- # NOTE: This parser is just a stub and provides only a few basic methods
30
- # to check for domain availability and get domain status.
31
- # Please consider to contribute implementing missing methods.
32
- # See WhoisNicIt parser for an explanation of all available methods
33
- # and examples.
34
- #
35
- class WhoisCnnicNetCn < Base
36
-
37
- property_supported :status do
38
- @status ||= content_for_scanner.scan(/Domain Status:\s+(.*?)\n/).flatten
39
- end
40
-
41
- property_supported :available? do
42
- @available ||= (content_for_scanner.strip == "no matching record")
43
- end
44
-
45
- property_supported :registered? do
46
- !available?
47
- end
48
-
49
-
50
- property_supported :created_on do
51
- @created_on ||= if content_for_scanner =~ /Registration Date:\s+(.*)\n/
52
- Time.parse($1)
53
- end
54
- end
55
-
56
- property_not_supported :updated_on
57
-
58
- property_supported :expires_on do
59
- @expires_on ||= if content_for_scanner =~ /Expiration Date:\s+(.*)\n/
60
- Time.parse($1)
61
- end
62
- end
63
-
64
-
65
- property_supported :nameservers do
66
- @nameservers ||= content_for_scanner.scan(/Name Server:(.*)\n/).flatten.map(&:downcase)
67
- end
68
-
31
+ class WhoisCnnicNetCn < WhoisCnnicCn
69
32
  end
70
33
 
71
34
  end
@@ -0,0 +1,75 @@
1
+ #
2
+ # = Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ #
7
+ # Category:: Net
8
+ # Package:: Whois
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # License:: MIT License
11
+ #
12
+ #--
13
+ #
14
+ #++
15
+
16
+
17
+ require 'whois/answer/parser/base'
18
+
19
+
20
+ module Whois
21
+ class Answer
22
+ class Parser
23
+
24
+ #
25
+ # = whois.dns.be parser
26
+ #
27
+ # Parser for the whois.dns.be server.
28
+ #
29
+ # NOTE: This parser is just a stub and provides only a few basic methods
30
+ # to check for domain availability and get domain status.
31
+ # Please consider to contribute implementing missing methods.
32
+ # See WhoisNicIt parser for an explanation of all available methods
33
+ # and examples.
34
+ #
35
+ class WhoisDnsBe < Base
36
+
37
+ property_supported :status do
38
+ @status ||= if content_for_scanner =~ /Status:\s+(.+)\n/
39
+ $1
40
+ end
41
+ end
42
+
43
+ property_supported :available? do
44
+ @available ||= (status == "FREE")
45
+ end
46
+
47
+ property_supported :registered? do
48
+ !available?
49
+ end
50
+
51
+
52
+ property_supported :created_on do
53
+ @created_on ||= if content_for_scanner =~ /Registered:\s+(.+)\n/
54
+ Time.parse($1)
55
+ end
56
+ end
57
+
58
+ property_not_supported :updated_on
59
+
60
+ property_not_supported :expires_on
61
+
62
+
63
+ property_supported :nameservers do
64
+ @nameservers ||= if content_for_scanner =~ /Nameservers:\n((.+\n)+)\n/
65
+ $1.split("\n").map(&:strip)
66
+ else
67
+ []
68
+ end
69
+ end
70
+
71
+ end
72
+
73
+ end
74
+ end
75
+ end
@@ -69,8 +69,9 @@ module Whois
69
69
  property_supported :nameservers do
70
70
  @nameservers ||= if content_for_scanner =~ /Domain nameservers:\n((.+\n)+)\n/
71
71
  $1.split("\n").map(&:strip)
72
+ else
73
+ []
72
74
  end
73
- @nameservers ||= []
74
75
  end
75
76
 
76
77
  end
@@ -61,7 +61,7 @@ module Whois
61
61
 
62
62
 
63
63
  property_supported :nameservers do
64
- @nameservers ||= content_for_scanner.scan(/Nameserver:\s+(.*)\n/).flatten.map(&:strip)
64
+ @nameservers ||= content_for_scanner.scan(/Nameserver:\s+(.*)\n/).flatten.map { |value| value.split("\t").first }
65
65
  end
66
66
 
67
67
  end
@@ -73,8 +73,9 @@ module Whois
73
73
  property_supported :nameservers do
74
74
  @nameservers ||= if content_for_scanner =~ /Name Servers: \n((.+\n)+)\n/
75
75
  $1.split("\n").map { |value| value.split(" ").first.downcase }
76
+ else
77
+ []
76
78
  end
77
- @nameservers ||= []
78
79
  end
79
80
 
80
81
  end
@@ -72,8 +72,9 @@ module Whois
72
72
  property_supported :nameservers do
73
73
  @nameservers ||= if content_for_scanner =~ /Nameservers:\n((.+\n)+)\n/
74
74
  $1.split("\n").map { |value| value.strip.split(" ").first }
75
+ else
76
+ []
75
77
  end
76
- @nameservers ||= []
77
78
  end
78
79
 
79
80
  end
@@ -65,8 +65,9 @@ module Whois
65
65
  property_supported :nameservers do
66
66
  @nameservers ||= if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
67
67
  $1.split("\n").map { |value| value.strip.downcase }
68
+ else
69
+ []
68
70
  end
69
- @nameservers ||= []
70
71
  end
71
72
 
72
73
  end
@@ -67,8 +67,9 @@ module Whois
67
67
  property_supported :nameservers do
68
68
  @nameservers ||= if content_for_scanner =~ /Name servers:\n((.+\n)+)(?:\n|\z)/
69
69
  $1.split("\n").map { |value| value.split("\t").first }.uniq
70
+ else
71
+ []
70
72
  end
71
- @nameservers ||= []
72
73
  end
73
74
 
74
75
  end
@@ -74,8 +74,9 @@ module Whois
74
74
  property_supported :nameservers do
75
75
  @nameservers ||= if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
76
76
  $1.split("\n").map { |value| value.strip.downcase }
77
+ else
78
+ []
77
79
  end
78
- @nameservers ||= []
79
80
  end
80
81
 
81
82
  end
@@ -73,8 +73,9 @@ module Whois
73
73
  property_supported :nameservers do
74
74
  @nameservers ||= if content_for_scanner =~ /Domain servers in listed order:\n((.+\n)+)\n/
75
75
  $1.split("\n").map(&:strip)
76
+ else
77
+ []
76
78
  end
77
- @nameservers ||= []
78
79
  end
79
80
 
80
81
  end
@@ -74,8 +74,9 @@ module Whois
74
74
  property_supported :nameservers do
75
75
  @nameservers ||= if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
76
76
  $1.split("\n").map(&:strip)
77
+ else
78
+ []
77
79
  end
78
- @nameservers ||= []
79
80
  end
80
81
 
81
82
  end
@@ -71,8 +71,9 @@ module Whois
71
71
  property_supported :nameservers do
72
72
  @nameservers ||= if content_for_scanner =~ /Domain servers in listed order:(.*)Owner and Administrative Contact information for domains/m
73
73
  $1.split.map(&:strip)
74
+ else
75
+ []
74
76
  end
75
- @nameservers ||= []
76
77
  end
77
78
 
78
79
  end
@@ -0,0 +1,81 @@
1
+ #
2
+ # = Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ #
7
+ # Category:: Net
8
+ # Package:: Whois
9
+ # Author:: Simone Carletti <weppos@weppos.net>
10
+ # License:: MIT License
11
+ #
12
+ #--
13
+ #
14
+ #++
15
+
16
+
17
+ require 'whois/answer/parser/base'
18
+
19
+
20
+ module Whois
21
+ class Answer
22
+ class Parser
23
+
24
+ #
25
+ # = whois.nic.or.kr parser
26
+ #
27
+ # Parser for the whois.nic.or.kr server.
28
+ #
29
+ # NOTE: This parser is just a stub and provides only a few basic methods
30
+ # to check for domain availability and get domain status.
31
+ # Please consider to contribute implementing missing methods.
32
+ # See WhoisNicIt parser for an explanation of all available methods
33
+ # and examples.
34
+ #
35
+ class WhoisNicOrKz < Base
36
+
37
+ property_supported :status do
38
+ @status ||= if available?
39
+ :available
40
+ else
41
+ :registered
42
+ end
43
+ end
44
+
45
+ property_supported :available? do
46
+ @available ||= !!(content_for_scanner =~ /domain name is not registered/)
47
+ end
48
+
49
+ property_supported :registered? do
50
+ !available?
51
+ end
52
+
53
+
54
+ property_supported :created_on do
55
+ @created_on ||= if content_for_scanner =~ /Registered Date\s+:\s+(.*)\n/
56
+ Time.parse($1)
57
+ end
58
+ end
59
+
60
+ property_supported :updated_on do
61
+ @updated_on ||= if content_for_scanner =~ /Last updated Date\s+:\s+(.*)\n/
62
+ Time.parse($1)
63
+ end
64
+ end
65
+
66
+ property_supported :expires_on do
67
+ @expires_on ||= if content_for_scanner =~ /Expiration Date\s+:\s+(.*)\n/
68
+ Time.parse($1)
69
+ end
70
+ end
71
+
72
+
73
+ property_supported :nameservers do
74
+ @nameservers ||= content_for_scanner.scan(/\s+Host Name\s+:\s+(.*)\n/).flatten
75
+ end
76
+
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -73,8 +73,9 @@ module Whois
73
73
  property_supported :nameservers do
74
74
  @nameservers ||= if content_for_scanner =~ /Name Servers:\n((.+\n)+)\n/
75
75
  $1.split("\n").map(&:strip)
76
+ else
77
+ []
76
78
  end
77
- @nameservers ||= []
78
79
  end
79
80
 
80
81
  end
@@ -71,8 +71,9 @@ module Whois
71
71
  property_supported :nameservers do
72
72
  @nameservers ||= if content_for_scanner =~ /Name servers:\n((.+\n)+)\n/
73
73
  $1.split("\n").map { |value| value.split(" ").first.downcase }
74
+ else
75
+ []
74
76
  end
75
- @nameservers ||= []
76
77
  end
77
78
 
78
79