postrank-uri 1.0.16 → 1.0.17
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/Rakefile +1 -2
- data/lib/postrank-uri.rb +17 -16
- data/lib/postrank-uri/version.rb +1 -1
- data/postrank-uri.gemspec +4 -4
- data/spec/postrank-uri_spec.rb +4 -0
- metadata +14 -13
data/Rakefile
CHANGED
data/lib/postrank-uri.rb
CHANGED
@@ -1,22 +1,16 @@
|
|
1
1
|
# -*- encoding: utf-8 -*-
|
2
2
|
|
3
3
|
require 'addressable/uri'
|
4
|
-
require 'domainatrix'
|
5
4
|
require 'digest/md5'
|
6
5
|
require 'nokogiri'
|
6
|
+
require 'public_suffix'
|
7
7
|
require 'yaml'
|
8
8
|
|
9
9
|
module Addressable
|
10
10
|
class URI
|
11
11
|
def domain
|
12
|
-
|
13
|
-
|
14
|
-
rescue
|
15
|
-
return nil
|
16
|
-
end
|
17
|
-
|
18
|
-
dom = dp.public_suffix
|
19
|
-
dom = dp.domain.downcase + "." + dom unless dp.domain.empty?
|
12
|
+
host = self.host
|
13
|
+
(host && PublicSuffix.valid?(host)) ? PublicSuffix.parse(host).domain : nil
|
20
14
|
end
|
21
15
|
|
22
16
|
def normalized_query
|
@@ -103,11 +97,10 @@ module PostRank
|
|
103
97
|
return [] if !text
|
104
98
|
urls = []
|
105
99
|
text.to_s.scan(URIREGEX[:valid_url]) do |all, before, url, protocol, domain, path, query|
|
106
|
-
|
100
|
+
# Only extract the URL if the domain is valid
|
101
|
+
if PublicSuffix.valid?(domain)
|
107
102
|
url = clean(url)
|
108
|
-
Domainatrix.parse(url)
|
109
103
|
urls.push url.to_s
|
110
|
-
rescue NoMethodError
|
111
104
|
end
|
112
105
|
end
|
113
106
|
|
@@ -223,10 +216,18 @@ module PostRank
|
|
223
216
|
end
|
224
217
|
|
225
218
|
def valid?(uri)
|
226
|
-
|
227
|
-
|
228
|
-
|
229
|
-
|
219
|
+
# URI is only valid if it is not nil, parses cleanly as a URI,
|
220
|
+
# and the domain has a recognized, valid TLD component
|
221
|
+
return false if uri.nil?
|
222
|
+
|
223
|
+
is_valid = false
|
224
|
+
cleaned_uri = clean(uri, :raw => true)
|
225
|
+
|
226
|
+
if host = cleaned_uri.host
|
227
|
+
is_valid = PublicSuffix.valid?(host)
|
228
|
+
end
|
229
|
+
|
230
|
+
is_valid
|
230
231
|
end
|
231
232
|
end
|
232
233
|
end
|
data/lib/postrank-uri/version.rb
CHANGED
data/postrank-uri.gemspec
CHANGED
@@ -14,11 +14,11 @@ Gem::Specification.new do |s|
|
|
14
14
|
|
15
15
|
s.rubyforge_project = "postrank-uri"
|
16
16
|
|
17
|
-
s.add_dependency "addressable",
|
18
|
-
s.add_dependency "
|
19
|
-
s.add_dependency "nokogiri"
|
17
|
+
s.add_dependency "addressable", "~> 2.3.0"
|
18
|
+
s.add_dependency "public_suffix", "~> 1.1.3"
|
19
|
+
s.add_dependency "nokogiri", "~> 1.5.5"
|
20
|
+
|
20
21
|
s.add_development_dependency "rspec"
|
21
|
-
#s.add_development_dependency "idn" # test with idn
|
22
22
|
|
23
23
|
s.files = `git ls-files`.split("\n")
|
24
24
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
data/spec/postrank-uri_spec.rb
CHANGED
@@ -339,6 +339,10 @@ describe PostRank::URI do
|
|
339
339
|
end
|
340
340
|
|
341
341
|
context 'valid?' do
|
342
|
+
it 'marks incomplete URI string as invalid' do
|
343
|
+
PostRank::URI.valid?('/path/page.html').should be_false
|
344
|
+
end
|
345
|
+
|
342
346
|
it 'marks www.test.c as invalid' do
|
343
347
|
PostRank::URI.valid?('http://www.test.c').should be_false
|
344
348
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: postrank-uri
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.17
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,14 +9,14 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-
|
12
|
+
date: 2012-10-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: addressable
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- -
|
19
|
+
- - ~>
|
20
20
|
- !ruby/object:Gem::Version
|
21
21
|
version: 2.3.0
|
22
22
|
type: :runtime
|
@@ -24,41 +24,41 @@ dependencies:
|
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- -
|
27
|
+
- - ~>
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: 2.3.0
|
30
30
|
- !ruby/object:Gem::Dependency
|
31
|
-
name:
|
31
|
+
name: public_suffix
|
32
32
|
requirement: !ruby/object:Gem::Requirement
|
33
33
|
none: false
|
34
34
|
requirements:
|
35
|
-
- -
|
35
|
+
- - ~>
|
36
36
|
- !ruby/object:Gem::Version
|
37
|
-
version:
|
37
|
+
version: 1.1.3
|
38
38
|
type: :runtime
|
39
39
|
prerelease: false
|
40
40
|
version_requirements: !ruby/object:Gem::Requirement
|
41
41
|
none: false
|
42
42
|
requirements:
|
43
|
-
- -
|
43
|
+
- - ~>
|
44
44
|
- !ruby/object:Gem::Version
|
45
|
-
version:
|
45
|
+
version: 1.1.3
|
46
46
|
- !ruby/object:Gem::Dependency
|
47
47
|
name: nokogiri
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
49
49
|
none: false
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - ~>
|
52
52
|
- !ruby/object:Gem::Version
|
53
|
-
version:
|
53
|
+
version: 1.5.5
|
54
54
|
type: :runtime
|
55
55
|
prerelease: false
|
56
56
|
version_requirements: !ruby/object:Gem::Requirement
|
57
57
|
none: false
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - ~>
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 1.5.5
|
62
62
|
- !ruby/object:Gem::Dependency
|
63
63
|
name: rspec
|
64
64
|
requirement: !ruby/object:Gem::Requirement
|
@@ -122,3 +122,4 @@ test_files:
|
|
122
122
|
- spec/c18n_hosts.yml
|
123
123
|
- spec/helper.rb
|
124
124
|
- spec/postrank-uri_spec.rb
|
125
|
+
has_rdoc:
|