whois 1.0.10 → 1.0.11

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. data/CHANGELOG.rdoc +17 -0
  2. data/Manifest +24 -0
  3. data/Rakefile +15 -15
  4. data/lib/whois.rb +3 -3
  5. data/lib/whois/answer/parser/NOTES.txt +1 -0
  6. data/lib/whois/answer/parser/whois.aero.rb +5 -5
  7. data/lib/whois/answer/parser/whois.afilias-grs.info.rb +5 -5
  8. data/lib/whois/answer/parser/whois.ai.rb +73 -0
  9. data/lib/whois/answer/parser/whois.dns.lu.rb +72 -0
  10. data/lib/whois/answer/parser/whois.hkdnr.net.hk.rb +81 -0
  11. data/lib/whois/answer/parser/whois.nic.af.rb +83 -0
  12. data/lib/whois/answer/parser/whois.nic.ag.rb +77 -0
  13. data/lib/whois/answer/parser/whois.nic.asia.rb +1 -1
  14. data/lib/whois/answer/parser/whois.nic.mx.rb +87 -0
  15. data/lib/whois/answer/parser/whois.nic.or.kr.rb +1 -1
  16. data/lib/whois/answer/parser/whois.nic.ve.rb +2 -2
  17. data/lib/whois/answer/parser/whois.rotld.ro.rb +2 -4
  18. data/lib/whois/version.rb +2 -2
  19. data/test/answer/parser/whois.aero_test.rb +37 -17
  20. data/test/answer/parser/whois.afilias-grs.info_test.rb +63 -28
  21. data/test/answer/parser/whois.ai_test.rb +58 -0
  22. data/test/answer/parser/whois.dns.lu_test.rb +70 -0
  23. data/test/answer/parser/whois.hkdnr.net.hk_test.rb +77 -0
  24. data/test/answer/parser/whois.nic.af_test.rb +84 -0
  25. data/test/answer/parser/whois.nic.ag_test.rb +84 -0
  26. data/test/answer/parser/whois.nic.asia_test.rb +9 -4
  27. data/test/answer/parser/whois.nic.mx_test.rb +84 -0
  28. data/test/answer/parser/whois.nic.or.kr_test.rb +2 -2
  29. data/test/answer/parser/whois.nic.ve_test.rb +10 -5
  30. data/test/answer/parser/whois.rotld.ro_test.rb +9 -4
  31. data/test/list_tld +6 -6
  32. data/test/testcases/responses/whois.ai/available.txt +2 -0
  33. data/test/testcases/responses/whois.ai/registered.txt +59 -0
  34. data/test/testcases/responses/whois.dns.lu/available.txt +26 -0
  35. data/test/testcases/responses/whois.dns.lu/registered.txt +57 -0
  36. data/test/testcases/responses/whois.hkdnr.net.hk/available.txt +1 -0
  37. data/test/testcases/responses/whois.hkdnr.net.hk/registered.txt +96 -0
  38. data/test/testcases/responses/whois.nic.af/available.txt +13 -0
  39. data/test/testcases/responses/whois.nic.af/registered.txt +56 -0
  40. data/test/testcases/responses/whois.nic.ag/available.txt +1 -0
  41. data/test/testcases/responses/whois.nic.ag/registered.txt +100 -0
  42. data/test/testcases/responses/whois.nic.mx/available.txt +11 -0
  43. data/test/testcases/responses/whois.nic.mx/registered.txt +58 -0
  44. data/whois.gemspec +8 -8
  45. metadata +41 -5
data/CHANGELOG.rdoc CHANGED
@@ -1,6 +1,23 @@
1
1
  = Changelog
2
2
 
3
3
 
4
+ == Release 1.0.11
5
+
6
+ * NEW: Added simple .af TLD parser (whois.nic.af).
7
+
8
+ * NEW: Added simple .ag TLD parser (whois.nic.ag).
9
+
10
+ * NEW: Added simple .ai TLD parser (whois.ai).
11
+
12
+ * NEW: Added simple .hk TLD parser (whois.hkdnr.net.hk).
13
+
14
+ * NEW: Added simple .lu TLD parser (whois.dns.lu).
15
+
16
+ * NEW: Added simple .mx TLD parser (whois.nic.mx).
17
+
18
+ * FIXED: Fixed uninitialized constant error Whois::Answer::Parser::WhoisNicOrKr when trying to load the .kr parser.
19
+
20
+
4
21
  == Release 1.0.10
5
22
 
6
23
  * NEW: Added simple .kr TLD parser (whois.nic.or.kr).
