whois 5.0.1 → 5.0.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +26 -0
- data/.rubocop_opinionated.yml +157 -0
- data/.rubocop_todo.yml +242 -0
- data/.simplecov +2 -0
- data/.tool-versions +1 -0
- data/CHANGELOG.md +68 -53
- data/Gemfile +5 -0
- data/LICENSE.txt +1 -1
- data/README.md +1 -1
- data/Rakefile +12 -17
- data/bin/console +1 -0
- data/bin/whoisrb +3 -2
- data/data/ipv4.json +1 -3
- data/data/tld.json +2 -90
- data/lib/whois.rb +12 -10
- data/lib/whois/client.rb +4 -2
- data/lib/whois/errors.rb +4 -2
- data/lib/whois/record.rb +3 -1
- data/lib/whois/record/part.rb +4 -3
- data/lib/whois/server.rb +26 -21
- data/lib/whois/server/adapters/afilias.rb +4 -1
- data/lib/whois/server/adapters/arin.rb +5 -2
- data/lib/whois/server/adapters/arpa.rb +22 -19
- data/lib/whois/server/adapters/base.rb +4 -4
- data/lib/whois/server/adapters/formatted.rb +4 -2
- data/lib/whois/server/adapters/none.rb +3 -1
- data/lib/whois/server/adapters/not_implemented.rb +3 -1
- data/lib/whois/server/adapters/standard.rb +4 -2
- data/lib/whois/server/adapters/verisign.rb +4 -1
- data/lib/whois/server/adapters/web.rb +3 -1
- data/lib/whois/server/socket_handler.rb +8 -6
- data/lib/whois/version.rb +4 -2
- data/spec/integration/whois_spec.rb +6 -6
- data/spec/spec_helper.rb +4 -2
- data/spec/support/helpers/connectivity_helper.rb +2 -0
- data/spec/support/helpers/spec_helper.rb +2 -0
- data/spec/whois/client_spec.rb +6 -7
- data/spec/whois/record/part_spec.rb +4 -4
- data/spec/whois/record_spec.rb +9 -7
- data/spec/whois/server/adapters/afilias_spec.rb +3 -3
- data/spec/whois/server/adapters/arin_spec.rb +7 -8
- data/spec/whois/server/adapters/arpa_spec.rb +2 -2
- data/spec/whois/server/adapters/base_spec.rb +13 -13
- data/spec/whois/server/adapters/formatted_spec.rb +7 -7
- data/spec/whois/server/adapters/none_spec.rb +2 -2
- data/spec/whois/server/adapters/not_implemented_spec.rb +3 -3
- data/spec/whois/server/adapters/standard_spec.rb +5 -5
- data/spec/whois/server/adapters/verisign_spec.rb +3 -3
- data/spec/whois/server/adapters/web_spec.rb +3 -3
- data/spec/whois/server/socket_handler_spec.rb +7 -5
- data/spec/whois/server_spec.rb +31 -29
- data/spec/whois/{errors_spec.rb → web_interface_error_spec.rb} +4 -4
- data/spec/whois/whois_spec.rb +3 -3
- metadata +11 -8
- data/tasks/spec.rake +0 -199
@@ -1,16 +1,17 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Whois::WebInterfaceError do
|
4
|
-
|
5
6
|
describe "#initialize" do
|
6
7
|
it "sets the URL" do
|
7
8
|
expect(described_class.new("http://example.com").url).to eq("http://example.com")
|
8
9
|
end
|
9
10
|
|
10
11
|
it "requires the URL argument" do
|
11
|
-
expect
|
12
|
+
expect do
|
12
13
|
described_class.new
|
13
|
-
|
14
|
+
end.to raise_error(ArgumentError)
|
14
15
|
end
|
15
16
|
end
|
16
17
|
|
@@ -19,5 +20,4 @@ describe Whois::WebInterfaceError do
|
|
19
20
|
expect(described_class.new("http://example.com").message).to match(%r{http://example.com})
|
20
21
|
end
|
21
22
|
end
|
22
|
-
|
23
23
|
end
|
data/spec/whois/whois_spec.rb
CHANGED
@@ -1,15 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'spec_helper'
|
2
4
|
|
3
5
|
describe Whois do
|
4
|
-
|
5
6
|
describe ".lookup" do
|
6
7
|
it "delegates the lookup to a new client" do
|
7
|
-
client = double
|
8
|
+
client = double
|
8
9
|
expect(client).to receive(:lookup).with("example.com").and_return(:result)
|
9
10
|
expect(Whois::Client).to receive(:new).and_return(client)
|
10
11
|
|
11
12
|
expect(described_class.lookup("example.com")).to eq(:result)
|
12
13
|
end
|
13
14
|
end
|
14
|
-
|
15
15
|
end
|
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: 5.0.
|
4
|
+
version: 5.0.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simone Carletti
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|
@@ -67,7 +67,11 @@ files:
|
|
67
67
|
- ".github/FUNDING.yml"
|
68
68
|
- ".gitignore"
|
69
69
|
- ".rspec"
|
70
|
+
- ".rubocop.yml"
|
71
|
+
- ".rubocop_opinionated.yml"
|
72
|
+
- ".rubocop_todo.yml"
|
70
73
|
- ".simplecov"
|
74
|
+
- ".tool-versions"
|
71
75
|
- ".travis.yml"
|
72
76
|
- ".yardopts"
|
73
77
|
- 4.0-Upgrade.md
|
@@ -118,7 +122,6 @@ files:
|
|
118
122
|
- spec/support/helpers/connectivity_helper.rb
|
119
123
|
- spec/support/helpers/spec_helper.rb
|
120
124
|
- spec/whois/client_spec.rb
|
121
|
-
- spec/whois/errors_spec.rb
|
122
125
|
- spec/whois/record/part_spec.rb
|
123
126
|
- spec/whois/record_spec.rb
|
124
127
|
- spec/whois/server/adapters/afilias_spec.rb
|
@@ -133,8 +136,8 @@ files:
|
|
133
136
|
- spec/whois/server/adapters/web_spec.rb
|
134
137
|
- spec/whois/server/socket_handler_spec.rb
|
135
138
|
- spec/whois/server_spec.rb
|
139
|
+
- spec/whois/web_interface_error_spec.rb
|
136
140
|
- spec/whois/whois_spec.rb
|
137
|
-
- tasks/spec.rake
|
138
141
|
- utils/compare-whois.rb
|
139
142
|
- utils/deftld.rb
|
140
143
|
- utils/defutils.rb
|
@@ -146,7 +149,7 @@ homepage: https://whoisrb.org/
|
|
146
149
|
licenses:
|
147
150
|
- MIT
|
148
151
|
metadata: {}
|
149
|
-
post_install_message:
|
152
|
+
post_install_message:
|
150
153
|
rdoc_options: []
|
151
154
|
require_paths:
|
152
155
|
- lib
|
@@ -162,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
162
165
|
version: '0'
|
163
166
|
requirements: []
|
164
167
|
rubygems_version: 3.1.2
|
165
|
-
signing_key:
|
168
|
+
signing_key:
|
166
169
|
specification_version: 4
|
167
170
|
summary: An intelligent pure Ruby WHOIS client and parser.
|
168
171
|
test_files:
|
@@ -181,7 +184,6 @@ test_files:
|
|
181
184
|
- spec/support/helpers/connectivity_helper.rb
|
182
185
|
- spec/support/helpers/spec_helper.rb
|
183
186
|
- spec/whois/client_spec.rb
|
184
|
-
- spec/whois/errors_spec.rb
|
185
187
|
- spec/whois/record/part_spec.rb
|
186
188
|
- spec/whois/record_spec.rb
|
187
189
|
- spec/whois/server/adapters/afilias_spec.rb
|
@@ -196,4 +198,5 @@ test_files:
|
|
196
198
|
- spec/whois/server/adapters/web_spec.rb
|
197
199
|
- spec/whois/server/socket_handler_spec.rb
|
198
200
|
- spec/whois/server_spec.rb
|
201
|
+
- spec/whois/web_interface_error_spec.rb
|
199
202
|
- spec/whois/whois_spec.rb
|
data/tasks/spec.rake
DELETED
@@ -1,199 +0,0 @@
|
|
1
|
-
require 'fileutils'
|
2
|
-
|
3
|
-
namespace :spec do
|
4
|
-
|
5
|
-
ROOT_DIR = File.expand_path("../../", __FILE__)
|
6
|
-
TARGET_DIR = File.join(ROOT_DIR, %w( spec whois record parser responses ))
|
7
|
-
|
8
|
-
SOURCE_DIR = File.join(ROOT_DIR, %w( spec fixtures responses ))
|
9
|
-
SOURCE_PARTS = SOURCE_DIR.split("/")
|
10
|
-
|
11
|
-
|
12
|
-
TPL_DESCRIBE = <<-RUBY.chomp!
|
13
|
-
# encoding: utf-8
|
14
|
-
|
15
|
-
# This file is autogenerated. Do not edit it manually.
|
16
|
-
# If you want change the content of this file, edit
|
17
|
-
#
|
18
|
-
# %{sfile}
|
19
|
-
#
|
20
|
-
# and regenerate the tests with the following rake task
|
21
|
-
#
|
22
|
-
# $ rake spec:generate
|
23
|
-
#
|
24
|
-
|
25
|
-
require 'spec_helper'
|
26
|
-
require 'whois/record/parser/%{khost}.rb'
|
27
|
-
|
28
|
-
describe %{described_class}, "%{descr}" do
|
29
|
-
|
30
|
-
subject do
|
31
|
-
file = fixture("responses", "%{fixture}")
|
32
|
-
part = Whois::Record::Part.new(body: File.read(file))
|
33
|
-
described_class.new(part)
|
34
|
-
end
|
35
|
-
|
36
|
-
%{contexts}
|
37
|
-
end
|
38
|
-
RUBY
|
39
|
-
|
40
|
-
TPL_CONTEXT = <<-RUBY.chomp!
|
41
|
-
describe "#%{descr}" do
|
42
|
-
it do
|
43
|
-
%{examples}
|
44
|
-
end
|
45
|
-
end
|
46
|
-
RUBY
|
47
|
-
|
48
|
-
TPL_MATCH = <<-RUBY.chomp!
|
49
|
-
expect(subject.%{attribute}).to %{match}
|
50
|
-
RUBY
|
51
|
-
|
52
|
-
TPL_MATCH_SIZE = <<-RUBY.chomp!
|
53
|
-
expect(subject.%{attribute}.size).to eq(%{size})
|
54
|
-
RUBY
|
55
|
-
|
56
|
-
TPL_MATCH_RAISE = <<-RUBY.chomp!
|
57
|
-
expect { subject.%{attribute} }.to %{match}
|
58
|
-
RUBY
|
59
|
-
|
60
|
-
def relativize(path)
|
61
|
-
path.gsub(ROOT_DIR, "")
|
62
|
-
end
|
63
|
-
|
64
|
-
|
65
|
-
task :generate => :generate_parsers
|
66
|
-
|
67
|
-
task :generate_parsers do
|
68
|
-
Dir["#{SOURCE_DIR}/**/*.expected"].each do |source_path|
|
69
|
-
|
70
|
-
# Generate the filename and described_class name from the test file.
|
71
|
-
parts = (source_path.split("/") - SOURCE_PARTS)
|
72
|
-
khost = parts.first
|
73
|
-
kfile = parts.last
|
74
|
-
described_class = Whois::Record::Parser.parser_klass(khost)
|
75
|
-
|
76
|
-
target_path = File.join(TARGET_DIR, *parts).gsub(".expected", "_spec.rb")
|
77
|
-
|
78
|
-
# Extract the tests from the test file
|
79
|
-
# and generates a Hash.
|
80
|
-
#
|
81
|
-
# {
|
82
|
-
# "domain" => [
|
83
|
-
# ["%s", "== \"google.biz\""]
|
84
|
-
# ],
|
85
|
-
# "created_on" => [
|
86
|
-
# ["%s", "be_a(Time)"],
|
87
|
-
# ["%s", "== Time.parse(\"2002-03-27 00:01:00 UTC\")"]
|
88
|
-
# ]
|
89
|
-
# }
|
90
|
-
#
|
91
|
-
tests = {}
|
92
|
-
match = nil
|
93
|
-
lines = File.open(source_path, "r:UTF-8")
|
94
|
-
lines.each do |line|
|
95
|
-
line.chomp!
|
96
|
-
case line
|
97
|
-
when ""
|
98
|
-
# skip empty line
|
99
|
-
when /^\s*$/, /^\s*\/\//
|
100
|
-
# skip comment line
|
101
|
-
when /^#([^\s]+)/
|
102
|
-
tests[match = $1] = []
|
103
|
-
when /^\s+(.+?) (.+)/
|
104
|
-
tests[match] << _parse_assertion($1, $2)
|
105
|
-
else
|
106
|
-
raise "Invalid Line `#{line}' in `#{source_path}'"
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
# Generate the RSpec content and
|
111
|
-
# write one file for every test.
|
112
|
-
contexts = tests.map do |attr, specs|
|
113
|
-
matches = specs.map do |method, condition|
|
114
|
-
attribute = method % attr
|
115
|
-
case condition
|
116
|
-
when /raise_error/
|
117
|
-
TPL_MATCH_RAISE % { attribute: attribute, match: condition }
|
118
|
-
when /^%SIZE\{(\d+)\}$/
|
119
|
-
TPL_MATCH_SIZE % { attribute: attribute, size: $1 }
|
120
|
-
else
|
121
|
-
TPL_MATCH % { attribute: attribute, match: condition }
|
122
|
-
end
|
123
|
-
end.join("\n")
|
124
|
-
TPL_CONTEXT % { descr: attr, examples: matches }
|
125
|
-
end.join("\n")
|
126
|
-
|
127
|
-
describe = <<-RUBY
|
128
|
-
#{TPL_DESCRIBE % {
|
129
|
-
:described_class => described_class,
|
130
|
-
:khost => khost,
|
131
|
-
:descr => kfile,
|
132
|
-
:sfile => relativize(source_path),
|
133
|
-
:fixture => parts.join("/").gsub(".expected", ".txt"),
|
134
|
-
:contexts => contexts
|
135
|
-
}}
|
136
|
-
RUBY
|
137
|
-
|
138
|
-
print "Generating #{relativize(target_path)}... "
|
139
|
-
File.dirname(target_path).tap { |d| File.exists?(d) || FileUtils.mkdir_p(d) }
|
140
|
-
File.open(target_path, "w+") { |f| f.write(describe) }
|
141
|
-
print "done!\n"
|
142
|
-
end
|
143
|
-
|
144
|
-
end
|
145
|
-
|
146
|
-
|
147
|
-
def _parse_assertion(method, condition)
|
148
|
-
m = method
|
149
|
-
c = condition.strip
|
150
|
-
|
151
|
-
case
|
152
|
-
|
153
|
-
# %s %CLASS{time} -> %s be_a(time)
|
154
|
-
when c =~ /^%CLASS\{(.+)\}$/
|
155
|
-
c = "be_a(#{_build_condition_typeof($1)})"
|
156
|
-
|
157
|
-
# %s %TIME{...} -> %s Time.parse(...)
|
158
|
-
when c =~ /^%TIME\{(.+)\}$/
|
159
|
-
c = "eq(Time.parse(\"#{$1}\"))"
|
160
|
-
|
161
|
-
# %s %ERROR{...} -> %s raise_error(...)
|
162
|
-
when c =~ /^%ERROR\{(.+)\}$/
|
163
|
-
c = "raise_error(Whois::#{$1})"
|
164
|
-
|
165
|
-
# %s =~ "foo"
|
166
|
-
when c =~ /^%MATCH\{(.+)\}$/
|
167
|
-
c = "match(/#{$1}/)"
|
168
|
-
|
169
|
-
# %s == "foo"
|
170
|
-
when c =~ /^== (.+)$/
|
171
|
-
c = "eq(#{$1})"
|
172
|
-
|
173
|
-
end
|
174
|
-
|
175
|
-
[m, c]
|
176
|
-
end
|
177
|
-
|
178
|
-
def _build_condition_typeof(described_class)
|
179
|
-
case described_class
|
180
|
-
when "array" then "Array"
|
181
|
-
when "time" then "Time"
|
182
|
-
when "contact" then "Whois::Record::Contact"
|
183
|
-
when "registrar" then "Whois::Record::Registrar"
|
184
|
-
when "nameserver" then "Whois::Record::Nameserver"
|
185
|
-
else
|
186
|
-
raise "Unknown class `#{described_class}'"
|
187
|
-
end
|
188
|
-
end
|
189
|
-
|
190
|
-
def _build_condition_typecast(described_class, value)
|
191
|
-
case described_class
|
192
|
-
when "time"
|
193
|
-
%Q{Time.parse("#{value}")}
|
194
|
-
else
|
195
|
-
raise "Unknown class `#{described_class}'"
|
196
|
-
end
|
197
|
-
end
|
198
|
-
|
199
|
-
end
|