whois 3.4.4 → 3.4.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (32) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +32 -7
  3. data/README.md +3 -5
  4. data/data/tld.json +36 -0
  5. data/lib/whois/record/parser/base_afilias.rb +5 -5
  6. data/lib/whois/record/parser/base_afilias2.rb +141 -0
  7. data/lib/whois/record/parser/base_cocca2.rb +1 -1
  8. data/lib/whois/record/parser/base_icann_compliant.rb +1 -1
  9. data/lib/whois/record/parser/base_shared2.rb +1 -1
  10. data/lib/whois/record/parser/kero.yachay.pe.rb +3 -0
  11. data/lib/whois/record/parser/whois.afilias.info.rb +7 -2
  12. data/lib/whois/record/parser/whois.ati.tn.rb +8 -9
  13. data/lib/whois/record/parser/whois.denic.de.rb +3 -3
  14. data/lib/whois/record/parser/whois.networksolutions.com.rb +0 -1
  15. data/lib/whois/record/parser/whois.nic.cd.rb +5 -2
  16. data/lib/whois/record/parser/whois.nic.ec.rb +8 -50
  17. data/lib/whois/record/parser/whois.nic.lv.rb +2 -0
  18. data/lib/whois/record/parser/whois.nic.org.uy.rb +13 -14
  19. data/lib/whois/record/parser/whois.nic.tr.rb +21 -4
  20. data/lib/whois/record/parser/whois.nic.uk.rb +1 -1
  21. data/lib/whois/record/parser/whois.nic.xxx.rb +7 -18
  22. data/lib/whois/record/parser/whois.pandi.or.id.rb +4 -58
  23. data/lib/whois/record/parser/whois.pir.org.rb +3 -4
  24. data/lib/whois/record/parser/whois.registry.om.rb +3 -0
  25. data/lib/whois/record/parser/whois.rrpproxy.net.rb +5 -81
  26. data/lib/whois/record/parser/whois.yoursrs.com.rb +1 -11
  27. data/lib/whois/record/scanners/base_afilias.rb +5 -1
  28. data/lib/whois/record/scanners/base_icann_compliant.rb +1 -1
  29. data/lib/whois/record/scanners/whois.yoursrs.com.rb +1 -1
  30. data/lib/whois/version.rb +1 -1
  31. data/whois.gemspec +3 -3
  32. metadata +3 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 662ae9174061dcf02a6648f94d34c11115553366
4
- data.tar.gz: b2b14a08f9c64bb27445cc6292210e0adf1d170b
3
+ metadata.gz: ca8a304b1268c40f3c297867bee7979d0bae483c
4
+ data.tar.gz: 7747603cc0d7d1aaf375ec0b9ce3598ff8778cd9
5
5
  SHA512:
6
- metadata.gz: 0b3c2e932d5edf85788ad00c58913d9e4bae6313284f1f34f0a62514a2640fbc8372ddde4557985cb41e650a3274c2ecd7b5fae9b37927a8ea594989095e3fd0
7
- data.tar.gz: 091f659126d9f64780d434c37ee0193788395e39d52b85ae177ad28f9983aa328aaac7bc0b68537c9eeaee91251c98dd368dc882832e4e752da63e73af9efce5
6
+ metadata.gz: fd0d822ba6741e485a8c6d64e8aba78101f2786c211200184e4f8eef3737fac23748357adf716a24c05f7e76ee211c9150201dfdbe7077a5ea26c46b640104b0
7
+ data.tar.gz: 473a15ae1c5c8ed04ee183b3f7e599a296db12e05f98d375e8c1b9f9d3fca4ff4bdd60a708776e16c398d9a7a63af4b68e1e10bbaf9603ef9d15daff2f7d024c
data/CHANGELOG.md CHANGED
@@ -1,6 +1,31 @@
1
1
  # Changelog
2
2
 
3
3
 
4
+ ## Release 3.4.5
5
+
6
+ - SERVER: Added new IDN TLDs: .XN--3BST00M, .XN--3DS443G, .XN--55QX5D, .XN--6FRZ82G, .XN--6QQ986B3XL, .XN--FIQ228C5HS, .XN--FIQ64B, .XN--IO0A7I, .XN--CG4BKI, .XN--MGBAB2BD, .XN--55QW42G, .XN--ZFR164B
7
+
8
+ - NEW: Added :invalid check for whois.nic.tr (GH-302).
9
+
10
+ - FIXED: kero.yachay.pe crashes when the status is `suspended`.
11
+
12
+ - FIXED: whois.nic.cd crashes because the registry is no longer returning a status.
13
+
14
+ - FIXED: whois.nic.org.uy crashes when update date is empty.
15
+
16
+ - FIXED: whois.nic.cx crashes when update date is empty.
17
+
18
+ - FIXED: whois.ati.tn crashes when contact update is "None".
19
+
20
+ - CHANGED: Updated whois.nic.ec parser to the new response format.
21
+
22
+ - CHANGED: Updated whois.pandi.or.id parser to the new response format.
23
+
24
+ - CHANGED: Updated whois.rrpproxy.net parser to the new response format.
25
+
26
+ - CHANGED: Afilias is using a slightly different whois response for some TLDs, including .INFO and .XXX (GH-304)
27
+
28
+
4
29
  ## Release 3.4.4
5
30
 
6
31
  - CHANGED: Updated IBC parser and fixtures (.IO, .AC, .SH and .TM).
@@ -197,7 +222,7 @@
197
222
 
198
223
  ## Release 3.1.2
199
224
 
200
- - NEW: Added full whois.comlaude.com parser (GH-222). [Thanks @delwyn]
225
+ - NEW: Added full whois.comlaude.com parser (GH-222). [Thanks @delwyn]
201
226
 
202
227
  - NEW: Added #domain, #domain_id to whois.tcinet.ru.
203
228
 
@@ -952,7 +977,7 @@
952
977
  - CHANGED: Renamed Whois::Server::Adapters::Base#append_to_buffer to buffer_append.
953
978
 
954
979
  - CHANGED: Whois::Answer::Parser::Base#response_throttled? and Whois::Answer::Parser::Base#invalid?
955
- are not defined by default. Define the method in the implementation,
980
+ are not defined by default. Define the method in the implementation,
956
981
  and Whois::Answer::Parser will automatically use it.
957
982
 
958
983
  - CHANGED: Removed &block from method definition to avoid creating block objects when yield is used (GH-66)
@@ -1235,7 +1260,7 @@ WARNING: Whois >= 1.5.0 requires Ruby 1.8.7 or newer.
1235
1260
 
1236
1261
  - FIXED: Property cache is missing for some parsers (GH-18)
1237
1262
 
1238
- - FIXED: In some circumstances the whois.jprs.js parser may raise
1263
+ - FIXED: In some circumstances the whois.jprs.js parser may raise
1239
1264
  an Argument out of range error trying to parse the #updated_on property.
1240
1265
 
1241
1266
  - FIXED: The whois.nic.uk parser fails to parse #nameservers when
@@ -1288,7 +1313,7 @@ WARNING: Whois >= 1.5.0 requires Ruby 1.8.7 or newer.
1288
1313
 
1289
1314
  ## Release 1.3.8
1290
1315
 
1291
- - FIXED: The Verisign WHOIS adapter crashes in some rare circumstances
1316
+ - FIXED: The Verisign WHOIS adapter crashes in some rare circumstances
1292
1317
  when the response from the Verisign database returns a "not defined" value
1293
1318
  for the Referral Whois Server (GH-42)
1294
1319
 
@@ -1785,8 +1810,8 @@ WARNING: Whois >= 1.5.0 requires Ruby 1.8.7 or newer.
1785
1810
 
1786
1811
  - NEW: .ac TLD parser (whois.nic.ac).
1787
1812
 
1788
- - NEW: Added ability to flag a property as :defined, :implemented and :supported.
1789
- Parsers now can mark a property as supported or not supported using
1813
+ - NEW: Added ability to flag a property as :defined, :implemented and :supported.
1814
+ Parsers now can mark a property as supported or not supported using
1790
1815
  'property_supported' and 'property_not_supported' methods
1791
1816
  in order to distinguish between properties not supported by the answer
1792
1817
  and methods that still need to be implemented because the parser is incomplete.
@@ -1945,7 +1970,7 @@ WARNING: Whois >= 1.5.0 requires Ruby 1.8.7 or newer.
1945
1970
  - CHANGED: A whois query now returns a custom Whois::Response object instead of a simple string.
1946
1971
  The previous interface is still supported, so you can continue to compare the response with Strings
1947
1972
  but this behavior will be deprecated in a future release.
1948
-
1973
+
1949
1974
  r = Whois::query("domain.com")
1950
1975
  # supported but deprecated in a future version
1951
1976
  r ## "NOT FOUND"
data/README.md CHANGED
@@ -1,12 +1,10 @@
1
1
  # Whois
2
2
 
3
- <tt>Whois</tt> is an intelligent pure Ruby WHOIS client and parser.
3
+ <tt>Whois</tt> is an intelligent pure Ruby WHOIS client and parser.
4
4
 