data/Manifest CHANGED
@@ -28,6 +28,7 @@ lib/whois/answer/parser/whois.aeda.net.ae.rb
28
28
  lib/whois/answer/parser/whois.aero.rb
29
29
  lib/whois/answer/parser/whois.afilias-grs.info.rb
30
30
  lib/whois/answer/parser/whois.afilias.info.rb
31
+ lib/whois/answer/parser/whois.ai.rb
31
32
  lib/whois/answer/parser/whois.arnes.si.rb
32
33
  lib/whois/answer/parser/whois.biz.rb
33
34
  lib/whois/answer/parser/whois.cat.rb
@@ -38,6 +39,7 @@ lib/whois/answer/parser/whois.crsnic.net.rb
38
39
  lib/whois/answer/parser/whois.denic.de.rb
39
40
  lib/whois/answer/parser/whois.dk-hostmaster.dk.rb
40
41
  lib/whois/answer/parser/whois.dns.be.rb
42
+ lib/whois/answer/parser/whois.dns.lu.rb
41
43
  lib/whois/answer/parser/whois.domain-registry.nl.rb
42
44
  lib/whois/answer/parser/whois.domainregistry.ie.rb
43
45
  lib/whois/answer/parser/whois.domreg.lt.rb
@@ -45,12 +47,15 @@ lib/whois/answer/parser/whois.dotmobiregistry.net.rb
45
47
  lib/whois/answer/parser/whois.educause.edu.rb
46
48
  lib/whois/answer/parser/whois.eu.org.rb
47
49
  lib/whois/answer/parser/whois.eu.rb
50
+ lib/whois/answer/parser/whois.hkdnr.net.hk.rb
48
51
  lib/whois/answer/parser/whois.iana.org.rb
49
52
  lib/whois/answer/parser/whois.isnic.is.rb
50
53
  lib/whois/answer/parser/whois.meregistry.net.rb
51
54
  lib/whois/answer/parser/whois.museum.rb
52
55
  lib/whois/answer/parser/whois.nic-se.se.rb
53
56
  lib/whois/answer/parser/whois.nic.ac.rb
57
+ lib/whois/answer/parser/whois.nic.af.rb
58
+ lib/whois/answer/parser/whois.nic.ag.rb
54
59
  lib/whois/answer/parser/whois.nic.asia.rb
55
60
  lib/whois/answer/parser/whois.nic.at.rb
56
61
  lib/whois/answer/parser/whois.nic.cc.rb
@@ -67,6 +72,7 @@ lib/whois/answer/parser/whois.nic.it.rb
67
72
  lib/whois/answer/parser/whois.nic.lv.rb
68
73
  lib/whois/answer/parser/whois.nic.ly.rb
69
74
  lib/whois/answer/parser/whois.nic.mu.rb
75
+ lib/whois/answer/parser/whois.nic.mx.rb
70
76
  lib/whois/answer/parser/whois.nic.name.rb
71
77
  lib/whois/answer/parser/whois.nic.nu.rb
72
78
  lib/whois/answer/parser/whois.nic.or.kr.rb
@@ -120,6 +126,7 @@ test/answer/parser/whois.aeda.net.ae_test.rb
120
126
  test/answer/parser/whois.aero_test.rb
121
127
  test/answer/parser/whois.afilias-grs.info_test.rb
122
128
  test/answer/parser/whois.afilias.info_test.rb
129
+ test/answer/parser/whois.ai_test.rb
123
130
  test/answer/parser/whois.arnes.si_test.rb
124
131
  test/answer/parser/whois.biz_test.rb
125
132
  test/answer/parser/whois.cat_test.rb
@@ -130,6 +137,7 @@ test/answer/parser/whois.crsnic.net_test.rb
130
137
  test/answer/parser/whois.denic.de_test.rb
131
138
  test/answer/parser/whois.dk-hostmaster.dk_test.rb
132
139
  test/answer/parser/whois.dns.be_test.rb
140
+ test/answer/parser/whois.dns.lu_test.rb
133
141
  test/answer/parser/whois.domain-registry.nl_test.rb
134
142
  test/answer/parser/whois.domainregistry.ie_test.rb
135
143
  test/answer/parser/whois.domreg.lt_test.rb
@@ -137,12 +145,15 @@ test/answer/parser/whois.dotmobiregistry.net_test.rb
137
145
  test/answer/parser/whois.educause.edu_test.rb
138
146
  test/answer/parser/whois.eu.org_test.rb
139
147
  test/answer/parser/whois.eu_test.rb
148
+ test/answer/parser/whois.hkdnr.net.hk_test.rb
140
149
  test/answer/parser/whois.iana.org_test.rb
