whois 0.8.1 → 0.9.0
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.
- data/CHANGELOG.rdoc +61 -0
- data/Manifest +87 -4
- data/README.rdoc +13 -9
- data/Rakefile +4 -1
- data/bin/ruby-whois +35 -21
- data/lib/whois.rb +6 -0
- data/lib/whois/answer.rb +30 -14
- data/lib/whois/answer/parser.rb +48 -11
- data/lib/whois/answer/parser/ast.rb +72 -0
- data/lib/whois/answer/parser/base.rb +14 -9
- data/lib/whois/answer/parser/blank.rb +1 -1
- data/lib/whois/answer/parser/scanners/verisign.rb +117 -0
- data/lib/whois/answer/parser/whois.aero.rb +74 -0
- data/lib/whois/answer/parser/whois.afilias-grs.info.rb +72 -0
- data/lib/whois/answer/parser/whois.afilias.info.rb +72 -0
- data/lib/whois/answer/parser/whois.crsnic.net.rb +5 -115
- data/lib/whois/answer/parser/whois.denic.de.rb +28 -25
- data/lib/whois/answer/parser/whois.domainregistry.ie.rb +74 -0
- data/lib/whois/answer/parser/whois.educause.edu.rb +76 -0
- data/lib/whois/answer/parser/whois.eu.org.rb +73 -0
- data/lib/whois/answer/parser/whois.iana.org.rb +75 -0
- data/lib/whois/answer/parser/whois.nic.asia.rb +74 -0
- data/lib/whois/answer/parser/whois.nic.fr.rb +77 -0
- data/lib/whois/answer/parser/whois.nic.gov.rb +71 -0
- data/lib/whois/answer/parser/whois.nic.hu.rb +332 -0
- data/lib/whois/answer/parser/whois.nic.it.rb +5 -23
- data/lib/whois/answer/parser/whois.nic.name.rb +73 -0
- data/lib/whois/answer/parser/whois.nic.tv.rb +99 -0
- data/lib/whois/answer/parser/whois.publicinterestregistry.net.rb +6 -24
- data/lib/whois/answer/parser/whois.za.net.rb +75 -0
- data/lib/whois/answer/parser/whois.za.org.rb +75 -0
- data/lib/whois/client.rb +4 -3
- data/lib/whois/definitions/tld.notes.txt +1 -0
- data/lib/whois/definitions/tlds.rb +11 -49
- data/lib/whois/version.rb +5 -6
- data/lib/whois/whois.rb +0 -6
- data/test/answer/parser/base_test.rb +21 -0
- data/test/answer/parser/blank_test.rb +1 -1
- data/test/answer/parser/whois.aero_test.rb +51 -0
- data/test/answer/parser/whois.afilias-grs.info_test.rb +51 -0
- data/test/answer/parser/whois.afilias.info_test.rb +51 -0
- data/test/answer/parser/{whois_crsnic_net_test.rb → whois.crsnic.net_test.rb} +15 -68
- data/test/answer/parser/{whois_denic_de_test.rb → whois.denic.de_test.rb} +9 -34
- data/test/answer/parser/whois.domainregistry.ie_test.rb +51 -0
- data/test/answer/parser/whois.educause.edu_test.rb +51 -0
- data/test/answer/parser/whois.eu.org_test.rb +51 -0
- data/test/answer/parser/whois.iana.org_test.rb +51 -0
- data/test/answer/parser/whois.nic.asia_test.rb +51 -0
- data/test/answer/parser/whois.nic.fr_test.rb +51 -0
- data/test/answer/parser/whois.nic.gov_test.rb +51 -0
- data/test/answer/parser/whois.nic.hu_test.rb +226 -0
- data/test/answer/parser/{whois_nic_it_test.rb → whois.nic.it_test.rb} +3 -25
- data/test/answer/parser/whois.nic.name_test.rb +51 -0
- data/test/answer/parser/whois.nic.tv_test.rb +122 -0
- data/test/answer/parser/{whois_publicinterestregistry_net_test.rb → whois.publicinterestregistry.net_test.rb} +4 -26
- data/test/answer/parser/whois.za.net_test.rb +51 -0
- data/test/answer/parser/whois.za.org_test.rb +51 -0
- data/test/answer/parser_test.rb +44 -3
- data/test/answer_test.rb +27 -13
- data/test/client_test.rb +18 -11
- data/test/list_tld +319 -0
- data/test/test_helper.rb +24 -0
- data/test/testcases/responses/whois.aero/available.txt +1 -0
- data/test/testcases/responses/whois.aero/registered.txt +102 -0
- data/test/testcases/responses/whois.afilias-grs.info/available.txt +1 -0
- data/test/testcases/responses/whois.afilias-grs.info/bz/available.txt +1 -0
- data/test/testcases/responses/whois.afilias-grs.info/bz/registered.txt +122 -0
- data/test/testcases/responses/whois.afilias-grs.info/gi/available.txt +1 -0
- data/test/testcases/responses/whois.afilias-grs.info/gi/registered.txt +98 -0
- data/test/testcases/responses/whois.afilias-grs.info/hn/available.txt +1 -0
- data/test/testcases/responses/whois.afilias-grs.info/hn/registered.txt +85 -0
- data/test/testcases/responses/whois.afilias-grs.info/lc/available.txt +1 -0
- data/test/testcases/responses/whois.afilias-grs.info/lc/registered.txt +83 -0
- data/test/testcases/responses/whois.afilias-grs.info/mn/available.txt +1 -0
- data/test/testcases/responses/whois.afilias-grs.info/mn/registered.txt +100 -0
- data/test/testcases/responses/whois.afilias-grs.info/registered.txt +122 -0
- data/test/testcases/responses/whois.afilias-grs.info/sc/available.txt +1 -0
- data/test/testcases/responses/whois.afilias-grs.info/sc/registered.txt +85 -0
- data/test/testcases/responses/whois.afilias-grs.info/vc/available.txt +1 -0
- data/test/testcases/responses/whois.afilias-grs.info/vc/registered.txt +100 -0
- data/test/testcases/responses/whois.afilias.info/available.txt +1 -0
- data/test/testcases/responses/whois.afilias.info/registered.txt +104 -0
- data/test/testcases/responses/whois.crsnic.net/MULTIPLE.txt +3 -0
- data/test/testcases/responses/whois.domainregistry.ie/available.txt +7 -0
- data/test/testcases/responses/whois.domainregistry.ie/registered.txt +26 -0
- data/test/testcases/responses/whois.educause.edu/available.txt +28 -0
- data/test/testcases/responses/whois.educause.edu/registered.txt +66 -0
- data/test/testcases/responses/whois.eu.org/available.txt +1 -0
- data/test/testcases/responses/whois.eu.org/registered.txt +19 -0
- data/test/testcases/responses/whois.iana.org/MULTIPLE.txt +3 -0
- data/test/testcases/responses/whois.iana.org/available.txt +7 -0
- data/test/testcases/responses/whois.iana.org/registered.txt +89 -0
- data/test/testcases/responses/whois.nic.asia/available.txt +1 -0
- data/test/testcases/responses/whois.nic.asia/registered.txt +159 -0
- data/test/testcases/responses/whois.nic.fr/MULTIPLE.txt +4 -0
- data/test/testcases/responses/whois.nic.fr/available.txt +19 -0
- data/test/testcases/responses/whois.nic.fr/registered.txt +98 -0
- data/test/testcases/responses/whois.nic.gov/available.txt +1 -0
- data/test/testcases/responses/whois.nic.gov/registered.txt +5 -0
- data/test/testcases/responses/whois.nic.hu/available.txt +12 -0
- data/test/testcases/responses/whois.nic.hu/in_progress.txt +13 -0
- data/test/testcases/responses/whois.nic.hu/registered.txt +65 -0
- data/test/testcases/responses/whois.nic.name/available.txt +29 -0
- data/test/testcases/responses/whois.nic.name/registered.txt +36 -0
- data/test/testcases/responses/whois.nic.name/reserved.txt +30 -0
- data/test/testcases/responses/whois.nic.tv/available.txt +44 -0
- data/test/testcases/responses/whois.nic.tv/registered.txt +54 -0
- data/test/testcases/responses/whois.za.net/available.txt +9 -0
- data/test/testcases/responses/whois.za.net/registered.txt +42 -0
- data/test/testcases/responses/whois.za.org/available.txt +9 -0
- data/test/testcases/responses/whois.za.org/registered.txt +44 -0
- data/whois.gemspec +9 -6
- metadata +138 -15
data/CHANGELOG.rdoc
CHANGED
|
@@ -1,6 +1,67 @@
|
|
|
1
1
|
= Changelog
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
== Release 0.9.0
|
|
5
|
+
|
|
6
|
+
* FIXED: .ec TLD has a whois server (closes #322)
|
|
7
|
+
|
|
8
|
+
* FIXED: .gl TLD has a whois server (closes #323)
|
|
9
|
+
|
|
10
|
+
* FIXED: .md TLD has a whois server (closes #325)
|
|
11
|
+
|
|
12
|
+
* FIXED: TLD definitions for whois.afilias-grs.info missing proper adapter (closes #342)
|
|
13
|
+
|
|
14
|
+
* FIXED: ./bin/ruby-whois uses the Gem instead of current version (closes #344)
|
|
15
|
+
|
|
16
|
+
* FIXED: Whois::Client doesn't cast qstring to_s (closes #339)
|
|
17
|
+
|
|
18
|
+
* FIXED: Whois::Parser doesn't detect preloaded parsers. Improved performances skipping unnecessary 'require'. (closes #340)
|
|
19
|
+
|
|
20
|
+
* ADDED: Simple .fr TLD parser.
|
|
21
|
+
|
|
22
|
+
* ADDED: Simple .name TLD parser.
|
|
23
|
+
|
|
24
|
+
* ADDED: Simple .ie TLD parser.
|
|
25
|
+
|
|
26
|
+
* ADDED: Simple .edu TLD parser.
|
|
27
|
+
|
|
28
|
+
* ADDED: Simple .info TLD parser.
|
|
29
|
+
|
|
30
|
+
* ADDED: Simple .gov TLD parser.
|
|
31
|
+
|
|
32
|
+
* ADDED: Simple .za.net TLD parser.
|
|
33
|
+
|
|
34
|
+
* ADDED: Simple .eu.org TLD parser.
|
|
35
|
+
|
|
36
|
+
* ADDED: Simple .za.org TLD parser.
|
|
37
|
+
|
|
38
|
+
* ADDED: Simple .int/.arpa TLD parser.
|
|
39
|
+
|
|
40
|
+
* ADDED: Simple .aero TLD parser.
|
|
41
|
+
|
|
42
|
+
* ADDED: Simple .asia TLD parser.
|
|
43
|
+
|
|
44
|
+
* ADDED: Simple .bz/.gi/.hn/.lc/.mn/.sc/.vc TLD parser.
|
|
45
|
+
|
|
46
|
+
* ADDED: .tv TLD parser.
|
|
47
|
+
|
|
48
|
+
* ADDED: .hu TLD parser.
|
|
49
|
+
|
|
50
|
+
* ADDED: Ability to pass timeout option to 'ruby-whois' (closes #334)
|
|
51
|
+
|
|
52
|
+
* ADDED: Whois::Answer#properties returns an Hash of :key => value
|
|
53
|
+
|
|
54
|
+
* CHANGED: Removed Whois::BUILD and Whois::STATUS constants. Added Whois::Version::ALPHA constant to be used when I need to package prereleases (see RubyGem --prerelease flag).
|
|
55
|
+
|
|
56
|
+
* CHANGED: Extracted Whois::Answer::Parser::Ast module from existing parsers.
|
|
57
|
+
|
|
58
|
+
* CHANGED: Normalized WhoisDenicDe parser.
|
|
59
|
+
|
|
60
|
+
* CHANGED: Changed .edu TLD server to whois.educause.edu (see http://www.iana.org/domains/root/db/edu.html)
|
|
61
|
+
|
|
62
|
+
* CHANGED: Renamed #supported to #property_supported?
|
|
63
|
+
|
|
64
|
+
|
|
4
65
|
== Release 0.8.1
|
|
5
66
|
|
|
6
67
|
* FIXED: Updated the whois.denic.de parser to the new format. Thanks to David Krentzlin (closes #314)
|
data/Manifest
CHANGED
|
@@ -15,12 +15,29 @@ lib/whois/answer.rb
|
|
|
15
15
|
lib/whois/answer/contact.rb
|
|
16
16
|
lib/whois/answer/parser.rb
|
|
17
17
|
lib/whois/answer/parser/README.rdoc
|
|
18
|
+
lib/whois/answer/parser/ast.rb
|
|
18
19
|
lib/whois/answer/parser/base.rb
|
|
19
20
|
lib/whois/answer/parser/blank.rb
|
|
21
|
+
lib/whois/answer/parser/scanners/verisign.rb
|
|
22
|
+
lib/whois/answer/parser/whois.aero.rb
|
|
23
|
+
lib/whois/answer/parser/whois.afilias-grs.info.rb
|
|
24
|
+
lib/whois/answer/parser/whois.afilias.info.rb
|
|
20
25
|
lib/whois/answer/parser/whois.crsnic.net.rb
|
|
21
26
|
lib/whois/answer/parser/whois.denic.de.rb
|
|
27
|
+
lib/whois/answer/parser/whois.domainregistry.ie.rb
|
|
28
|
+
lib/whois/answer/parser/whois.educause.edu.rb
|
|
29
|
+
lib/whois/answer/parser/whois.eu.org.rb
|
|
30
|
+
lib/whois/answer/parser/whois.iana.org.rb
|
|
31
|
+
lib/whois/answer/parser/whois.nic.asia.rb
|
|
32
|
+
lib/whois/answer/parser/whois.nic.fr.rb
|
|
33
|
+
lib/whois/answer/parser/whois.nic.gov.rb
|
|
34
|
+
lib/whois/answer/parser/whois.nic.hu.rb
|
|
22
35
|
lib/whois/answer/parser/whois.nic.it.rb
|
|
36
|
+
lib/whois/answer/parser/whois.nic.name.rb
|
|
37
|
+
lib/whois/answer/parser/whois.nic.tv.rb
|
|
23
38
|
lib/whois/answer/parser/whois.publicinterestregistry.net.rb
|
|
39
|
+
lib/whois/answer/parser/whois.za.net.rb
|
|
40
|
+
lib/whois/answer/parser/whois.za.org.rb
|
|
24
41
|
lib/whois/answer/part.rb
|
|
25
42
|
lib/whois/answer/registrar.rb
|
|
26
43
|
lib/whois/answer/super_struct.rb
|
|
@@ -29,6 +46,7 @@ lib/whois/definitions/ipv4.rb
|
|
|
29
46
|
lib/whois/definitions/ipv4.txt
|
|
30
47
|
lib/whois/definitions/ipv6.rb
|
|
31
48
|
lib/whois/definitions/ipv6.txt
|
|
49
|
+
lib/whois/definitions/tld.notes.txt
|
|
32
50
|
lib/whois/definitions/tlds.rb
|
|
33
51
|
lib/whois/definitions/tlds.txt
|
|
34
52
|
lib/whois/errors.rb
|
|
@@ -48,15 +66,31 @@ lib/whois/whois.rb
|
|
|
48
66
|
tasks/server.rake
|
|
49
67
|
test/answer/parser/base_test.rb
|
|
50
68
|
test/answer/parser/blank_test.rb
|
|
51
|
-
test/answer/parser/
|
|
52
|
-
test/answer/parser/
|
|
53
|
-
test/answer/parser/
|
|
54
|
-
test/answer/parser/
|
|
69
|
+
test/answer/parser/whois.aero_test.rb
|
|
70
|
+
test/answer/parser/whois.afilias-grs.info_test.rb
|
|
71
|
+
test/answer/parser/whois.afilias.info_test.rb
|
|
72
|
+
test/answer/parser/whois.crsnic.net_test.rb
|
|
73
|
+
test/answer/parser/whois.denic.de_test.rb
|
|
74
|
+
test/answer/parser/whois.domainregistry.ie_test.rb
|
|
75
|
+
test/answer/parser/whois.educause.edu_test.rb
|
|
76
|
+
test/answer/parser/whois.eu.org_test.rb
|
|
77
|
+
test/answer/parser/whois.iana.org_test.rb
|
|
78
|
+
test/answer/parser/whois.nic.asia_test.rb
|
|
79
|
+
test/answer/parser/whois.nic.fr_test.rb
|
|
80
|
+
test/answer/parser/whois.nic.gov_test.rb
|
|
81
|
+
test/answer/parser/whois.nic.hu_test.rb
|
|
82
|
+
test/answer/parser/whois.nic.it_test.rb
|
|
83
|
+
test/answer/parser/whois.nic.name_test.rb
|
|
84
|
+
test/answer/parser/whois.nic.tv_test.rb
|
|
85
|
+
test/answer/parser/whois.publicinterestregistry.net_test.rb
|
|
86
|
+
test/answer/parser/whois.za.net_test.rb
|
|
87
|
+
test/answer/parser/whois.za.org_test.rb
|
|
55
88
|
test/answer/parser_test.rb
|
|
56
89
|
test/answer_test.rb
|
|
57
90
|
test/client_test.rb
|
|
58
91
|
test/deprecated_test.rb
|
|
59
92
|
test/integration_test.rb
|
|
93
|
+
test/list_tld
|
|
60
94
|
test/server/adapters/afilias_test.rb
|
|
61
95
|
test/server/adapters/base_test.rb
|
|
62
96
|
test/server/adapters/formatted_test.rb
|
|
@@ -75,6 +109,27 @@ test/testcases/referrals/crsnic.com_one_server.txt
|
|
|
75
109
|
test/testcases/referrals/niccc.cc.txt
|
|
76
110
|
test/testcases/referrals/pir.org.txt
|
|
77
111
|
test/testcases/responses/super_struct_test.rb
|
|
112
|
+
test/testcases/responses/whois.aero/available.txt
|
|
113
|
+
test/testcases/responses/whois.aero/registered.txt
|
|
114
|
+
test/testcases/responses/whois.afilias-grs.info/available.txt
|
|
115
|
+
test/testcases/responses/whois.afilias-grs.info/bz/available.txt
|
|
116
|
+
test/testcases/responses/whois.afilias-grs.info/bz/registered.txt
|
|
117
|
+
test/testcases/responses/whois.afilias-grs.info/gi/available.txt
|
|
118
|
+
test/testcases/responses/whois.afilias-grs.info/gi/registered.txt
|
|
119
|
+
test/testcases/responses/whois.afilias-grs.info/hn/available.txt
|
|
120
|
+
test/testcases/responses/whois.afilias-grs.info/hn/registered.txt
|
|
121
|
+
test/testcases/responses/whois.afilias-grs.info/lc/available.txt
|
|
122
|
+
test/testcases/responses/whois.afilias-grs.info/lc/registered.txt
|
|
123
|
+
test/testcases/responses/whois.afilias-grs.info/mn/available.txt
|
|
124
|
+
test/testcases/responses/whois.afilias-grs.info/mn/registered.txt
|
|
125
|
+
test/testcases/responses/whois.afilias-grs.info/registered.txt
|
|
126
|
+
test/testcases/responses/whois.afilias-grs.info/sc/available.txt
|
|
127
|
+
test/testcases/responses/whois.afilias-grs.info/sc/registered.txt
|
|
128
|
+
test/testcases/responses/whois.afilias-grs.info/vc/available.txt
|
|
129
|
+
test/testcases/responses/whois.afilias-grs.info/vc/registered.txt
|
|
130
|
+
test/testcases/responses/whois.afilias.info/available.txt
|
|
131
|
+
test/testcases/responses/whois.afilias.info/registered.txt
|
|
132
|
+
test/testcases/responses/whois.crsnic.net/MULTIPLE.txt
|
|
78
133
|
test/testcases/responses/whois.crsnic.net/available.txt
|
|
79
134
|
test/testcases/responses/whois.crsnic.net/registered.txt
|
|
80
135
|
test/testcases/responses/whois.denic.de/1-10-0_available.txt
|
|
@@ -82,12 +137,40 @@ test/testcases/responses/whois.denic.de/1-10-0_registered.txt
|
|
|
82
137
|
test/testcases/responses/whois.denic.de/available.txt
|
|
83
138
|
test/testcases/responses/whois.denic.de/error_invalid_domain_name.txt
|
|
84
139
|
test/testcases/responses/whois.denic.de/registered.txt
|
|
140
|
+
test/testcases/responses/whois.domainregistry.ie/available.txt
|
|
141
|
+
test/testcases/responses/whois.domainregistry.ie/registered.txt
|
|
142
|
+
test/testcases/responses/whois.educause.edu/available.txt
|
|
143
|
+
test/testcases/responses/whois.educause.edu/registered.txt
|
|
144
|
+
test/testcases/responses/whois.eu.org/available.txt
|
|
145
|
+
test/testcases/responses/whois.eu.org/registered.txt
|
|
146
|
+
test/testcases/responses/whois.iana.org/MULTIPLE.txt
|
|
147
|
+
test/testcases/responses/whois.iana.org/available.txt
|
|
148
|
+
test/testcases/responses/whois.iana.org/registered.txt
|
|
149
|
+
test/testcases/responses/whois.nic.asia/available.txt
|
|
150
|
+
test/testcases/responses/whois.nic.asia/registered.txt
|
|
151
|
+
test/testcases/responses/whois.nic.fr/MULTIPLE.txt
|
|
152
|
+
test/testcases/responses/whois.nic.fr/available.txt
|
|
153
|
+
test/testcases/responses/whois.nic.fr/registered.txt
|
|
154
|
+
test/testcases/responses/whois.nic.gov/available.txt
|
|
155
|
+
test/testcases/responses/whois.nic.gov/registered.txt
|
|
156
|
+
test/testcases/responses/whois.nic.hu/available.txt
|
|
157
|
+
test/testcases/responses/whois.nic.hu/in_progress.txt
|
|
158
|
+
test/testcases/responses/whois.nic.hu/registered.txt
|
|
85
159
|
test/testcases/responses/whois.nic.it/available.txt
|
|
86
160
|
test/testcases/responses/whois.nic.it/registered.txt
|
|
87
161
|
test/testcases/responses/whois.nic.it/status_active.txt
|
|
88
162
|
test/testcases/responses/whois.nic.it/status_available.txt
|
|
163
|
+
test/testcases/responses/whois.nic.name/available.txt
|
|
164
|
+
test/testcases/responses/whois.nic.name/registered.txt
|
|
165
|
+
test/testcases/responses/whois.nic.name/reserved.txt
|
|
166
|
+
test/testcases/responses/whois.nic.tv/available.txt
|
|
167
|
+
test/testcases/responses/whois.nic.tv/registered.txt
|
|
89
168
|
test/testcases/responses/whois.publicinterestregistry.net/available.txt
|
|
90
169
|
test/testcases/responses/whois.publicinterestregistry.net/registered.txt
|
|
170
|
+
test/testcases/responses/whois.za.net/available.txt
|
|
171
|
+
test/testcases/responses/whois.za.net/registered.txt
|
|
172
|
+
test/testcases/responses/whois.za.org/available.txt
|
|
173
|
+
test/testcases/responses/whois.za.org/registered.txt
|
|
91
174
|
test/whois_test.rb
|
|
92
175
|
utils/bm_delegation_vs_inheritance.rb
|
|
93
176
|
utils/bm_shell_vs_pure.rb
|
data/README.rdoc
CHANGED
|
@@ -17,7 +17,6 @@ An extensive test suite is available to verify the library correctness but you m
|
|
|
17
17
|
* Powerful whois response parser
|
|
18
18
|
* Support for ipv6, ipv4 and top level domain whois queries
|
|
19
19
|
* Object oriented design
|
|
20
|
-
* Compatible with older Whois version (Whois 0.4.2, see below)
|
|
21
20
|
* Compatible with Ruby 1.8.6 and greater, including Ruby 1.9
|
|
22
21
|
|
|
23
22
|
|
|
@@ -36,8 +35,7 @@ Do you run any other Ruby platform or version? Are you experiencing any problem?
|
|
|
36
35
|
|
|
37
36
|
== Installation
|
|
38
37
|
|
|
39
|
-
This library is intended to be installed
|
|
40
|
-
RubyGems[http://rubyforge.org/projects/rubygems/] system.
|
|
38
|
+
This library is intended to be installed as a Gem.
|
|
41
39
|
|
|
42
40
|
$ gem install whois
|
|
43
41
|
|
|
@@ -77,16 +75,16 @@ The query method is stateless. For this reason, you can safely re-use the same c
|
|
|
77
75
|
w.query("2001:db8::1428:57ab")
|
|
78
76
|
w.query("google.it")
|
|
79
77
|
|
|
80
|
-
If you just need a WHOIS response and you don't care about a full control of the WHOIS Client, Whois comes with a simple method called whois. This is the simplest way to send a WHOIS request.
|
|
78
|
+
If you just need a WHOIS response and you don't care about a full control of the WHOIS Client, <tt>Whois</tt> comes with a simple method called whois. This is the simplest way to send a WHOIS request.
|
|
81
79
|
|
|
82
80
|
Whois.whois("google.com")
|
|
83
81
|
# => #<Whois::Answer>
|
|
84
82
|
|
|
85
83
|
=== Consuming the Answer
|
|
86
84
|
|
|
87
|
-
As of release 0.8, a WHOIS query no longer returns a simple string. Instead, you get a full Whois::Answer instance and this is just the beginning of the story.
|
|
85
|
+
As of release 0.8, a WHOIS query no longer returns a simple string. Instead, you get a full <tt>Whois::Answer</tt> instance and this is just the beginning of the story.
|
|
88
86
|
|
|
89
|
-
Whois::Answer is a super powerful object. It encapsulates the full WHOIS answer and it provides you the ability to parse the WHOIS response with a full object oriented notation.
|
|
87
|
+
<tt>Whois::Answer</tt> is a super powerful object. It encapsulates the full WHOIS answer and it provides you the ability to parse the WHOIS response with a full object oriented notation.
|
|
90
88
|
|
|
91
89
|
a = Whois.whois("google.it")
|
|
92
90
|
# => #<Whois::Answer>
|
|
@@ -110,7 +108,7 @@ Whois::Answer is a super powerful object. It encapsulates the full WHOIS answer
|
|
|
110
108
|
puts nameserver
|
|
111
109
|
end
|
|
112
110
|
|
|
113
|
-
This feature is made possible by the Whois answer parsers. Unfortunately, due to the lack of a global standard, each WHOIS server requires a specific parser. For this reason, the library doesn't support all existing WHOIS servers.
|
|
111
|
+
This feature is made possible by the <tt>Whois</tt> answer parsers. Unfortunately, due to the lack of a global standard, each WHOIS server requires a specific parser. For this reason, the library doesn't support all existing WHOIS servers.
|
|
114
112
|
|
|
115
113
|
If you create a new parser, please consider releasing it to the public so that it can be included in a next version.
|
|
116
114
|
|
|
@@ -156,10 +154,16 @@ Ruby Whois 0.4.2 is released under the MIT license.
|
|
|
156
154
|
Copyright (c) 2007 by Cyril Mougel (cyril.mougel@gmail.com)
|
|
157
155
|
|
|
158
156
|
|
|
159
|
-
==
|
|
157
|
+
== Author
|
|
160
158
|
|
|
161
159
|
Author:: {Simone Carletti}[http://www.simonecarletti.com/] <weppos@weppos.net>
|
|
162
|
-
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
== Thanks to
|
|
163
|
+
|
|
164
|
+
* {Cyril Mougel}[http://blog.shingara.fr/] <cyril.mougel@gmail.com> Author of the initial Whois GEM
|
|
165
|
+
* {Gábor Vészi}[http://well.done.hu/] .hu whois parser
|
|
166
|
+
* {Aaron Mueller}[http://aaron-mueller.de/] .de whois parser
|
|
163
167
|
|
|
164
168
|
|
|
165
169
|
== FeedBack and Bug reports
|
data/Rakefile
CHANGED
|
@@ -4,7 +4,8 @@ require 'rubygems'
|
|
|
4
4
|
require 'rake'
|
|
5
5
|
require 'echoe'
|
|
6
6
|
require 'whois'
|
|
7
|
-
|
|
7
|
+
require 'rake/rdoctask'
|
|
8
|
+
require 'hanna/rdoctask'
|
|
8
9
|
|
|
9
10
|
# Common package properties
|
|
10
11
|
PKG_NAME = ENV['PKG_NAME'] || Whois::GEM
|
|
@@ -31,9 +32,11 @@ Echoe.new(PKG_NAME, PKG_VERSION) do |p|
|
|
|
31
32
|
p.need_zip = true
|
|
32
33
|
|
|
33
34
|
p.development_dependencies += ["rake ~>0.8",
|
|
35
|
+
"hanna ~>0.1.12",
|
|
34
36
|
"echoe ~>3.1",
|
|
35
37
|
"mocha ~>0.9"]
|
|
36
38
|
|
|
39
|
+
p.rdoc_options = ["--inline-source", "-T", "hanna"]
|
|
37
40
|
p.rcov_options = ["-Itest -x mocha,rcov,Rakefile"]
|
|
38
41
|
end
|
|
39
42
|
|
data/bin/ruby-whois
CHANGED
|
@@ -1,37 +1,51 @@
|
|
|
1
1
|
#!/usr/bin/env ruby -wKU
|
|
2
2
|
|
|
3
|
+
$:.unshift(File.dirname(__FILE__) + "/../lib")
|
|
4
|
+
|
|
3
5
|
require 'optparse'
|
|
4
|
-
require '
|
|
6
|
+
require 'ostruct'
|
|
5
7
|
require 'whois'
|
|
6
8
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
opts.
|
|
11
|
-
opts.
|
|
12
|
-
opts.separator
|
|
13
|
-
opts.separator
|
|
14
|
-
opts.separator "
|
|
15
|
-
opts.separator "
|
|
16
|
-
|
|
9
|
+
|
|
10
|
+
options = OpenStruct.new
|
|
11
|
+
OptionParser.new do |opts|
|
|
12
|
+
opts.banner = "Whois: an intelligent pure Ruby Whois client"
|
|
13
|
+
opts.define_head "Usage: whois [options] object"
|
|
14
|
+
opts.separator ""
|
|
15
|
+
opts.separator "Examples:"
|
|
16
|
+
opts.separator " whois ruby-lang.com"
|
|
17
|
+
opts.separator " whois 213.149.247.64"
|
|
18
|
+
opts.separator ""
|
|
19
|
+
opts.separator "Options:"
|
|
20
|
+
|
|
21
|
+
opts.on("-t", "--timeout [SECONDS]", Integer, "Specify the timeout value") do |seconds|
|
|
22
|
+
options.timeout = seconds
|
|
23
|
+
end
|
|
24
|
+
|
|
17
25
|
opts.on_tail("--help", "Show this message") do
|
|
18
26
|
puts opts
|
|
19
27
|
exit
|
|
20
28
|
end
|
|
21
|
-
|
|
22
|
-
opts.on_tail("-
|
|
29
|
+
|
|
30
|
+
opts.on_tail("-v", "--version", "Show version") do
|
|
23
31
|
puts "#{Whois::NAME} #{Whois::VERSION}"
|
|
24
32
|
exit
|
|
25
33
|
end
|
|
34
|
+
|
|
35
|
+
begin
|
|
36
|
+
opts.parse!
|
|
37
|
+
rescue OptionParser::ParseError
|
|
38
|
+
puts opts
|
|
39
|
+
exit 1
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
if ARGV.size.zero?
|
|
43
|
+
puts opts
|
|
44
|
+
exit 1
|
|
45
|
+
end
|
|
26
46
|
end
|
|
27
|
-
|
|
28
|
-
|
|
47
|
+
|
|
29
48
|
qstring = ARGV.shift
|
|
30
49
|
|
|
31
|
-
|
|
32
|
-
puts opts
|
|
33
|
-
exit 1
|
|
34
|
-
end
|
|
35
|
-
|
|
36
|
-
@client = Whois::Client.new
|
|
50
|
+
@client = Whois::Client.new(:timeout => options.timeout)
|
|
37
51
|
puts @client.query(qstring)
|
data/lib/whois.rb
CHANGED
|
@@ -98,4 +98,10 @@ module Whois
|
|
|
98
98
|
Client.new.query(qstring)
|
|
99
99
|
end
|
|
100
100
|
|
|
101
|
+
|
|
102
|
+
def self.deprecate(message = nil)
|
|
103
|
+
message ||= "You are using deprecated behavior which will be removed from the next major or minor release."
|
|
104
|
+
$stderr.puts("DEPRECATION WARNING: #{message}")
|
|
105
|
+
end
|
|
106
|
+
|
|
101
107
|
end
|
data/lib/whois/answer.rb
CHANGED
|
@@ -30,21 +30,27 @@ module Whois
|
|
|
30
30
|
@server = server
|
|
31
31
|
end
|
|
32
32
|
|
|
33
|
-
|
|
33
|
+
|
|
34
34
|
def to_s
|
|
35
35
|
content.to_s
|
|
36
36
|
end
|
|
37
|
-
|
|
37
|
+
|
|
38
38
|
def inspect
|
|
39
39
|
content.inspect
|
|
40
40
|
end
|
|
41
|
-
|
|
41
|
+
|
|
42
42
|
# Invokes <tt>match</tt> on answer <tt>@content</tt>
|
|
43
43
|
# and returns the <tt>MatchData</tt> or <tt>nil</tt>.
|
|
44
44
|
def match(pattern)
|
|
45
45
|
content.match(pattern)
|
|
46
46
|
end
|
|
47
|
-
|
|
47
|
+
|
|
48
|
+
# Invokes <tt>match</tt> and returns <tt>true</tt> if <tt>pattern</tt>
|
|
49
|
+
# matches <tt>@content</tt>, <tt>false</tt> otherwise.
|
|
50
|
+
def match?(pattern)
|
|
51
|
+
!content.match(pattern).nil?
|
|
52
|
+
end
|
|
53
|
+
|
|
48
54
|
# Returns true if the <tt>object</tt> is the same object,
|
|
49
55
|
# or is a string and has the same content.
|
|
50
56
|
def ==(other)
|
|
@@ -53,7 +59,7 @@ module Whois
|
|
|
53
59
|
(other.instance_of?(String) && other == self.to_s) ||
|
|
54
60
|
(other.instance_of?(Answer) && other.to_s == self.to_s)
|
|
55
61
|
end
|
|
56
|
-
|
|
62
|
+
|
|
57
63
|
# Delegates to ==.
|
|
58
64
|
def eql?(other)
|
|
59
65
|
self == other
|
|
@@ -97,23 +103,33 @@ module Whois
|
|
|
97
103
|
end
|
|
98
104
|
|
|
99
105
|
|
|
100
|
-
# Invokes <tt>match</tt> and returns <tt>true</tt> if <tt>pattern</tt>
|
|
101
|
-
# matches <tt>@content</tt>, <tt>false</tt> otherwise.
|
|
102
|
-
def match?(pattern)
|
|
103
|
-
!content.match(pattern).nil?
|
|
104
|
-
end
|
|
105
|
-
|
|
106
106
|
|
|
107
107
|
# Lazy-loads and returns a <tt>Whois::Answer::Parser</tt> proxy for current answer.
|
|
108
108
|
def parser
|
|
109
109
|
@parser ||= Parser.new(self)
|
|
110
110
|
end
|
|
111
111
|
|
|
112
|
+
|
|
113
|
+
# Returns a Hash containing all supported properties for this Answer
|
|
114
|
+
# along with corresponding values.
|
|
115
|
+
def properties
|
|
116
|
+
list = Parser.properties.inject([]) do |l,a|
|
|
117
|
+
l.concat([a, send(a)]) if property_supported?(a)
|
|
118
|
+
l
|
|
119
|
+
end
|
|
120
|
+
Hash[*list]
|
|
121
|
+
end
|
|
122
|
+
|
|
112
123
|
# Returns <tt>true</tt> if the <tt>property</tt> passed as symbol
|
|
113
124
|
# is supported by any available parser for this answer.
|
|
114
125
|
# See also <tt>Whois::Answer::Parser.supported?</tt>.
|
|
115
|
-
def
|
|
116
|
-
parser.
|
|
126
|
+
def property_supported?(property)
|
|
127
|
+
parser.property_supported?(property)
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def supported?(*args)
|
|
131
|
+
::Whois.deprecate "supported? is deprecated. Use property_supported? instead."
|
|
132
|
+
property_supported?(*args)
|
|
117
133
|
end
|
|
118
134
|
|
|
119
135
|
|
|
@@ -121,7 +137,7 @@ module Whois
|
|
|
121
137
|
|
|
122
138
|
# Delegates all method calls to the internal parser.
|
|
123
139
|
def method_missing(method, *args, &block)
|
|
124
|
-
if Parser.
|
|
140
|
+
if Parser.properties.include?(method)
|
|
125
141
|
parser.send(method, *args, &block)
|
|
126
142
|
else
|
|
127
143
|
super
|