5
- [![Build Status](https://secure.travis-ci.org/weppos/whois.png)](http://travis-ci.org/weppos/whois)
6
-
7
- <tt>Whois</tt> is a OS-independent library and doesn't require any external binaries or C libraries: it is a 100% Ruby software.
5
+ This library was extracted from [RoboWhois](https://www.robowhois.com/) and [RoboDomain](http://robodomain.com/). It has been performing queries in production since July 2009.
8
6
 
9
- This library was created to power [RoboWhois](https://www.robowhois.com/) and [RoboDomain](https://www.robodomain.com/). It has been performing queries in production since July 2009.
7
+ [![Build Status](https://secure.travis-ci.org/weppos/whois.png)](http://travis-ci.org/weppos/whois)
10
8
 
11
9
 
12
10
  ## Donate a coffee
data/data/tld.json CHANGED
@@ -1317,5 +1317,41 @@
1317
1317
  },
1318
1318
  ".xn--ygbi2ammx": {
1319
1319
  "host": "whois.pnina.ps"
1320
+ },
1321
+ ".xn--3bst00m": {
1322
+ "host": "whois.gtld.knet.cn"
1323
+ },
1324
+ ".xn--3ds443g": {
1325
+ "host": "whois.afilias-srs.net"
1326
+ },
1327
+ ".xn--55qx5d": {
1328
+ "host": "whois.ngtld.cn"
1329
+ },
1330
+ ".xn--6frz82g": {
1331
+ "host": "whois.afilias.net"
1332
+ },
1333
+ ".xn--6qq986b3xl": {
1334
+ "host": "whois.gtld.knet.cn"
1335
+ },
1336
+ ".xn--fiq228c5hs": {
1337
+ "host": "whois.afilias-srs.net"
1338
+ },
1339
+ ".xn--fiq64b": {
1340
+ "host": "whois.gtld.knet.cn"
1341
+ },
1342
+ ".xn--io0a7i": {
1343
+ "host": "whois.ngtld.cn"
1344
+ },
1345
+ ".xn--cg4bki": {
1346
+ "host": "whois.kr"
1347
+ },
1348
+ ".xn--mgbab2bd": {
1349
+ "host": "whois.bazaar.coreregistry.net"
1350
+ },
1351
+ ".xn--55qw42g": {
1352
+ "host": "whois.conac.cn"
1353
+ },
1354
+ ".xn--zfr164b": {
1355
+ "host": "whois.conac.cn"
1320
1356
  }
1321
1357
  }
@@ -72,12 +72,12 @@ module Whois
72
72
 
73
73
  property_supported :registrar do
74
74
  node("Sponsoring Registrar") do |value|
75
- parts = decompose_registrar(value) ||
75
+ id, name = decompose_registrar(value) ||
76
76
  Whois.bug!(ParserError, "Unknown registrar format `#{value}'")
77
77
 
78
78
  Record::Registrar.new(
79
- id: parts[0],
80
- name: parts[1]
79
+ id: id,
80
+ name: name
81
81
  )
82
82
  end
83
83
  end
@@ -106,7 +106,7 @@ module Whois
106
106
 
107
107
  def build_contact(element, type)
108
108
  node("#{element} ID") do
109
- address = (1..3).
109
+ address = ["", "1", "2", "3"].
110
110
  map { |i| node("#{element} Street#{i}") }.
111
111
  delete_if { |i| i.nil? || i.empty? }.
112
112
  join("\n")
@@ -122,7 +122,7 @@ module Whois
122
122
  :state => node("#{element} State/Province"),
123
123
  :country_code => node("#{element} Country"),
124
124
  :phone => node("#{element} Phone"),
125
- :fax => node("#{element} FAX"),
125
+ :fax => node("#{element} FAX") || node("#{element} Fax"),
126
126
  :email => node("#{element} Email")
127
127
  )
128
128
  end
@@ -0,0 +1,141 @@
1
+ #--
2
+ # Ruby Whois
3
+ #
4
+ # An intelligent pure Ruby WHOIS client and parser.
5
+ #
6
+ # Copyright (c) 2009-2014 Simone Carletti <weppos@weppos.net>
7
+ #++
8
+
9
+
10
+ require 'whois/record/parser/base'
11
+ require 'whois/record/scanners/base_afilias'
12
+
13
+
14
+ module Whois
15
+ class Record
16
+ class Parser
17
+
18
+ # Base parser for Afilias servers.
19
+ #
20
+ # @abstract
21
+ class BaseAfilias2 < Base
22
+ include Scanners::Scannable
23
+
24
+ self.scanner = Scanners::BaseAfilias
25
+
26
+
27
+ property_supported :disclaimer do
28
+ node("field:disclaimer")
29
+ end
30
+
31
+
32
+ property_supported :domain do
33
+ node("Domain Name", &:downcase)
34
+ end
35
+
36
+ property_supported :domain_id do
37
+ node("Domain ID")
38
+ end
39
+
40
+
41
+ property_supported :status do
42
+ Array.wrap(node("Domain Status"))
43
+ end
44
+
45
+ property_supported :available? do
46
+ !!node("status:available")
47
+ end
48
+
49
+ property_supported :registered? do
50
+ !available?
51
+ end
52
+
53
+
54
+ property_supported :created_on do
55
+ node("Creation Date") do |value|
56
+ Time.parse(value)
57
+ end
58
+ end
59
+
60
+ property_supported :updated_on do
61
+ node("Updated Date") do |value|
62
+ Time.parse(value)
63
+ end
64
+ end
65
+
66
+ property_supported :expires_on do
67
+ node("Registry Expiry Date") do |value|
68
+ Time.parse(value)
69
+ end
70
+ end
71
+
72
+
73
+ property_supported :registrar do
74
+ node("Sponsoring Registrar") do |value|
75
+ id, name = decompose_registrar(value) ||
76
+ Whois.bug!(ParserError, "Unknown registrar format `#{value}'")
77
+
78
+ Record::Registrar.new(
79
+ id: id,
80
+ name: name
81
+ )
82
+ end
83
+ end
84
+
85
+ property_supported :registrant_contacts do
86
+ build_contact("Registrant", Whois::Record::Contact::TYPE_REGISTRANT)
87
+ end
88
+
89
+ property_supported :admin_contacts do
90
+ build_contact("Admin", Whois::Record::Contact::TYPE_ADMINISTRATIVE)
91
+ end
92
+
93
+ property_supported :technical_contacts do
94
+ build_contact("Tech", Whois::Record::Contact::TYPE_TECHNICAL)
95
+ end
96
+
97
+
98
+ property_supported :nameservers do
99
+ Array.wrap(node("Name Server")).reject(&:empty?).map do |name|
100
+ Nameserver.new(:name => name.downcase)
101
+ end
102
+ end
103
+
104
+
105
+ private
106
+
107
+ def build_contact(element, type)
108
+ node("#{element} ID") do
109
+ address = ["", "1", "2", "3"].
110
+ map { |i| node("#{element} Street#{i}") }.
111
+ delete_if { |i| i.nil? || i.empty? }.
112
+ join("\n")
113
+
114
+ Record::Contact.new(
115
+ :type => type,
116
+ :id => node("#{element} ID"),
117
+ :name => node("#{element} Name"),
118
+ :organization => node("#{element} Organization"),
119
+ :address => address,
120
+ :city => node("#{element} City"),
121
+ :zip => node("#{element} Postal Code"),
122
+ :state => node("#{element} State/Province"),
123
+ :country_code => node("#{element} Country"),
124
+ :phone => node("#{element} Phone"),
125
+ :fax => node("#{element} FAX") || node("#{element} Fax"),
126
+ :email => node("#{element} Email")
127
+ )
128
+ end
129
+ end
130
+
131
+ def decompose_registrar(value)
132
+ if value =~ /(.+?) \((.+?)\)/
133
+ [$2, $1]
134
+ end
135
+ end
136
+
137
+ end
138
+
139
+ end
140
+ end
141
+ end
@@ -61,7 +61,7 @@ module Whois
61
61
  end
62
62
 
63
63
  property_supported :updated_on do
64
- node("Updated Date") { |value| parse_time(value) }
64
+ node("Updated Date") { |value| parse_time(value) unless value.empty? }
65
65
  end
66
66
 
67
67
  property_supported :expires_on do
@@ -111,7 +111,7 @@ module Whois
111
111
  node("#{element} Name") do
112
112
  Record::Contact.new(
113
113
  type: type,
114
- id: node("Registry #{element} ID"),
114
+ id: node("Registry #{element} ID").presence,
115
115
  name: value_for_property(element, 'Name'),
116
116
  organization: value_for_property(element, 'Organization'),
117
117
  address: value_for_property(element, 'Street'),
@@ -40,7 +40,7 @@ module Whois
40
40
 
41
41
 
42
42
  property_supported :status do
43
- node("Domain Status")
43
+ node("Domain Status") { |value| Array.wrap(value) }
44
44
  end
45
45
 
46
46
  property_supported :available? do
@@ -30,6 +30,9 @@ module Whois
30
30
  case $1.downcase
31
31
  when "active"
32
32
  :registered
33
+ # NEWSTATUS suspended (https://github.com/weppos/whois/issues/5)
34
+ when "suspended"
35
+ :registered
33
36
  when "not registered"
34
37
  :available
35
38
  when "inactive"
@@ -7,7 +7,7 @@
7
7
  #++
8
8
 
9
9
 
10
- require 'whois/record/parser/base_afilias'
10
+ require 'whois/record/parser/base_afilias2'
11
11
 
12
12
 
13
13
  module Whois
@@ -15,7 +15,12 @@ module Whois
15
15
  class Parser
16
16
 
17
17
  # Parser for the whois.afilias.info server.
18
- class WhoisAfiliasInfo < BaseAfilias
18
+ class WhoisAfiliasInfo < BaseAfilias2
19
+
20
+ self.scanner = Scanners::BaseAfilias, {
21
+ pattern_disclaimer: /^Access to/
22
+ }
23
+
19
24
  end
20
25
 
21
26
  end
@@ -99,15 +99,14 @@ module Whois
99
99
  def build_contact(element, type)
100
100
  node("#{element} Name") do
101
101
  Record::Contact.new(
102
- :type => type,
103
- :id => nil,
104
- :name => node("#{element} Name"),
105
- :address => node("#{element} Address"),
106
- :phone => node("#{element} Tel"),
107
- :fax => node("#{element} Fax"),
108
- :email => node("#{element} Email"),
109
- :created_on => node("#{element} Created") { |value| Time.parse(value) },
110
- :updated_on => node("#{element} Updated") { |value| Time.parse(value) }
102
+ type: type,
103
+ name: node("#{element} Name"),
104
+ address: node("#{element} Address"),
105
+ phone: node("#{element} Tel"),
106
+ fax: node("#{element} Fax"),
107
+ email: node("#{element} Email"),
108
+ created_on: node("#{element} Created") { |value| Time.parse(value) },
109
+ updated_on: node("#{element} Updated") { |value| Time.parse(value) if value != "None" }
111
110
  )
112
111
  end
113
112
  end
@@ -46,12 +46,13 @@ module Whois
46
46
  :available
47
47
  when "invalid"
48
48
  :invalid
49
- # NEWSTATUS (inactive)
49
+ # NEWSTATUS inactive
50
50
  # The domain is registered, but there is not DNS entry for it.
51
51
  when "failed"
52
52
  :registered
53
53
  else
54
54
  if response_error?
55
+ # NEWSTATUS invalid
55
56
  :invalid
56
57
  else
57
58
  Whois.bug!(ParserError, "Unknown status `#{node("Status")}'.")
@@ -132,7 +133,6 @@ module Whois
132
133
  end
133
134
 
134
135
 
135
- # NEWPROPERTY
136
136
  def version
137
137
  cached_properties_fetch :version do
138
138
  if content_for_scanner =~ /^% Version: (.+)$/
@@ -141,7 +141,7 @@ module Whois
141
141
  end
142
142
  end
143
143
 
144
- # NEWPROPERTY
144
+ # NEWPROPERTY invalid?
145
145
  def invalid?
146
146
  cached_properties_fetch :invalid? do
147
147
  node("Status") == "invalid" ||
@@ -32,7 +32,6 @@ module Whois
32
32
  end
33
33
  contact
34
34
  end
35
-
36
35
  end
37
36
 
38
37
  end
@@ -22,8 +22,11 @@ module Whois
22
22
  class WhoisNicCd < BaseCocca2
23
23
 
24
24
  property_supported :status do
25
- list = Array.wrap(node("Domain Status")).map(&:downcase)
26
- list.include?("available") ? :available : super()
25
+ if node("Domain ID")
26
+ :registered
27
+ else
28
+ :available
29
+ end
27
30
  end
28
31
 
29
32
  end
@@ -8,69 +8,27 @@
8
8
 
9
9
 
10
10
  require 'whois/record/parser/base'
11
+ require 'whois/record/parser/base_cocca'
11
12
 
12
13
 
13
14
  module Whois
14
15
  class Record
15
16
  class Parser
16
17
 
17
- #
18
- # = whois.nic.ec parser
19
- #
20
18
  # Parser for the whois.nic.ec server.
21
19
  #
22
- # NOTE: This parser is just a stub and provides only a few basic methods
23
- # to check for domain availability and get domain status.
24
- # Please consider to contribute implementing missing methods.
25
- # See WhoisNicIt parser for an explanation of all available methods
26
- # and examples.
20
+ # @see Whois::Record::Parser::Example
21
+ # The Example parser for the list of all available methods.
27
22
  #
28
- class WhoisNicEc < Base
29
-
23
+ class WhoisNicEc < BaseCocca
30
24
  property_supported :status do
31
- if available?
32
- :available
25
+ if content_for_scanner =~ /Status:\s+(.+?)\n/
26
+ super()
33
27
  else
34
- :registered
35
- end
36
- end
37
-
38
- property_supported :available? do
39
- !!(content_for_scanner =~ /Domain not registered/)
40
- end
41
-
42
- property_supported :registered? do
43
- !available?
44
- end
45
-
46
-
47
- property_supported :created_on do
48
- if content_for_scanner =~ /^Fecha de Creacion:(.*)\n/
49
- Time.parse($1)
28
+ registrar ? :registered : :available
29
+ # Whois.bug!(ParserError, "Unable to parse status.")
50
30
  end
51
31
  end
52
-
53
- property_supported :updated_on do
54
- if content_for_scanner =~ /^Ultima Modificacion:(.*)\n/
55
- Time.parse($1)
56
- end
57
- end
58
-
59
- property_supported :expires_on do
60
- if content_for_scanner =~ /^Fecha de Expiracion:(.*)\n/
61
- Time.parse($1)
62
- end
63
- end
64
-
65
-
66
- property_supported :nameservers do
67
- if content_for_scanner =~ /Servidores de dominio \(Name Servers\)\n((.+\n)+)\n/
68
- $1.split("\n").map do |name|
69
- Record::Nameserver.new(:name => name)
70
- end
71
- end
72
- end
73
-
74
32
  end
75
33
 
76
34
  end
@@ -47,6 +47,8 @@ module Whois
47
47
 
48
48
  property_supported :updated_on do
49
49
  if content_for_scanner =~ /Changed:\s+(.+)\n/
50
+ # Hack to remove usec. Do you know a better way?
51
+ # Time.utc(*Time.parse($1).to_a)
50
52
  Time.parse($1)
51
53
  end
52
54
  end
@@ -14,25 +14,24 @@ module Whois
14
14
  class Record
15
15
  class Parser
16
16
 
17
- #
18
- # = whois.nic.org.uy parser
19
- #
20
17
  # Parser for the whois.nic.org.uy server.
21
18
  #
22
- # NOTE: This parser is just a stub and provides only a few basic methods
23
- # to check for domain availability and get domain status.
24
- # Please consider to contribute implementing missing methods.
25
- # See WhoisNicIt parser for an explanation of all available methods
26
- # and examples.
19
+ # @note This parser is just a stub and provides only a few basic methods
20
+ # to check for domain availability and get domain status.
21
+ # Please consider to contribute implementing missing methods.
22
+ #
23
+ # @see Whois::Record::Parser::Example
24
+ # The Example parser for the list of all available methods.
27
25
  #
28
26
  class WhoisNicOrgUy < Base
29
27
 
30
28
  property_supported :status do
31
29
  if content_for_scanner =~ /Estatus del dominio: (.+?)\n/
32
30
  case $1.downcase
33
- when "activo" then :registered
34
- else
35
- Whois.bug!(ParserError, "Unknown status `#{$1}'.")
31
+ when "activo"
32
+ :registered
33
+ else
34
+ Whois.bug!(ParserError, "Unknown status `#{$1}'.")
36
35
  end
37
36
  else
38
37
  :available
@@ -40,7 +39,7 @@ module Whois
40
39
  end
41
40
 
42
41
  property_supported :available? do
43
- !!(content_for_scanner =~ /No match for "(.*?)"/)
42
+ !!(content_for_scanner =~ /No match for "(.+?)"/)
44
43
  end
45
44
 
46
45
  property_supported :registered? do
@@ -49,13 +48,13 @@ module Whois
49
48
 
50
49
 
51
50
  property_supported :created_on do
52
- if content_for_scanner =~ /Fecha de Creacion: (.*)\n/
51
+ if content_for_scanner =~ /Fecha de Creacion: (.+)\n/
53
52
  Time.parse($1)
54
53
  end
55
54
  end
56
55
 
57
56
  property_supported :updated_on do
58
- if content_for_scanner =~ /Ultima Actualizacion: (.*)\n/
57
+ if content_for_scanner =~ /Ultima Actualizacion: (.+)\n/
59
58
  Time.parse($1)
60
59
  end
61
60
  end
@@ -30,7 +30,10 @@ module Whois
30
30
 
31
31
 
32
32
  property_supported :status do
33
- if available?
33
+ # NEWSTATUS invalid
34
+ if invalid?
35
+ :invalid
36
+ elsif available?
34
37
  :available
35
38
  else
36
39
  :registered
@@ -38,11 +41,11 @@ module Whois
38
41
  end
39
42
 
40
43
  property_supported :available? do
41
- !!(content_for_scanner =~ /No match found for "(.+)"/)
44
+ !invalid? && !!(content_for_scanner =~ /No match found for "(.+)"/)
42
45
  end
43
46
 
44
47
  property_supported :registered? do
45
- !available?
48
+ !invalid? && !available?
46
49
  end
47
50
 
48
51
 
@@ -110,7 +113,21 @@ module Whois
110
113
  end
111
114
  end
112
115
 
113
- private
116
+
117
+ def response_error?
118
+ content_for_scanner =~ /Invalid input/
119
+ end
120
+
121
+
122
+ # NEWPROPERTY invalid?
123
+ def invalid?
124
+ cached_properties_fetch :invalid? do
125
+ response_error?
126
+ end
127
+ end
128
+
129
+
130
+ private
114
131
 
115
132
  def build_contact(element, type)
116
133
  textblock = content_for_scanner.slice(/^\*\* #{element}:\n((?:.+\n)+)\n/, 1)
@@ -42,7 +42,7 @@ module Whois
42
42
  :registered
43
43
  when "no registration status listed."
44
44
  :reserved
45
- # NEWSTATUS (redemption?)
45
+ # NEWSTATUS redemption (https://github.com/weppos/whois/issues/5)
46
46
  when "renewal required."
47
47
  :registered
48
48
  else
@@ -7,7 +7,7 @@
7
7
  #++
8
8
 
9
9
 
10
- require 'whois/record/parser/base_afilias'
10
+ require 'whois/record/parser/base_afilias2'
11
11
 
12
12
 
13
13
  module Whois
@@ -15,7 +15,12 @@ module Whois
15
15
  class Parser
16
16
 
17
17
  # Parser for the whois.nic.xxx server.
18
- class WhoisNicXxx < BaseAfilias
18
+ class WhoisNicXxx < BaseAfilias2
19
+
20
+ self.scanner = Scanners::BaseAfilias, {
21
+ pattern_disclaimer: /^Access to/
22
+ }
23
+
19
24
 
20
25
  property_supported :status do
21
26
  if reserved?
@@ -26,27 +31,11 @@ module Whois
26
31
  end
27
32
 
28
33
 
29
- property_supported :updated_on do
30
- node("Last Updated On") do |value|
31
- Time.parse(value) unless value.empty?
32
- end
33
- end
34
-
35
-
36
34
  # NEWPROPERTY
37
35
  def reserved?
38
36
  !!node("status:reserved")
39
37
  end
40
38
 
41
-
42
- private
43
-
44
- def decompose_registrar(value)
45
- if value =~ /(.+?) \((.+?)\)/
46
- [$1, $2]
47
- end
48
- end
49
-
50
39
  end
51
40
 
52
41
  end
@@ -8,72 +8,18 @@
8
8
 
9
9
 
10
10
  require 'whois/record/parser/base'
11
+ require 'whois/record/parser/whois.centralnic.com.rb'
11
12
 
12
13
 
13
14
  module Whois
14
15
  class Record
15
16
  class Parser
16
17
 
17
- #
18
- # = whois.pandi.or.id parser
19
- #
20
18
  # Parser for the whois.pandi.or.id server.
21
19
  #
22
- # NOTE: This parser is just a stub and provides only a few basic methods
23
- # to check for domain availability and get domain status.
24
- # Please consider to contribute implementing missing methods.
25
- # See WhoisNicIt parser for an explanation of all available methods
26
- # and examples.
27
- #
28
- class WhoisPandiOrId < Base
29
-
30
- property_supported :status do
31
- if content_for_scanner =~ /domain-status:\s+(.+)\n/
32
- case $1.downcase
33
- when "object is active"
34
- :registered
35
- else
36
- Whois.bug!(ParserError, "Unknown status `#{$1}'.")
37
- end
38
- else
39
- :available
40
- end
41
- end
42
-
43
- property_supported :available? do
44
- !!(content_for_scanner =~ /%ERROR:101: no entries found/)
45
- end
46
-
47
- property_supported :registered? do
48
- !available?
49
- end
50
-
51
-
52
- property_supported :created_on do
53
- if content_for_scanner =~ /created:\s+(.*)\n/
54
- Time.parse($1)
55
- end
56
- end
57
-
58
- property_supported :updated_on do
59
- if content_for_scanner =~ /last-update:\s+(.*)\n/
60
- Time.parse($1)
61
- end
62
- end
63
-
64
- property_supported :expires_on do
65
- if content_for_scanner =~ /expires:\s+(.*)\n/
66
- Time.parse($1)
67
- end
68
- end
69
-
70
-
71
- property_supported :nameservers do
72
- content_for_scanner.scan(/nserver:\s+(.+)\n/).flatten.map do |name|
73
- Record::Nameserver.new(:name => name)
74
- end
75
- end
76
-
20
+ # It aliases the whois.centralnic.com parser because
21
+ # it looks like the response is the same of Centralnic.
22
+ class WhoisPandiOrId < WhoisCentralnicCom
77
23
  end
78
24
 
79
25
  end
@@ -31,15 +31,14 @@ module Whois
31
31
  end
32
32
 
33
33
  property_supported :status do
34
- list = Array.wrap(node("Domain Status"))
34
+ Array.wrap(node("Domain Status"))
35
35
  end
36
36
 
37
37
  property_supported :registrar do
38
38
  node('Sponsoring Registrar') do |name|
39
39
  Record::Registrar.new(
40
- :id => node('Sponsoring Registrar IANA ID'),
41
- :name => node('Sponsoring Registrar'),
42
- :organization => node('Sponsoring Registrar')
40
+ id: node('Sponsoring Registrar IANA ID'),
41
+ name: node('Sponsoring Registrar')
43
42
  )
44
43
  end
45
44
  end
@@ -20,6 +20,9 @@ module Whois
20
20
  # The Example parser for the list of all available methods.
21
21
  #
22
22
  class WhoisRegistryOm < BaseShared1
23
+ property_supported :updated_on do
24
+ node("Last Modified") { |value| Time.parse(value) }
25
+ end
23
26
  end
24
27
 
25
28
  end
@@ -20,89 +20,13 @@ module Whois
20
20
  # @see Whois::Record::Parser::Example
21
21
  # The Example parser for the list of all available methods.
22
22
  #
23
- class WhoisRrpproxyNet < Base
24
- include Scanners::Scannable
23
+ class WhoisRrpproxyNet < BaseIcannCompliant
24
+ self.scanner = Scanners::BaseIcannCompliant, {
25
+ pattern_available: /^No match for "[\w\.]+"\.\n/
26
+ }
25
27
 
26
- self.scanner = Scanners::BaseShared3
27
28
 
28
-
29
- property_supported :disclaimer do
30
- node("field:disclaimer")
31
- end
32
-
33
-
34
- property_supported :domain do
35
- node('DOMAIN', &:downcase)
36
- end
37
-
38
- property_not_supported :domain_id
39
-
40
-
41
- property_supported :status do
42
- if available?
43
- :available
44
- else
45
- :registered
46
- end
47
- end
48
-
49
- property_supported :available? do
50
- !!node("status:available")
51
- end
52
-
53
- property_supported :registered? do
54
- !available?
55
- end
56
-
57
- property_supported :registrar do
58
- return unless registered?
59
- Record::Registrar.new(
60
- name: 'Key-Systems',
61
- organization: 'Key-Systems GmbH',
62
- url: 'http://www.domaindiscount24.com/'
63
- )
64
- end
65
-
66
- property_supported :registrant_contacts do
67
- build_contact('owner', Whois::Record::Contact::TYPE_REGISTRANT)
68
- end
69
-
70
- property_supported :admin_contacts do
71
- build_contact('admin', Whois::Record::Contact::TYPE_ADMINISTRATIVE)
72
- end
73
-
74
- property_supported :technical_contacts do
75
- build_contact('tech', Whois::Record::Contact::TYPE_TECHNICAL)
76
- end
77
-
78
- property_supported :nameservers do
79
- node('nameserver') do |array|
80
- array.map do |name|
81
- Nameserver.new(name: name)
82
- end
83
- end
84
- end
85
-
86
- private
87
-
88
- def build_contact(element, type)
89
- node("#{element}-contact") do
90
- Record::Contact.new(
91
- type: type,
92
- id: node("#{element}-contact"),
93
- name: [node("#{element}-fname"), node("#{element}-lname")].join(' '),
94
- organization: node("#{element}-organization"),
95
- address: node("#{element}-street"),
96
- city: node("#{element}-city"),
97
- zip: node("#{element}-zip"),
98
- state: nil,
99
- country_code: node("#{element}-country"),
100
- phone: node("#{element}-phone"),
101
- fax: node("#{element}-fax"),
102
- email: node("#{element}-email")
103
- )
104
- end
105
- end
29
+ property_not_supported :expires_on
106
30
 
107
31
  end
108
32
 
@@ -67,12 +67,8 @@ module Whois
67
67
 
68
68
  property_supported :registrar do
69
69
  node("Sponsoring Registrar") do |value|
70
- parts = decompose_registrar(value) ||
71
- Whois.bug!(ParserError, "Unknown registrar format `#{value}'")
72
-
73
70
  Record::Registrar.new(
74
- id: parts[0],
75
- name: parts[1]
71
+ name: value
76
72
  )
77
73
  end
78
74
  end
@@ -124,12 +120,6 @@ module Whois
124
120
  end
125
121
  end
126
122
 
127
- def decompose_registrar(value)
128
- if value =~ /(.+?) \((.+?)\)/
129
- [$2, $1]
130
- end
131
- end
132
-
133
123
  end
134
124
 
135
125
  end
@@ -49,7 +49,11 @@ module Whois
49
49
  end
50
50
 
51
51
  tokenizer :scan_disclaimer do
52
- if @input.pos == 0 && @input.match?(/^(.+\n){3,}\n/)
52
+ if settings[:pattern_disclaimer]
53
+ if @input.match?(settings[:pattern_disclaimer])
54
+ @ast["field:disclaimer"] = _scan_lines_to_array(/^(.+)\n/).join(" ")
55
+ end
56
+ elsif @input.pos == 0 && @input.match?(/^(.+\n){3,}\n/)
53
57
  @ast["field:disclaimer"] = _scan_lines_to_array(/^(.+)\n/).join(" ")
54
58
  end
55
59
  end
@@ -34,7 +34,7 @@ module Whois
34
34
 
35
35
  tokenizer :skip_head do
36
36
  if @input.skip_until(/Domain Name:/)
37
- @input.scan(/\s(.+)\n/)
37
+ @input.scan(/\s?(.+)\n/)
38
38
  @ast["Domain Name"] = @input[1].strip
39
39
  end
40
40
  end
@@ -24,7 +24,7 @@ module Whois
24
24
 
25
25
 
26
26
  tokenizer :scan_available do
27
- if @input.scan(/^No match for [\w\.]+\.\n/)
27
+ if @input.scan(/^No match for [\w\.]+/)
28
28
  @ast["status:available"] = true
29
29
  end
30
30
  end
data/lib/whois/version.rb CHANGED
@@ -13,7 +13,7 @@ module Whois
13
13
  module Version
14
14
  MAJOR = 3
15
15
  MINOR = 4
16
- PATCH = 4
16
+ PATCH = 5
17
17
  BUILD = nil
18
18
 
19
19
  STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join(".")
data/whois.gemspec CHANGED
@@ -2,15 +2,15 @@
2
2
 
3
3
  Gem::Specification.new do |s|
4
4
  s.name = "whois"
5
- s.version = "3.4.3"
5
+ s.version = "3.4.5"
6
6
 
7
7
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
8
8
  s.authors = ["Simone Carletti"]
9
- s.date = "2014-01-23"
9
+ s.date = "2014-03-06"
10
10
  s.description = "Whois is an intelligent WHOIS client and parser written in pure Ruby. It can query registry data for IPv4, IPv6 and top level domains, parse and convert responses into easy-to-use Ruby objects."
11
11
  s.email = ["weppos@weppos.net"]
12
12
  s.executables = ["ruby-whois"]
13
- s.files = ["LICENSE.txt", ".yardopts", "CHANGELOG.md", "README.md", "whois.gemspec", "bin/ruby-whois", "data/asn16.json", "data/asn32.json", "data/ipv4.json", "data/ipv6.json", "data/tld.json", "lib/whois/client.rb", "lib/whois/core_ext/array/extract_options.rb", "lib/whois/core_ext/array/wrap.rb", "lib/whois/core_ext/class/attribute.rb", "lib/whois/core_ext/kernel/singleton_class.rb", "lib/whois/core_ext/module/remove_method.rb", "lib/whois/core_ext/object/blank.rb", "lib/whois/core_ext.rb", "lib/whois/errors.rb", "lib/whois/record/contact.rb", "lib/whois/record/nameserver.rb", "lib/whois/record/parser/base.rb", "lib/whois/record/parser/base_afilias.rb", "lib/whois/record/parser/base_cocca.rb", "lib/whois/record/parser/base_cocca2.rb", "lib/whois/record/parser/base_icann_compliant.rb", "lib/whois/record/parser/base_icb.rb", "lib/whois/record/parser/base_iisse.rb", "lib/whois/record/parser/base_shared1.rb", "lib/whois/record/parser/base_shared2.rb", "lib/whois/record/parser/base_shared3.rb", "lib/whois/record/parser/base_verisign.rb", "lib/whois/record/parser/base_whoisd.rb", "lib/whois/record/parser/blank.rb", "lib/whois/record/parser/ccwhois.verisign-grs.com.rb", "lib/whois/record/parser/example.rb", "lib/whois/record/parser/jobswhois.verisign-grs.com.rb", "lib/whois/record/parser/kero.yachay.pe.rb", "lib/whois/record/parser/whois.1und1.info.rb", "lib/whois/record/parser/whois.adamsnames.tc.rb", "lib/whois/record/parser/whois.aeda.net.ae.rb", "lib/whois/record/parser/whois.aero.rb", "lib/whois/record/parser/whois.afilias-grs.info.rb", "lib/whois/record/parser/whois.afilias.info.rb", "lib/whois/record/parser/whois.ai.rb", "lib/whois/record/parser/whois.arnes.si.rb", "lib/whois/record/parser/whois.ascio.com.rb", "lib/whois/record/parser/whois.ati.tn.rb", "lib/whois/record/parser/whois.audns.net.au.rb", "lib/whois/record/parser/whois.ax.rb", "lib/whois/record/parser/whois.biz.rb", "lib/whois/record/parser/whois.bn.rb", "lib/whois/record/parser/whois.cat.rb", "lib/whois/record/parser/whois.cctld.by.rb", "lib/whois/record/parser/whois.cctld.uz.rb", "lib/whois/record/parser/whois.centralnic.com.rb", "lib/whois/record/parser/whois.cira.ca.rb", "lib/whois/record/parser/whois.cmc.iq.rb", "lib/whois/record/parser/whois.cnnic.cn.rb", "lib/whois/record/parser/whois.co.ca.rb", "lib/whois/record/parser/whois.co.pl.rb", "lib/whois/record/parser/whois.co.ug.rb", "lib/whois/record/parser/whois.comlaude.com.rb", "lib/whois/record/parser/whois.denic.de.rb", "lib/whois/record/parser/whois.dk-hostmaster.dk.rb", "lib/whois/record/parser/whois.dns.be.rb", "lib/whois/record/parser/whois.dns.hr.rb", "lib/whois/record/parser/whois.dns.lu.rb", "lib/whois/record/parser/whois.dns.pl.rb", "lib/whois/record/parser/whois.dns.pt.rb", "lib/whois/record/parser/whois.domain-registry.nl.rb", "lib/whois/record/parser/whois.domain.kg.rb", "lib/whois/record/parser/whois.domainregistry.ie.rb", "lib/whois/record/parser/whois.domainregistry.my.rb", "lib/whois/record/parser/whois.domreg.lt.rb", "lib/whois/record/parser/whois.dot.cf.rb", "lib/whois/record/parser/whois.dot.tk.rb", "lib/whois/record/parser/whois.dotmobiregistry.net.rb", "lib/whois/record/parser/whois.dotpostregistry.net.rb", "lib/whois/record/parser/whois.dreamhost.com.rb", "lib/whois/record/parser/whois.educause.edu.rb", "lib/whois/record/parser/whois.eenet.ee.rb", "lib/whois/record/parser/whois.enom.com.rb", "lib/whois/record/parser/whois.eu.org.rb", "lib/whois/record/parser/whois.eu.rb", "lib/whois/record/parser/whois.fi.rb", "lib/whois/record/parser/whois.gandi.net.rb", "lib/whois/record/parser/whois.gg.rb", "lib/whois/record/parser/whois.godaddy.com.rb", "lib/whois/record/parser/whois.gov.za.rb", "lib/whois/record/parser/whois.hkirc.hk.rb", "lib/whois/record/parser/whois.iam.net.ma.rb", "lib/whois/record/parser/whois.iana.org.rb", "lib/whois/record/parser/whois.iis.nu.rb", "lib/whois/record/parser/whois.iis.se.rb", "lib/whois/record/parser/whois.in.ua.rb", "lib/whois/record/parser/whois.isnic.is.rb", "lib/whois/record/parser/whois.isoc.org.il.rb", "lib/whois/record/parser/whois.ja.net.rb", "lib/whois/record/parser/whois.je.rb", "lib/whois/record/parser/whois.jprs.jp.rb", "lib/whois/record/parser/whois.kenic.or.ke.rb", "lib/whois/record/parser/whois.kr.rb", "lib/whois/record/parser/whois.markmonitor.com.rb", "lib/whois/record/parser/whois.meridiantld.net.rb", "lib/whois/record/parser/whois.monic.mo.rb", "lib/whois/record/parser/whois.museum.rb", "lib/whois/record/parser/whois.na-nic.com.na.rb", "lib/whois/record/parser/whois.nc.rb", "lib/whois/record/parser/whois.netcom.cm.rb", "lib/whois/record/parser/whois.networksolutions.com.rb", "lib/whois/record/parser/whois.nic.ac.rb", "lib/whois/record/parser/whois.nic.af.rb", "lib/whois/record/parser/whois.nic.ag.rb", "lib/whois/record/parser/whois.nic.am.rb", "lib/whois/record/parser/whois.nic.as.rb", "lib/whois/record/parser/whois.nic.asia.rb", "lib/whois/record/parser/whois.nic.at.rb", "lib/whois/record/parser/whois.nic.bj.rb", "lib/whois/record/parser/whois.nic.bo.rb", "lib/whois/record/parser/whois.nic.cd.rb", "lib/whois/record/parser/whois.nic.ch.rb", "lib/whois/record/parser/whois.nic.ci.rb", "lib/whois/record/parser/whois.nic.ck.rb", "lib/whois/record/parser/whois.nic.cl.rb", "lib/whois/record/parser/whois.nic.co.rb", "lib/whois/record/parser/whois.nic.coop.rb", "lib/whois/record/parser/whois.nic.cx.rb", "lib/whois/record/parser/whois.nic.cz.rb", "lib/whois/record/parser/whois.nic.dm.rb", "lib/whois/record/parser/whois.nic.dz.rb", "lib/whois/record/parser/whois.nic.ec.rb", "lib/whois/record/parser/whois.nic.es.rb", "lib/whois/record/parser/whois.nic.fo.rb", "lib/whois/record/parser/whois.nic.fr.rb", "lib/whois/record/parser/whois.nic.gd.rb", "lib/whois/record/parser/whois.nic.gl.rb", "lib/whois/record/parser/whois.nic.gov.rb", "lib/whois/record/parser/whois.nic.gs.rb", "lib/whois/record/parser/whois.nic.hn.rb", "lib/whois/record/parser/whois.nic.ht.rb", "lib/whois/record/parser/whois.nic.hu.rb", "lib/whois/record/parser/whois.nic.im.rb", "lib/whois/record/parser/whois.nic.io.rb", "lib/whois/record/parser/whois.nic.ir.rb", "lib/whois/record/parser/whois.nic.it.rb", "lib/whois/record/parser/whois.nic.ki.rb", "lib/whois/record/parser/whois.nic.kz.rb", "lib/whois/record/parser/whois.nic.la.rb", "lib/whois/record/parser/whois.nic.li.rb", "lib/whois/record/parser/whois.nic.lk.rb", "lib/whois/record/parser/whois.nic.lv.rb", "lib/whois/record/parser/whois.nic.ly.rb", "lib/whois/record/parser/whois.nic.md.rb", "lib/whois/record/parser/whois.nic.me.rb", "lib/whois/record/parser/whois.nic.mg.rb", "lib/whois/record/parser/whois.nic.ms.rb", "lib/whois/record/parser/whois.nic.mu.rb", "lib/whois/record/parser/whois.nic.mx.rb", "lib/whois/record/parser/whois.nic.name.rb", "lib/whois/record/parser/whois.nic.net.ng.rb", "lib/whois/record/parser/whois.nic.net.sa.rb", "lib/whois/record/parser/whois.nic.net.sb.rb", "lib/whois/record/parser/whois.nic.nf.rb", "lib/whois/record/parser/whois.nic.org.uy.rb", "lib/whois/record/parser/whois.nic.pr.rb", "lib/whois/record/parser/whois.nic.priv.at.rb", "lib/whois/record/parser/whois.nic.pw.rb", "lib/whois/record/parser/whois.nic.sh.rb", "lib/whois/record/parser/whois.nic.sl.rb", "lib/whois/record/parser/whois.nic.sm.rb", "lib/whois/record/parser/whois.nic.sn.rb", "lib/whois/record/parser/whois.nic.so.rb", "lib/whois/record/parser/whois.nic.st.rb", "lib/whois/record/parser/whois.nic.tel.rb", "lib/whois/record/parser/whois.nic.tl.rb", "lib/whois/record/parser/whois.nic.tm.rb", "lib/whois/record/parser/whois.nic.tr.rb", "lib/whois/record/parser/whois.nic.travel.rb", "lib/whois/record/parser/whois.nic.tv.rb", "lib/whois/record/parser/whois.nic.uk.rb", "lib/whois/record/parser/whois.nic.us.rb", "lib/whois/record/parser/whois.nic.ve.rb", "lib/whois/record/parser/whois.nic.xxx.rb", "lib/whois/record/parser/whois.norid.no.rb", "lib/whois/record/parser/whois.org.za.rb", "lib/whois/record/parser/whois.pairnic.com.rb", "lib/whois/record/parser/whois.pandi.or.id.rb", "lib/whois/record/parser/whois.pir.org.rb", "lib/whois/record/parser/whois.pnina.ps.rb", "lib/whois/record/parser/whois.register.bg.rb", "lib/whois/record/parser/whois.register.com.rb", "lib/whois/record/parser/whois.registro.br.rb", "lib/whois/record/parser/whois.registry.gy.rb", "lib/whois/record/parser/whois.registry.hm.rb", "lib/whois/record/parser/whois.registry.in.rb", "lib/whois/record/parser/whois.registry.net.za.rb", "lib/whois/record/parser/whois.registry.om.rb", "lib/whois/record/parser/whois.registry.qa.rb", "lib/whois/record/parser/whois.registrypro.pro.rb", "lib/whois/record/parser/whois.ripe.net.rb", "lib/whois/record/parser/whois.rnids.rs.rb", "lib/whois/record/parser/whois.rotld.ro.rb", "lib/whois/record/parser/whois.rrpproxy.net.rb", "lib/whois/record/parser/whois.schlund.info.rb", "lib/whois/record/parser/whois.sgnic.sg.rb", "lib/whois/record/parser/whois.sk-nic.sk.rb", "lib/whois/record/parser/whois.smallregistry.net.rb", "lib/whois/record/parser/whois.srs.net.nz.rb", "lib/whois/record/parser/whois.sx.rb", "lib/whois/record/parser/whois.tcinet.ru.rb", "lib/whois/record/parser/whois.thnic.co.th.rb", "lib/whois/record/parser/whois.tld.ee.rb", "lib/whois/record/parser/whois.tld.sy.rb", "lib/whois/record/parser/whois.tonic.to.rb", "lib/whois/record/parser/whois.tucows.com.rb", "lib/whois/record/parser/whois.twnic.net.tw.rb", "lib/whois/record/parser/whois.tznic.or.tz.rb", "lib/whois/record/parser/whois.ua.rb", "lib/whois/record/parser/whois.udag.net.rb", "lib/whois/record/parser/whois.usp.ac.fj.rb", "lib/whois/record/parser/whois.verisign-grs.com.rb", "lib/whois/record/parser/whois.website.ws.rb", "lib/whois/record/parser/whois.wildwestdomains.com.rb", "lib/whois/record/parser/whois.yoursrs.com.rb", "lib/whois/record/parser/whois.za.net.rb", "lib/whois/record/parser/whois.za.org.rb", "lib/whois/record/parser/whois1.nic.bi.rb", "lib/whois/record/parser.rb", "lib/whois/record/part.rb", "lib/whois/record/registrar.rb", "lib/whois/record/scanners/base.rb", "lib/whois/record/scanners/base_afilias.rb", "lib/whois/record/scanners/base_cocca2.rb", "lib/whois/record/scanners/base_icann_compliant.rb", "lib/whois/record/scanners/base_iisse.rb", "lib/whois/record/scanners/base_shared1.rb", "lib/whois/record/scanners/base_shared2.rb", "lib/whois/record/scanners/base_shared3.rb", "lib/whois/record/scanners/base_whoisd.rb", "lib/whois/record/scanners/iana.rb", "lib/whois/record/scanners/scannable.rb", "lib/whois/record/scanners/verisign.rb", "lib/whois/record/scanners/whois.ati.tn.rb", "lib/whois/record/scanners/whois.audns.net.au.rb", "lib/whois/record/scanners/whois.cctld.by.rb", "lib/whois/record/scanners/whois.centralnic.com.rb", "lib/whois/record/scanners/whois.cira.ca.rb", "lib/whois/record/scanners/whois.cnnic.cn.rb", "lib/whois/record/scanners/whois.denic.de.rb", "lib/whois/record/scanners/whois.dns.hr.rb", "lib/whois/record/scanners/whois.domainregistry.ie.rb", "lib/whois/record/scanners/whois.fi.rb", "lib/whois/record/scanners/whois.nc.rb", "lib/whois/record/scanners/whois.nic.cz.rb", "lib/whois/record/scanners/whois.nic.it.rb", "lib/whois/record/scanners/whois.registry.net.za.rb", "lib/whois/record/scanners/whois.rnids.rs.rb", "lib/whois/record/scanners/whois.smallregistry.net.rb", "lib/whois/record/scanners/whois.srs.net.nz.rb", "lib/whois/record/scanners/whois.sx.rb", "lib/whois/record/scanners/whois.tucows.com.rb", "lib/whois/record/scanners/whois.yoursrs.com.rb", "lib/whois/record/super_struct.rb", "lib/whois/record.rb", "lib/whois/server/adapters/afilias.rb", "lib/whois/server/adapters/arin.rb", "lib/whois/server/adapters/arpa.rb", "lib/whois/server/adapters/base.rb", "lib/whois/server/adapters/formatted.rb", "lib/whois/server/adapters/none.rb", "lib/whois/server/adapters/not_implemented.rb", "lib/whois/server/adapters/standard.rb", "lib/whois/server/adapters/verisign.rb", "lib/whois/server/adapters/web.rb", "lib/whois/server/socket_handler.rb", "lib/whois/server.rb", "lib/whois/version.rb", "lib/whois.rb"]
13
+ s.files = ["LICENSE.txt", ".yardopts", "CHANGELOG.md", "README.md", "whois.gemspec", "bin/ruby-whois", "data/asn16.json", "data/asn32.json", "data/ipv4.json", "data/ipv6.json", "data/tld.json", "lib/whois", "lib/whois/client.rb", "lib/whois/core_ext", "lib/whois/core_ext/array", "lib/whois/core_ext/array/extract_options.rb", "lib/whois/core_ext/array/wrap.rb", "lib/whois/core_ext/class", "lib/whois/core_ext/class/attribute.rb", "lib/whois/core_ext/kernel", "lib/whois/core_ext/kernel/singleton_class.rb", "lib/whois/core_ext/module", "lib/whois/core_ext/module/remove_method.rb", "lib/whois/core_ext/object", "lib/whois/core_ext/object/blank.rb", "lib/whois/core_ext.rb", "lib/whois/errors.rb", "lib/whois/record", "lib/whois/record/contact.rb", "lib/whois/record/nameserver.rb", "lib/whois/record/parser", "lib/whois/record/parser/base.rb", "lib/whois/record/parser/base_afilias.rb", "lib/whois/record/parser/base_afilias2.rb", "lib/whois/record/parser/base_cocca.rb", "lib/whois/record/parser/base_cocca2.rb", "lib/whois/record/parser/base_icann_compliant.rb", "lib/whois/record/parser/base_icb.rb", "lib/whois/record/parser/base_iisse.rb", "lib/whois/record/parser/base_shared1.rb", "lib/whois/record/parser/base_shared2.rb", "lib/whois/record/parser/base_shared3.rb", "lib/whois/record/parser/base_verisign.rb", "lib/whois/record/parser/base_whoisd.rb", "lib/whois/record/parser/blank.rb", "lib/whois/record/parser/ccwhois.verisign-grs.com.rb", "lib/whois/record/parser/example.rb", "lib/whois/record/parser/jobswhois.verisign-grs.com.rb", "lib/whois/record/parser/kero.yachay.pe.rb", "lib/whois/record/parser/whois.1und1.info.rb", "lib/whois/record/parser/whois.adamsnames.tc.rb", "lib/whois/record/parser/whois.aeda.net.ae.rb", "lib/whois/record/parser/whois.aero.rb", "lib/whois/record/parser/whois.afilias-grs.info.rb", "lib/whois/record/parser/whois.afilias.info.rb", "lib/whois/record/parser/whois.ai.rb", "lib/whois/record/parser/whois.arnes.si.rb", "lib/whois/record/parser/whois.ascio.com.rb", "lib/whois/record/parser/whois.ati.tn.rb", "lib/whois/record/parser/whois.audns.net.au.rb", "lib/whois/record/parser/whois.ax.rb", "lib/whois/record/parser/whois.biz.rb", "lib/whois/record/parser/whois.bn.rb", "lib/whois/record/parser/whois.cat.rb", "lib/whois/record/parser/whois.cctld.by.rb", "lib/whois/record/parser/whois.cctld.uz.rb", "lib/whois/record/parser/whois.centralnic.com.rb", "lib/whois/record/parser/whois.cira.ca.rb", "lib/whois/record/parser/whois.cmc.iq.rb", "lib/whois/record/parser/whois.cnnic.cn.rb", "lib/whois/record/parser/whois.co.ca.rb", "lib/whois/record/parser/whois.co.pl.rb", "lib/whois/record/parser/whois.co.ug.rb", "lib/whois/record/parser/whois.comlaude.com.rb", "lib/whois/record/parser/whois.denic.de.rb", "lib/whois/record/parser/whois.dk-hostmaster.dk.rb", "lib/whois/record/parser/whois.dns.be.rb", "lib/whois/record/parser/whois.dns.hr.rb", "lib/whois/record/parser/whois.dns.lu.rb", "lib/whois/record/parser/whois.dns.pl.rb", "lib/whois/record/parser/whois.dns.pt.rb", "lib/whois/record/parser/whois.domain-registry.nl.rb", "lib/whois/record/parser/whois.domain.kg.rb", "lib/whois/record/parser/whois.domainregistry.ie.rb", "lib/whois/record/parser/whois.domainregistry.my.rb", "lib/whois/record/parser/whois.domreg.lt.rb", "lib/whois/record/parser/whois.dot.cf.rb", "lib/whois/record/parser/whois.dot.tk.rb", "lib/whois/record/parser/whois.dotmobiregistry.net.rb", "lib/whois/record/parser/whois.dotpostregistry.net.rb", "lib/whois/record/parser/whois.dreamhost.com.rb", "lib/whois/record/parser/whois.educause.edu.rb", "lib/whois/record/parser/whois.eenet.ee.rb", "lib/whois/record/parser/whois.enom.com.rb", "lib/whois/record/parser/whois.eu.org.rb", "lib/whois/record/parser/whois.eu.rb", "lib/whois/record/parser/whois.fi.rb", "lib/whois/record/parser/whois.gandi.net.rb", "lib/whois/record/parser/whois.gg.rb", "lib/whois/record/parser/whois.godaddy.com.rb", "lib/whois/record/parser/whois.gov.za.rb", "lib/whois/record/parser/whois.hkirc.hk.rb", "lib/whois/record/parser/whois.iam.net.ma.rb", "lib/whois/record/parser/whois.iana.org.rb", "lib/whois/record/parser/whois.iis.nu.rb", "lib/whois/record/parser/whois.iis.se.rb", "lib/whois/record/parser/whois.in.ua.rb", "lib/whois/record/parser/whois.isnic.is.rb", "lib/whois/record/parser/whois.isoc.org.il.rb", "lib/whois/record/parser/whois.ja.net.rb", "lib/whois/record/parser/whois.je.rb", "lib/whois/record/parser/whois.jprs.jp.rb", "lib/whois/record/parser/whois.kenic.or.ke.rb", "lib/whois/record/parser/whois.kr.rb", "lib/whois/record/parser/whois.markmonitor.com.rb", "lib/whois/record/parser/whois.meridiantld.net.rb", "lib/whois/record/parser/whois.monic.mo.rb", "lib/whois/record/parser/whois.museum.rb", "lib/whois/record/parser/whois.na-nic.com.na.rb", "lib/whois/record/parser/whois.nc.rb", "lib/whois/record/parser/whois.netcom.cm.rb", "lib/whois/record/parser/whois.networksolutions.com.rb", "lib/whois/record/parser/whois.nic.ac.rb", "lib/whois/record/parser/whois.nic.af.rb", "lib/whois/record/parser/whois.nic.ag.rb", "lib/whois/record/parser/whois.nic.am.rb", "lib/whois/record/parser/whois.nic.as.rb", "lib/whois/record/parser/whois.nic.asia.rb", "lib/whois/record/parser/whois.nic.at.rb", "lib/whois/record/parser/whois.nic.bj.rb", "lib/whois/record/parser/whois.nic.bo.rb", "lib/whois/record/parser/whois.nic.cd.rb", "lib/whois/record/parser/whois.nic.ch.rb", "lib/whois/record/parser/whois.nic.ci.rb", "lib/whois/record/parser/whois.nic.ck.rb", "lib/whois/record/parser/whois.nic.cl.rb", "lib/whois/record/parser/whois.nic.co.rb", "lib/whois/record/parser/whois.nic.coop.rb", "lib/whois/record/parser/whois.nic.cx.rb", "lib/whois/record/parser/whois.nic.cz.rb", "lib/whois/record/parser/whois.nic.dm.rb", "lib/whois/record/parser/whois.nic.dz.rb", "lib/whois/record/parser/whois.nic.ec.rb", "lib/whois/record/parser/whois.nic.es.rb", "lib/whois/record/parser/whois.nic.fo.rb", "lib/whois/record/parser/whois.nic.fr.rb", "lib/whois/record/parser/whois.nic.gd.rb", "lib/whois/record/parser/whois.nic.gl.rb", "lib/whois/record/parser/whois.nic.gov.rb", "lib/whois/record/parser/whois.nic.gs.rb", "lib/whois/record/parser/whois.nic.hn.rb", "lib/whois/record/parser/whois.nic.ht.rb", "lib/whois/record/parser/whois.nic.hu.rb", "lib/whois/record/parser/whois.nic.im.rb", "lib/whois/record/parser/whois.nic.io.rb", "lib/whois/record/parser/whois.nic.ir.rb", "lib/whois/record/parser/whois.nic.it.rb", "lib/whois/record/parser/whois.nic.ki.rb", "lib/whois/record/parser/whois.nic.kz.rb", "lib/whois/record/parser/whois.nic.la.rb", "lib/whois/record/parser/whois.nic.li.rb", "lib/whois/record/parser/whois.nic.lk.rb", "lib/whois/record/parser/whois.nic.lv.rb", "lib/whois/record/parser/whois.nic.ly.rb", "lib/whois/record/parser/whois.nic.md.rb", "lib/whois/record/parser/whois.nic.me.rb", "lib/whois/record/parser/whois.nic.mg.rb", "lib/whois/record/parser/whois.nic.ms.rb", "lib/whois/record/parser/whois.nic.mu.rb", "lib/whois/record/parser/whois.nic.mx.rb", "lib/whois/record/parser/whois.nic.name.rb", "lib/whois/record/parser/whois.nic.net.ng.rb", "lib/whois/record/parser/whois.nic.net.sa.rb", "lib/whois/record/parser/whois.nic.net.sb.rb", "lib/whois/record/parser/whois.nic.nf.rb", "lib/whois/record/parser/whois.nic.org.uy.rb", "lib/whois/record/parser/whois.nic.pr.rb", "lib/whois/record/parser/whois.nic.priv.at.rb", "lib/whois/record/parser/whois.nic.pw.rb", "lib/whois/record/parser/whois.nic.sh.rb", "lib/whois/record/parser/whois.nic.sl.rb", "lib/whois/record/parser/whois.nic.sm.rb", "lib/whois/record/parser/whois.nic.sn.rb", "lib/whois/record/parser/whois.nic.so.rb", "lib/whois/record/parser/whois.nic.st.rb", "lib/whois/record/parser/whois.nic.tel.rb", "lib/whois/record/parser/whois.nic.tl.rb", "lib/whois/record/parser/whois.nic.tm.rb", "lib/whois/record/parser/whois.nic.tr.rb", "lib/whois/record/parser/whois.nic.travel.rb", "lib/whois/record/parser/whois.nic.tv.rb", "lib/whois/record/parser/whois.nic.uk.rb", "lib/whois/record/parser/whois.nic.us.rb", "lib/whois/record/parser/whois.nic.ve.rb", "lib/whois/record/parser/whois.nic.xxx.rb", "lib/whois/record/parser/whois.norid.no.rb", "lib/whois/record/parser/whois.org.za.rb", "lib/whois/record/parser/whois.pairnic.com.rb", "lib/whois/record/parser/whois.pandi.or.id.rb", "lib/whois/record/parser/whois.pir.org.rb", "lib/whois/record/parser/whois.pnina.ps.rb", "lib/whois/record/parser/whois.register.bg.rb", "lib/whois/record/parser/whois.register.com.rb", "lib/whois/record/parser/whois.registro.br.rb", "lib/whois/record/parser/whois.registry.gy.rb", "lib/whois/record/parser/whois.registry.hm.rb", "lib/whois/record/parser/whois.registry.in.rb", "lib/whois/record/parser/whois.registry.net.za.rb", "lib/whois/record/parser/whois.registry.om.rb", "lib/whois/record/parser/whois.registry.qa.rb", "lib/whois/record/parser/whois.registrypro.pro.rb", "lib/whois/record/parser/whois.ripe.net.rb", "lib/whois/record/parser/whois.rnids.rs.rb", "lib/whois/record/parser/whois.rotld.ro.rb", "lib/whois/record/parser/whois.rrpproxy.net.rb", "lib/whois/record/parser/whois.schlund.info.rb", "lib/whois/record/parser/whois.sgnic.sg.rb", "lib/whois/record/parser/whois.sk-nic.sk.rb", "lib/whois/record/parser/whois.smallregistry.net.rb", "lib/whois/record/parser/whois.srs.net.nz.rb", "lib/whois/record/parser/whois.sx.rb", "lib/whois/record/parser/whois.tcinet.ru.rb", "lib/whois/record/parser/whois.thnic.co.th.rb", "lib/whois/record/parser/whois.tld.ee.rb", "lib/whois/record/parser/whois.tld.sy.rb", "lib/whois/record/parser/whois.tonic.to.rb", "lib/whois/record/parser/whois.tucows.com.rb", "lib/whois/record/parser/whois.twnic.net.tw.rb", "lib/whois/record/parser/whois.tznic.or.tz.rb", "lib/whois/record/parser/whois.ua.rb", "lib/whois/record/parser/whois.udag.net.rb", "lib/whois/record/parser/whois.usp.ac.fj.rb", "lib/whois/record/parser/whois.verisign-grs.com.rb", "lib/whois/record/parser/whois.website.ws.rb", "lib/whois/record/parser/whois.wildwestdomains.com.rb", "lib/whois/record/parser/whois.yoursrs.com.rb", "lib/whois/record/parser/whois.za.net.rb", "lib/whois/record/parser/whois.za.org.rb", "lib/whois/record/parser/whois1.nic.bi.rb", "lib/whois/record/parser.rb", "lib/whois/record/part.rb", "lib/whois/record/registrar.rb", "lib/whois/record/scanners", "lib/whois/record/scanners/base.rb", "lib/whois/record/scanners/base_afilias.rb", "lib/whois/record/scanners/base_cocca2.rb", "lib/whois/record/scanners/base_icann_compliant.rb", "lib/whois/record/scanners/base_iisse.rb", "lib/whois/record/scanners/base_shared1.rb", "lib/whois/record/scanners/base_shared2.rb", "lib/whois/record/scanners/base_shared3.rb", "lib/whois/record/scanners/base_whoisd.rb", "lib/whois/record/scanners/iana.rb", "lib/whois/record/scanners/scannable.rb", "lib/whois/record/scanners/verisign.rb", "lib/whois/record/scanners/whois.ati.tn.rb", "lib/whois/record/scanners/whois.audns.net.au.rb", "lib/whois/record/scanners/whois.cctld.by.rb", "lib/whois/record/scanners/whois.centralnic.com.rb", "lib/whois/record/scanners/whois.cira.ca.rb", "lib/whois/record/scanners/whois.cnnic.cn.rb", "lib/whois/record/scanners/whois.denic.de.rb", "lib/whois/record/scanners/whois.dns.hr.rb", "lib/whois/record/scanners/whois.domainregistry.ie.rb", "lib/whois/record/scanners/whois.fi.rb", "lib/whois/record/scanners/whois.nc.rb", "lib/whois/record/scanners/whois.nic.cz.rb", "lib/whois/record/scanners/whois.nic.it.rb", "lib/whois/record/scanners/whois.pir.org.rb", "lib/whois/record/scanners/whois.registry.net.za.rb", "lib/whois/record/scanners/whois.rnids.rs.rb", "lib/whois/record/scanners/whois.smallregistry.net.rb", "lib/whois/record/scanners/whois.srs.net.nz.rb", "lib/whois/record/scanners/whois.sx.rb", "lib/whois/record/scanners/whois.tucows.com.rb", "lib/whois/record/scanners/whois.yoursrs.com.rb", "lib/whois/record/super_struct.rb", "lib/whois/record.rb", "lib/whois/server", "lib/whois/server/adapters", "lib/whois/server/adapters/afilias.rb", "lib/whois/server/adapters/arin.rb", "lib/whois/server/adapters/arpa.rb", "lib/whois/server/adapters/base.rb", "lib/whois/server/adapters/formatted.rb", "lib/whois/server/adapters/none.rb", "lib/whois/server/adapters/not_implemented.rb", "lib/whois/server/adapters/standard.rb", "lib/whois/server/adapters/verisign.rb", "lib/whois/server/adapters/web.rb", "lib/whois/server/socket_handler.rb", "lib/whois/server.rb", "lib/whois/version.rb", "lib/whois.rb"]
14
14
  s.homepage = "http://www.ruby-whois.org/"
15
15
  s.licenses = ["MIT"]
16
16
  s.post_install_message = "********************************************************************************\n\n Thank you for installing the whois gem!\n\n If you like this gem, please support the project.\n http://pledgie.com/campaigns/11383\n\n Does your project or organization use this gem? Add it to the apps wiki.\n https://github.com/weppos/whois/wiki/apps\n\n Are you looking for a quick and convenient way to perform WHOIS queries?\n Check out RoboWhois WHOIS API.\n https://www.robowhois.com/\n\n********************************************************************************\n"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: whois
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.4
4
+ version: 3.4.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Simone Carletti
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2014-01-31 00:00:00.000000000 Z
11
+ date: 2014-03-06 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -100,6 +100,7 @@ files:
100
100
  - lib/whois/record/nameserver.rb
101
101
  - lib/whois/record/parser/base.rb
102
102
  - lib/whois/record/parser/base_afilias.rb
103
+ - lib/whois/record/parser/base_afilias2.rb
103
104
  - lib/whois/record/parser/base_cocca.rb
104
105
  - lib/whois/record/parser/base_cocca2.rb
105
106
  - lib/whois/record/parser/base_icann_compliant.rb