141
150
  test/answer/parser/whois.isnic.is_test.rb
142
151
  test/answer/parser/whois.meregistry.net_test.rb
143
152
  test/answer/parser/whois.museum_test.rb
144
153
  test/answer/parser/whois.nic-se.se_test.rb
145
154
  test/answer/parser/whois.nic.ac_test.rb
155
+ test/answer/parser/whois.nic.af_test.rb
156
+ test/answer/parser/whois.nic.ag_test.rb
146
157
  test/answer/parser/whois.nic.asia_test.rb
147
158
  test/answer/parser/whois.nic.at_test.rb
148
159
  test/answer/parser/whois.nic.cc_test.rb
@@ -159,6 +170,7 @@ test/answer/parser/whois.nic.it_test.rb
159
170
  test/answer/parser/whois.nic.lv_test.rb
160
171
  test/answer/parser/whois.nic.ly_test.rb
161
172
  test/answer/parser/whois.nic.mu_test.rb
173
+ test/answer/parser/whois.nic.mx_test.rb
162
174
  test/answer/parser/whois.nic.name_test.rb
163
175
  test/answer/parser/whois.nic.nu_test.rb
164
176
  test/answer/parser/whois.nic.or.kr_test.rb
@@ -236,6 +248,8 @@ test/testcases/responses/whois.afilias-grs.info/vc/available.txt
236
248
  test/testcases/responses/whois.afilias-grs.info/vc/registered.txt
237
249
  test/testcases/responses/whois.afilias.info/available.txt
238
250
  test/testcases/responses/whois.afilias.info/registered.txt
251
+ test/testcases/responses/whois.ai/available.txt
252
+ test/testcases/responses/whois.ai/registered.txt
239
253
  test/testcases/responses/whois.arnes.si/available.txt
240
254
  test/testcases/responses/whois.arnes.si/registered.txt
241
255
  test/testcases/responses/whois.biz/available.txt
@@ -260,6 +274,8 @@ test/testcases/responses/whois.dk-hostmaster.dk/available.txt
260
274
  test/testcases/responses/whois.dk-hostmaster.dk/registered.txt
261
275
  test/testcases/responses/whois.dns.be/available.txt
262
276
  test/testcases/responses/whois.dns.be/registered.txt
277
+ test/testcases/responses/whois.dns.lu/available.txt
278
+ test/testcases/responses/whois.dns.lu/registered.txt
263
279
  test/testcases/responses/whois.domain-registry.nl/available.txt
264
280
  test/testcases/responses/whois.domain-registry.nl/registered.txt
265
281
  test/testcases/responses/whois.domainregistry.ie/available.txt
@@ -276,6 +292,8 @@ test/testcases/responses/whois.eu.org/registered.txt
276
292
  test/testcases/responses/whois.eu/available.txt
277
293
  test/testcases/responses/whois.eu/nameservers_with_ip.txt
278
294
  test/testcases/responses/whois.eu/registered.txt
295
+ test/testcases/responses/whois.hkdnr.net.hk/available.txt
296
+ test/testcases/responses/whois.hkdnr.net.hk/registered.txt
279
297
  test/testcases/responses/whois.iana.org/MULTIPLE.txt
280
298
  test/testcases/responses/whois.iana.org/available.txt
281
299
  test/testcases/responses/whois.iana.org/registered.txt
@@ -290,6 +308,10 @@ test/testcases/responses/whois.nic-se.se/nameservers_with_ip.txt
290
308
  test/testcases/responses/whois.nic-se.se/registered.txt
291
309
  test/testcases/responses/whois.nic.ac/available.txt
292
310
  test/testcases/responses/whois.nic.ac/registered.txt
311
+ test/testcases/responses/whois.nic.af/available.txt
312
+ test/testcases/responses/whois.nic.af/registered.txt
313
+ test/testcases/responses/whois.nic.ag/available.txt
314
+ test/testcases/responses/whois.nic.ag/registered.txt
293
315
  test/testcases/responses/whois.nic.asia/available.txt
294
316
  test/testcases/responses/whois.nic.asia/registered.txt
295
317
  test/testcases/responses/whois.nic.at/available.txt
@@ -340,6 +362,8 @@ test/testcases/responses/whois.nic.mu/ki/available.txt
340
362
  test/testcases/responses/whois.nic.mu/ki/registered.txt
341
363
  test/testcases/responses/whois.nic.mu/mu/available.txt
342
364
  test/testcases/responses/whois.nic.mu/mu/registered.txt
