whois 3.4.4 → 3.4.5

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 (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