whois-parser-next 0.4.3 → 0.4.4
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.
- checksums.yaml +4 -4
- data/CHANGELOG.md +23 -0
- data/lib/whois/parser/version.rb +1 -1
- data/lib/whois/parsers/base_jwhois.rb +13 -5
- data/lib/whois/parsers/whois.dnrs.vu.rb +26 -0
- data/lib/whois/parsers/whois.nic.do.rb +15 -0
- data/lib/whois/parsers/whois.nic.gh.rb +15 -0
- metadata +4 -1
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f4c96a0a74b64788109bc1bf2d100571089e9bbbd49668c8146e175567b0f08c
|
|
4
|
+
data.tar.gz: e9e721292aaad948280edebea47d502ce309c1db903be8da692bfb50bf4e6e00
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: daf6ebf45111891d95f5c3bd6bc0bc57d5be7a0e641fd8054cdb359bf5bc64a2406db5cc4aeb9cf02e195e65a740abc15260b5f092f3c23b75a1c6927bc3a56a
|
|
7
|
+
data.tar.gz: 87849973634827aa16cc8ecad6e78031cf348ee01351709217bcfc9580cf9603a7943824d87df9a0222d76bf7940db020b4dc5928f2141f225390dfffc07e639
|
data/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,29 @@
|
|
|
2
2
|
|
|
3
3
|
This project uses [Semantic Versioning 2.0.0](http://semver.org/).
|
|
4
4
|
|
|
5
|
+
#### Release 0.4.4 (2026-10-18)
|
|
6
|
+
|
|
7
|
+
- ADDED: Added parsers for the current `.gh` and `.do` CoCCA WHOIS response
|
|
8
|
+
shapes, including exact EPP registration states and `No Object Found`
|
|
9
|
+
absence responses. Added `.vu` handling for registered records and the exact
|
|
10
|
+
GoDaddy `No Data Found` response. Domain identity checks remain strict, and
|
|
11
|
+
mixed or ambiguous replies remain unknown.
|
|
12
|
+
- FIXED: Scope JWhois `NO OBJECT FOUND!` blocks to the named object. Missing
|
|
13
|
+
contact objects no longer make a domain with registered record data appear
|
|
14
|
+
available; absence requires one exact domain-object response. Malformed or
|
|
15
|
+
mixed domain absence remains unknown. Added two regression examples.
|
|
16
|
+
- EVIDENCE: IANA lists `whois.nic.gh`, `whois.nic.do`, and `whois.dnrs.vu`
|
|
17
|
+
for [`.gh`](https://www.iana.org/domains/root/db/gh.html),
|
|
18
|
+
[`.do`](https://www.iana.org/domains/root/db/do.html), and
|
|
19
|
+
[`.vu`](https://www.iana.org/domains/root/db/vu.html). IANA lists
|
|
20
|
+
`whois.mediaserv.net` for [`.mq`](https://www.iana.org/domains/root/db/mq.html).
|
|
21
|
+
The `.gh`, `.do`, and `.vu` fixtures are minimal synthetic shape controls;
|
|
22
|
+
the `.mq` regression uses an inline synthetic response. Live response
|
|
23
|
+
originals and personal contact details are not included.
|
|
24
|
+
- TESTED: The full suite passes 7,054 examples with 0 failures on Ruby 3.2.2
|
|
25
|
+
and 3.4.5. Package smoke passes on both versions. The supported-Ruby CI
|
|
26
|
+
matrix is the release gate.
|
|
27
|
+
|
|
5
28
|
#### Release 0.4.3 (2026-10-18)
|
|
6
29
|
|
|
7
30
|
- ADDED: Add the official `.ls` WHOIS parser for the registered `domain`,
|
data/lib/whois/parser/version.rb
CHANGED
|
@@ -14,17 +14,25 @@ module Whois
|
|
|
14
14
|
end
|
|
15
15
|
|
|
16
16
|
property_supported :status do
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
17
|
+
text = content_for_scanner
|
|
18
|
+
domains = text.scan(/^domain:[ \t]*(\S+)[ \t]*\r?$/i).flatten
|
|
19
|
+
missing = text.scan(/^NO OBJECT FOUND![ \t]*\r?\nobject:[ \t]*(\S+)[ \t]*\r?\ntype:[ \t]*([^\r\n]+)$/i)
|
|
20
|
+
markers = text.scan(/^NO OBJECT FOUND![ \t]*\r?$/i).length
|
|
21
|
+
return :unknown unless markers == missing.length
|
|
22
|
+
|
|
23
|
+
if domains.empty?
|
|
24
|
+
missing.one? && missing.first.last.strip.casecmp('domain').zero? &&
|
|
25
|
+
missing.first.first.match?(/\A(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+(?:gf|mq)\z/i) ? :available : :unknown
|
|
26
|
+
elsif domains.one? && domains.first.match?(/\A(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+(?:gf|mq)\z/i) && registered_evidence?
|
|
27
|
+
# Referenced person objects may be absent while the domain exists.
|
|
28
|
+
missing.all? { |name, type| type.strip.casecmp('person').zero? && !name.casecmp(domains.first).zero? } ? :registered : :unknown
|
|
21
29
|
else
|
|
22
30
|
:unknown
|
|
23
31
|
end
|
|
24
32
|
end
|
|
25
33
|
|
|
26
34
|
property_supported :available? do
|
|
27
|
-
|
|
35
|
+
status == :available
|
|
28
36
|
end
|
|
29
37
|
|
|
30
38
|
property_supported :registered? do
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
require_relative 'whois.biz'
|
|
2
|
+
require_relative 'registry_response_safety'
|
|
3
|
+
|
|
4
|
+
module Whois
|
|
5
|
+
class Parsers
|
|
6
|
+
class WhoisDnrsVu < WhoisBiz
|
|
7
|
+
include RegistryResponseSafety
|
|
8
|
+
|
|
9
|
+
property_supported :status do
|
|
10
|
+
text = content_for_scanner
|
|
11
|
+
absence = text.scan(/^No Data Found[ \t]*\r?$/i)
|
|
12
|
+
record = text.match?(/^(?:Domain Name|Registry Domain ID|Creation Date|Registry Expiry Date|Registrar|Domain Status|Name Server):[ \t]*\S/i)
|
|
13
|
+
if absence.any?
|
|
14
|
+
absence.one? && !record ? :available : :unknown
|
|
15
|
+
else
|
|
16
|
+
names = text.scan(/^Domain Name:[ \t]*([^\r\n]+)$/i).flatten.map(&:strip)
|
|
17
|
+
details = text.match?(/^(?:Registry Domain ID|Creation Date|Registry Expiry Date|Registrar):[ \t]*\S/i)
|
|
18
|
+
names.one? && names.first.match?(/\A(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.)+vu\z/i) && details ? :registered : :unknown
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
property_supported(:available?) { status == :available }
|
|
23
|
+
property_supported(:registered?) { status == :registered }
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require_relative 'base_cocca2'
|
|
2
|
+
require_relative 'cocca_epp_status'
|
|
3
|
+
|
|
4
|
+
module Whois
|
|
5
|
+
class Parsers
|
|
6
|
+
class WhoisNicDo < BaseCocca2
|
|
7
|
+
include CoccaEppStatus
|
|
8
|
+
CURRENT_COCCA_SUFFIX = "do".freeze
|
|
9
|
+
|
|
10
|
+
property_supported(:status) { current_cocca_status || :unknown }
|
|
11
|
+
property_supported(:available?) { status == :available }
|
|
12
|
+
property_supported(:registered?) { status == :registered }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
require_relative 'base_cocca2'
|
|
2
|
+
require_relative 'cocca_epp_status'
|
|
3
|
+
|
|
4
|
+
module Whois
|
|
5
|
+
class Parsers
|
|
6
|
+
class WhoisNicGh < BaseCocca2
|
|
7
|
+
include CoccaEppStatus
|
|
8
|
+
CURRENT_COCCA_SUFFIX = "gh".freeze
|
|
9
|
+
|
|
10
|
+
property_supported(:status) { current_cocca_status || :unknown }
|
|
11
|
+
property_supported(:available?) { status == :available }
|
|
12
|
+
property_supported(:registered?) { status == :registered }
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: whois-parser-next
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.4.
|
|
4
|
+
version: 0.4.4
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Simone Carletti
|
|
@@ -237,6 +237,7 @@ files:
|
|
|
237
237
|
- lib/whois/parsers/whois.corporatedomains.com.rb
|
|
238
238
|
- lib/whois/parsers/whois.denic.de.rb
|
|
239
239
|
- lib/whois/parsers/whois.dk-hostmaster.dk.rb
|
|
240
|
+
- lib/whois/parsers/whois.dnrs.vu.rb
|
|
240
241
|
- lib/whois/parsers/whois.dns.be.rb
|
|
241
242
|
- lib/whois/parsers/whois.dns.hr.rb
|
|
242
243
|
- lib/whois/parsers/whois.dns.lu.rb
|
|
@@ -399,6 +400,7 @@ files:
|
|
|
399
400
|
- lib/whois/parsers/whois.nic.direct.rb
|
|
400
401
|
- lib/whois/parsers/whois.nic.directory.rb
|
|
401
402
|
- lib/whois/parsers/whois.nic.dm.rb
|
|
403
|
+
- lib/whois/parsers/whois.nic.do.rb
|
|
402
404
|
- lib/whois/parsers/whois.nic.doctor.rb
|
|
403
405
|
- lib/whois/parsers/whois.nic.dog.rb
|
|
404
406
|
- lib/whois/parsers/whois.nic.domains.rb
|
|
@@ -442,6 +444,7 @@ files:
|
|
|
442
444
|
- lib/whois/parsers/whois.nic.gd.rb
|
|
443
445
|
- lib/whois/parsers/whois.nic.ge.rb
|
|
444
446
|
- lib/whois/parsers/whois.nic.gent.rb
|
|
447
|
+
- lib/whois/parsers/whois.nic.gh.rb
|
|
445
448
|
- lib/whois/parsers/whois.nic.gifts.rb
|
|
446
449
|
- lib/whois/parsers/whois.nic.gives.rb
|
|
447
450
|
- lib/whois/parsers/whois.nic.giving.rb
|