365
+ test/testcases/responses/whois.nic.mx/available.txt
366
+ test/testcases/responses/whois.nic.mx/registered.txt
343
367
  test/testcases/responses/whois.nic.name/available.txt
344
368
  test/testcases/responses/whois.nic.name/registered.txt
345
369
  test/testcases/responses/whois.nic.name/reserved.txt
data/Rakefile CHANGED
@@ -1,27 +1,27 @@
1
- $:.unshift(File.dirname(__FILE__) + "/lib")
2
-
3
- require 'whois'
4
- require 'rubygems'
5
- require 'rake'
6
- require 'echoe'
1
+ require "rubygems"
2
+ require "rake"
3
+ require "echoe"
7
4
  begin
8
- require 'hanna/rdoctask'
5
+ require "hanna/rdoctask"
9
6
  hanna = false
10
7
  rescue LoadError
11
- require 'rake/rdoctask'
8
+ require "rake/rdoctask"
12
9
  hanna = true
13
10
  end
14
11
 
12
+ $:.unshift(File.dirname(__FILE__) + "/lib")
13
+ require "whois"
14
+
15
15
  # Common package properties
16
- PKG_NAME = ENV['PKG_NAME'] || Whois::GEM
17
- PKG_VERSION = ENV['PKG_VERSION'] || Whois::VERSION
18
- RUBYFORGE_PROJECT = 'whois'
16
+ PKG_NAME = ENV["PKG_NAME"] || Whois::GEM
17
+ PKG_VERSION = ENV["PKG_VERSION"] || Whois::VERSION
18
+ RUBYFORGE_PROJECT = "whois"
19
19
 
20
20
  if ENV['SNAPSHOT'].to_i == 1
21
21
  PKG_VERSION << "." << Time.now.utc.strftime("%Y%m%d%H%M%S")
22
22
  end
23
-
24
-
23
+
24
+
25
25
  Echoe.new(PKG_NAME, PKG_VERSION) do |p|
26
26
  p.author = "Simone Carletti"
27
27
  p.email = "weppos@weppos.net"
@@ -37,7 +37,7 @@ Echoe.new(PKG_NAME, PKG_VERSION) do |p|
37
37
  p.need_zip = true
38
38
 
39
39
  p.development_dependencies += ["rake 0.8.7",
40
- "echoe 4.1",
40
+ "echoe 4.3",
41
41
  "mocha 0.9.8"]
42
42
 
43
43
  p.rdoc_options = []
@@ -53,7 +53,7 @@ task :console do
53
53
  end
54
54
 
55
55
  begin
56
- require 'code_statistics'
56
+ require "code_statistics"
57
57
  desc "Show library's code statistics"
58
58
  task :stats do
