ryodo 0.2.7 → 0.3.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.
- checksums.yaml +4 -4
- data/.travis.yml +2 -1
- data/checks/matching.rb +6 -8
- data/data/suffix.dat +455 -22
- data/lib/ryodo.rb +4 -6
- data/lib/ryodo/convenience.rb +0 -4
- data/lib/ryodo/convenience/utf8.rb +6 -11
- data/lib/ryodo/domain.rb +21 -26
- data/lib/ryodo/ext/string.rb +1 -3
- data/lib/ryodo/ext/uri.rb +2 -5
- data/lib/ryodo/methods.rb +4 -7
- data/lib/ryodo/parser.rb +3 -10
- data/lib/ryodo/rule.rb +6 -8
- data/lib/ryodo/rule_set.rb +3 -12
- data/lib/ryodo/suffix_list.rb +6 -13
- data/lib/ryodo/suffix_list_fetcher.rb +27 -27
- data/lib/ryodo/version.rb +1 -1
- data/ryodo.gemspec +6 -7
- data/spec/_files/mozilla_effective_tld_names.dat +1672 -678
- data/spec/ryodo/suffix_list_fetcher_spec.rb +19 -31
- data/spec/ryodo/suffix_list_spec.rb +14 -18
- data/spec/ryodo_spec.rb +2 -3
- data/spec/spec_helper.rb +2 -19
- metadata +33 -33
@@ -1,13 +1,9 @@
|
|
1
|
-
# coding: utf-8
|
2
1
|
require "ryodo/suffix_list_fetcher"
|
3
|
-
require
|
2
|
+
require "spec_helper"
|
4
3
|
|
5
4
|
describe Ryodo::SuffixListFetcher do
|
6
|
-
|
7
|
-
|
8
|
-
@custom_uri = "http://custom.suffix.list.example.com/foo-bar.dat"
|
9
|
-
@custom_storage = "#{RYODO_TMP_ROOT}/custom-storage-path.dat"
|
10
|
-
end
|
5
|
+
let(:custom_uri) { "http://custom.suffix.list.example.com/foo-bar.dat" }
|
6
|
+
let(:custom_storage) { "#{RYODO_TMP_ROOT}/custom-storage-path.dat" }
|
11
7
|
|
12
8
|
after do
|
13
9
|
Dir["#{RYODO_TMP_ROOT}/**/*"].each do |file|
|
@@ -18,33 +14,32 @@ describe Ryodo::SuffixListFetcher do
|
|
18
14
|
it "#new creates a new instance with predefined vars" do
|
19
15
|
fetcher = described_class.new
|
20
16
|
|
21
|
-
fetcher.instance_variable_get("@uri").
|
22
|
-
fetcher.instance_variable_get("@store").
|
17
|
+
expect(fetcher.instance_variable_get("@uri")).to eq URI(Ryodo::PUBLIC_SUFFIX_DATA_URI)
|
18
|
+
expect(fetcher.instance_variable_get("@store")).to be Ryodo::PUBLIC_SUFFIX_STORE
|
23
19
|
end
|
24
20
|
|
25
21
|
it "#new creates a new instance with custom vars" do
|
22
|
+
fetcher = described_class.new(custom_uri, custom_storage)
|
26
23
|
|
27
|
-
fetcher
|
28
|
-
|
29
|
-
fetcher.instance_variable_get("@uri").should == URI(@custom_uri)
|
30
|
-
fetcher.instance_variable_get("@store").should == @custom_storage
|
24
|
+
expect(fetcher.instance_variable_get("@uri")).to eq URI(custom_uri)
|
25
|
+
expect(fetcher.instance_variable_get("@store")).to be custom_storage
|
31
26
|
end
|
32
27
|
|
33
28
|
context "data retrieval and storage" do
|
34
|
-
|
35
|
-
let(:fetcher){ described_class.new }
|
29
|
+
let(:fetcher) { described_class.new }
|
36
30
|
|
37
31
|
it "#fetch_data retrieves remote data" do
|
32
|
+
first_line = /This Source Code Form is subject to the terms of the Mozilla Public/
|
38
33
|
fetcher.fetch_data
|
39
34
|
|
40
|
-
fetcher.instance_variable_get("@fetched_data").first.
|
35
|
+
expect(fetcher.instance_variable_get("@fetched_data").first).to match(first_line)
|
41
36
|
end
|
42
37
|
|
43
38
|
it "#save_data stores fetched data into file (as cleaned set)" do
|
44
39
|
fetcher.fetch_data
|
45
40
|
fetcher.instance_variable_set("@prepared_data", ["dummy data"])
|
46
41
|
|
47
|
-
File.
|
42
|
+
expect(File).to receive(:open).with(Ryodo::PUBLIC_SUFFIX_STORE, "w")
|
48
43
|
fetcher.save_data
|
49
44
|
end
|
50
45
|
|
@@ -52,29 +47,22 @@ describe Ryodo::SuffixListFetcher do
|
|
52
47
|
fetcher.fetch_data
|
53
48
|
prepared_data = fetcher.prepare_data
|
54
49
|
|
55
|
-
prepared_data.
|
56
|
-
prepared_data.
|
57
|
-
prepared_data.none?{|e| e =~ /^\n/}.should be_true # no empty lines
|
50
|
+
expect(prepared_data).to be_an(Array)
|
51
|
+
expect(prepared_data).to_not include(%r{\A//|\A\n})
|
58
52
|
end
|
59
|
-
|
60
53
|
end
|
61
54
|
|
62
55
|
context ".fetch_and_save! does all jobs" do
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
@invalid_uri = "#{Ryodo::PUBLIC_SUFFIX_DATA_URI}&invalid_file"
|
67
|
-
@storage = "#{RYODO_TMP_ROOT}/suffixes.dat"
|
68
|
-
end
|
56
|
+
let(:valid_uri) { Ryodo::PUBLIC_SUFFIX_DATA_URI }
|
57
|
+
let(:invalid_uri) { "#{Ryodo::PUBLIC_SUFFIX_DATA_URI}&invalid_file" }
|
58
|
+
let(:storage) { "#{RYODO_TMP_ROOT}/suffixes.dat" }
|
69
59
|
|
70
60
|
it "and returns true if successful" do
|
71
|
-
described_class.fetch_and_save!(
|
61
|
+
expect(described_class.fetch_and_save!(valid_uri, storage)).to be true
|
72
62
|
end
|
73
63
|
|
74
64
|
it "and returns false if something failed" do
|
75
|
-
described_class.fetch_and_save!(
|
65
|
+
expect(described_class.fetch_and_save!(invalid_uri, storage)).to be false
|
76
66
|
end
|
77
|
-
|
78
67
|
end
|
79
|
-
|
80
68
|
end
|
@@ -1,8 +1,6 @@
|
|
1
|
-
|
2
|
-
require File.expand_path("../../spec_helper.rb", __FILE__)
|
1
|
+
require "spec_helper"
|
3
2
|
|
4
3
|
describe Ryodo::SuffixList do
|
5
|
-
|
6
4
|
context "singleton" do
|
7
5
|
|
8
6
|
it "cannot be instanciated via #new" do
|
@@ -14,25 +12,23 @@ describe Ryodo::SuffixList do
|
|
14
12
|
described_class.send(:"SuffixList")
|
15
13
|
end
|
16
14
|
|
17
|
-
it "instance check" do
|
18
|
-
o1 = described_class
|
19
|
-
o2 = described_class
|
20
|
-
|
21
|
-
o1.should == o2
|
22
|
-
end
|
23
|
-
|
24
15
|
it "has .instance" do
|
25
|
-
described_class.methods.
|
16
|
+
expect(described_class.methods).to include(:instance)
|
26
17
|
end
|
27
18
|
|
19
|
+
it "instance check" do
|
20
|
+
o1 = described_class.instance
|
21
|
+
o2 = described_class.instance
|
22
|
+
|
23
|
+
expect(o1).to be o2
|
24
|
+
end
|
28
25
|
end
|
29
26
|
|
30
27
|
context "methods" do
|
31
|
-
|
32
|
-
let(:described_instance){ described_class.instance }
|
28
|
+
let(:described_instance) { described_class.instance }
|
33
29
|
|
34
30
|
it ".reload can retrieve a fresh suffix list" do
|
35
|
-
described_instance.
|
31
|
+
expect(described_instance).to receive(:load_file).and_return(true)
|
36
32
|
described_class.reload
|
37
33
|
end
|
38
34
|
|
@@ -41,10 +37,10 @@ describe Ryodo::SuffixList do
|
|
41
37
|
end
|
42
38
|
|
43
39
|
it ".list returns an array of arrays" do
|
44
|
-
described_class.list.
|
45
|
-
|
40
|
+
expect(described_class.list).to be_an(Array)
|
41
|
+
expect(
|
42
|
+
described_class.list.all? { |e| e.is_a?(Array) }
|
43
|
+
).to be true
|
46
44
|
end
|
47
|
-
|
48
45
|
end
|
49
|
-
|
50
46
|
end
|
data/spec/ryodo_spec.rb
CHANGED
data/spec/spec_helper.rb
CHANGED
@@ -1,28 +1,11 @@
|
|
1
|
-
# coding: utf-8
|
2
|
-
|
3
1
|
require "coveralls"
|
4
2
|
Coveralls.wear!
|
5
3
|
|
6
|
-
$:.push(File.expand_path("../../lib", __FILE__))
|
7
|
-
|
8
4
|
require "fileutils"
|
9
5
|
require "fakeweb"
|
10
6
|
require "uri"
|
11
7
|
require "ryodo"
|
12
8
|
|
13
|
-
RSpec::Matchers.define :include_hash do |expected|
|
14
|
-
|
15
|
-
match do |actual|
|
16
|
-
actual.is_a?(Hash) &&
|
17
|
-
expected.is_a?(Hash) &&
|
18
|
-
(actual.keys & expected.keys) == expected.keys &&
|
19
|
-
!(expected.keys.inject([]){|m,k|
|
20
|
-
m << expected.has_value?(actual[k])
|
21
|
-
}.uniq.include?(false))
|
22
|
-
end
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
9
|
RYODO_SPEC_ROOT = File.expand_path("..", __FILE__)
|
27
10
|
RYODO_TMP_ROOT = File.expand_path("../../tmp/spec", __FILE__)
|
28
11
|
|
@@ -31,11 +14,11 @@ FileUtils.mkdir_p RYODO_TMP_ROOT unless File.exists?(RYODO_TMP_ROOT)
|
|
31
14
|
FakeWeb.register_uri(:get,
|
32
15
|
Ryodo::PUBLIC_SUFFIX_DATA_URI,
|
33
16
|
:body => File.read("#{RYODO_SPEC_ROOT}/_files/mozilla_effective_tld_names.dat")
|
34
|
-
|
17
|
+
)
|
35
18
|
|
36
19
|
FakeWeb.register_uri(
|
37
20
|
:get,
|
38
21
|
"#{Ryodo::PUBLIC_SUFFIX_DATA_URI}&invalid_file",
|
39
22
|
:body => "Oops!",
|
40
23
|
:status => [404,"Not Found"]
|
41
|
-
|
24
|
+
)
|
metadata
CHANGED
@@ -1,113 +1,113 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ryodo
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christoph Grabo
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2014-
|
11
|
+
date: 2014-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
|
-
name:
|
14
|
+
name: rake
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "
|
17
|
+
- - ">="
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '
|
19
|
+
version: '0'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - "
|
24
|
+
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: '
|
26
|
+
version: '0'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
|
-
name:
|
28
|
+
name: bundler
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - "
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '
|
33
|
+
version: '1.5'
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - "
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '
|
40
|
+
version: '1.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: coveralls
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 0.7.1
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 0.7.1
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rspec
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 3.1.0
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 3.1.0
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: fakeweb
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
72
72
|
requirements:
|
73
|
-
- - "
|
73
|
+
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version:
|
75
|
+
version: 1.3.0
|
76
76
|
type: :development
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
|
-
- - "
|
80
|
+
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version:
|
82
|
+
version: 1.3.0
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: pry
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
86
86
|
requirements:
|
87
|
-
- - "
|
87
|
+
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
89
|
+
version: 0.10.1
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
|
-
- - "
|
94
|
+
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
96
|
+
version: 0.10.1
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: pry-doc
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
100
100
|
requirements:
|
101
|
-
- - "
|
101
|
+
- - "~>"
|
102
102
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
103
|
+
version: 0.6.0
|
104
104
|
type: :development
|
105
105
|
prerelease: false
|
106
106
|
version_requirements: !ruby/object:Gem::Requirement
|
107
107
|
requirements:
|
108
|
-
- - "
|
108
|
+
- - "~>"
|
109
109
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
110
|
+
version: 0.6.0
|
111
111
|
description: ryōdo【領土】 りょうど — A domain name parser gem using public suffix list (provided
|
112
112
|
by publicsuffix.org / mozilla)
|
113
113
|
email:
|
@@ -165,7 +165,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
165
165
|
version: '0'
|
166
166
|
requirements: []
|
167
167
|
rubyforge_project:
|
168
|
-
rubygems_version: 2.2.
|
168
|
+
rubygems_version: 2.2.2
|
169
169
|
signing_key:
|
170
170
|
specification_version: 4
|
171
171
|
summary: ryōdo【領土】 りょうど — A domain name parser using public suffix list
|