whois 0.8.1 → 0.9.0
Sign up to get free protection for your applications and to get access to all the features.
- 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
|