59
59
  CodeStatistics.new(["Whois", "lib"],
data/lib/whois.rb CHANGED
@@ -24,9 +24,9 @@ require 'whois/answer'
24
24
 
25
25
  module Whois
26
26
 
27
- NAME = 'Whois'
28
- GEM = 'whois'
29
- AUTHORS = ['Simone Carletti <weppos@weppos.net>']
27
+ NAME = "Whois"
28
+ GEM = "whois"
29
+ AUTHORS = ["Simone Carletti <weppos@weppos.net>"]
30
30
 
31
31
 
32
32
  # Queries the right whois server for <tt>qstring</tt> and returns
@@ -6,6 +6,7 @@ whois.dotmobyregistry.net (.mobi)
6
6
  whois.afilias.info (.info)
7
7
  whois.afilias-grs.info (.bz, .gi, .hn, .lc, .mn, .sc, .vc)
8
8
  whois.aero (.aero)
9
+ whois.nic.af (.af)
9
10
 
10
11
 
11
12
  whois.museum (.museum)
@@ -35,8 +35,8 @@ module Whois
35
35
  class WhoisAero < Base
36
36
 
37
37
  property_supported :status do
38
- @status ||= if content_for_scanner =~ /Domain Status:(.*?)\n+/
39
- $1.downcase.to_sym
38
+ @status ||= if content_for_scanner =~ /Domain Status:(.*?)\n/
39
+ $1
40
40
  end
41
41
  end
42
42
 
@@ -50,19 +50,19 @@ module Whois
50
50
 
51
51
 
52
52
  property_supported :created_on do
53
- @created_on ||= if content_for_scanner =~ /Created On:(.*?)\n+/
53
+ @created_on ||= if content_for_scanner =~ /Created On:(.*?)\n/
54
54
  Time.parse($1)
55
55
  end
56
56
  end
57
57
 
58
58
  property_supported :updated_on do
59
- @updated_on ||= if content_for_scanner =~ /Updated On:(.*?)\n+/
59
+ @updated_on ||= if content_for_scanner =~ /Updated On:(.*?)\n/
60
60
  Time.parse($1)
61
61
  end
62
62
  end
63
63
 
64
64
  property_supported :expires_on do
65
- @expires_on ||= if content_for_scanner =~ /Expires On:(.*?)\n+/
65
+ @expires_on ||= if content_for_scanner =~ /Expires On:(.*?)\n/
66
66
  Time.parse($1)
67
67
  end
68
68
  end
@@ -48,19 +48,19 @@ module Whois
48
48
 
49
49
 
50
50
  property_supported :created_on do
51
- @created_on ||= if content_for_scanner =~ /Created On:(.*?)\n+/
51
+ @created_on ||= if content_for_scanner =~ /Created On:(.*?)\n/
52
52
  Time.parse($1)
53
53
  end
54
54
  end
55
-
55
+
56
56
  property_supported :updated_on do
57
- @updated_on ||= if content_for_scanner =~ /Last Updated On:(.*?)\n+/
57
+ @updated_on ||= if content_for_scanner =~ /Last Updated On:(.*?)\n/
58
58
  Time.parse($1)
59
59
  end
60
60
  end
61
-
61
+
62
62
  property_supported :expires_on do
63
- @expires_on ||= if content_for_scanner =~ /Expiration Date:(.*?)\n+/
63
+ @expires_on ||= if content_for_scanner =~ /Expiration Date:(.*?)\n/
64
64
  Time.parse($1)
65
65
  end
66
66
  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.ai parser
26
+ #
27
+ # Parser for the whois.ai 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 WhoisAi < Base
36
+
37
+ property_supported :status do
38
+ if available?
39
+ :available
40
+ else
41
+ :registered
42
+ end
43
+ end
44
+
45
+ property_supported :available? do
46
+ @available ||= !!(content_for_scanner =~ /Domain (.+?) not registred/)
47
+ end
48
+
49
+ property_supported :registered? do
50
+ !available?
51
+ end
52
+
53
+
54
+ property_not_supported :created_on
55
+
56
+ property_not_supported :updated_on
57
+
58
+ property_not_supported :expires_on
59
+
60
+
61
+ property_supported :nameservers do
62
+ @nameservers ||= if content_for_scanner =~ /Nameservers\n((.+\n)+)\n/
63
+ $1.split("\n").select { |e| e =~ /Server Hostname/ }.map { |value| value.split(":").last.strip }
64
+ else
65
+ []
66
+ end
67
+ end
68
+
69
+ end
70
+
71
+ end
72
+ end
73
+ end
@@ -0,0 +1,72 @@
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.lu parser
26
+ #
27
+ # Parser for the whois.dns.lu 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 WhoisDnsLu < Base
36
+
37
+ property_supported :status do
38
+ @status ||= if content_for_scanner =~ /domaintype:\s+(.*)\n/
39
+ $1
40
+ end
41
+ end
42
+
43
+ property_supported :available? do
44
+ @available ||= !!(content_for_scanner =~ /% No such domain/)
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
+ # Force the parser to use the dd/mm/yyyy format.
55
+ Time.utc(*$1.split("/").reverse)
56
+ end
57
+ end
58
+
59
+ property_not_supported :updated_on
60
+
61
+ property_not_supported :expires_on
62
+
63
+
64
+ property_supported :nameservers do
65
+ @nameservers ||= content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten
66
+ end
67
+
68
+ end
69
+
70
+ end
71
+ end
72
+ 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.hkdnr.net.hk parser
26
+ #
27
+ # Parser for the whois.hkdnr.net.hk 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 WhoisHkdnrNetHk < 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.strip == "Domain Not Found")
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 =~ /Domain Name Commencement Date:\s(.*?)\n/
56
+ Time.parse($1)
57
+ end
58
+ end
59
+
60
+ property_not_supported :updated_on
61
+
62
+ property_supported :expires_on do
63
+ @expires_on ||= if content_for_scanner =~ /Expiry Date:\s(.*?)\n/
64
+ Time.parse($1)
65
+ end
66
+ end
67
+
68
+
69
+ property_supported :nameservers do
70
+ @nameservers ||= if content_for_scanner =~ /Name Servers Information:\n\n((.+\n)+)\n/
71
+ $1.split("\n").map { |value| value.strip.downcase }
72
+ else
73
+ []
74
+ end
75
+ end
76
+
77
+ end
78
+
79
+ end
80
+ end
81
+ end